sFlow token ring counter

Change-Id: I9bbfaaa6a87ba19dd6b10335d9e172eb6e0d4b61
diff --git a/apps/ipflow-monitor/sflow/api/src/main/java/org/onosproject/sflow/TokenRingCounter.java b/apps/ipflow-monitor/sflow/api/src/main/java/org/onosproject/sflow/TokenRingCounter.java
new file mode 100644
index 0000000..1a275b1
--- /dev/null
+++ b/apps/ipflow-monitor/sflow/api/src/main/java/org/onosproject/sflow/TokenRingCounter.java
@@ -0,0 +1,506 @@
+/*
+ * Copyright 2024-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.sflow;
+
+import com.google.common.base.MoreObjects;
+
+/**
+ * Represents Token Ring counters for network interfaces.
+ */
+public final class TokenRingCounter {
+
+    private InterfaceCounter generic;
+    private int dot5StatsLineErrors;
+    private int dot5StatsBurstErrors;
+    private int dot5StatsAcErrors;
+    private int dot5StatsAbortTransErrors;
+    private int dot5StatsInternalErrors;
+    private int dot5StatsLostFrameErrors;
+    private int dot5StatsReceiveCongestions;
+    private int dot5StatsFrameCopiedErrors;
+    private int dot5StatsTokenErrors;
+    private int dot5StatsSoftErrors;
+    private int dot5StatsHardErrors;
+    private int dot5StatsSignalLoss;
+    private int dot5StatsTransmitBeacons;
+    private int dot5StatsRecoverys;
+    private int dot5StatsLobeWires;
+    private int dot5StatsRemoves;
+    private int dot5StatsSingles;
+    private int dot5StatsFreqErrors;
+
+    private TokenRingCounter(Builder builder) {
+        this.generic = builder.generic;
+        this.dot5StatsLineErrors = builder.dot5StatsLineErrors;
+        this.dot5StatsBurstErrors = builder.dot5StatsBurstErrors;
+        this.dot5StatsAcErrors = builder.dot5StatsAcErrors;
+        this.dot5StatsAbortTransErrors = builder.dot5StatsAbortTransErrors;
+        this.dot5StatsInternalErrors = builder.dot5StatsInternalErrors;
+        this.dot5StatsLostFrameErrors = builder.dot5StatsLostFrameErrors;
+        this.dot5StatsReceiveCongestions = builder.dot5StatsReceiveCongestions;
+        this.dot5StatsFrameCopiedErrors = builder.dot5StatsFrameCopiedErrors;
+        this.dot5StatsTokenErrors = builder.dot5StatsTokenErrors;
+        this.dot5StatsSoftErrors = builder.dot5StatsSoftErrors;
+        this.dot5StatsHardErrors = builder.dot5StatsHardErrors;
+        this.dot5StatsSignalLoss = builder.dot5StatsSignalLoss;
+        this.dot5StatsTransmitBeacons = builder.dot5StatsTransmitBeacons;
+        this.dot5StatsRecoverys = builder.dot5StatsRecoverys;
+        this.dot5StatsLobeWires = builder.dot5StatsLobeWires;
+        this.dot5StatsRemoves = builder.dot5StatsRemoves;
+        this.dot5StatsSingles = builder.dot5StatsSingles;
+        this.dot5StatsFreqErrors = builder.dot5StatsFreqErrors;
+    }
+
+    /**
+     * Gets the generic interface counter.
+     *
+     * @return generic interface counter.
+     */
+    public InterfaceCounter getGeneric() {
+        return generic;
+    }
+
+    /**
+     * Gets the count of line errors.
+     *
+     * @return count of line errors.
+     */
+    public int getDot5StatsLineErrors() {
+        return dot5StatsLineErrors;
+    }
+
+    /**
+     * Gets the count of burst errors.
+     *
+     * @return count of burst errors.
+     */
+    public int getDot5StatsBurstErrors() {
+        return dot5StatsBurstErrors;
+    }
+
+    /**
+     * Gets the count of AC errors.
+     *
+     * @return count of AC errors.
+     */
+    public int getDot5StatsAcErrors() {
+        return dot5StatsAcErrors;
+    }
+
+    /**
+     * Gets the count of abort transmit errors.
+     *
+     * @return count of abort transmit errors.
+     */
+    public int getDot5StatsAbortTransErrors() {
+        return dot5StatsAbortTransErrors;
+    }
+
+    /**
+     * Gets the count of internal errors.
+     *
+     * @return count of internal errors.
+     */
+    public int getDot5StatsInternalErrors() {
+        return dot5StatsInternalErrors;
+    }
+
+    /**
+     * Gets the count of lost frame errors.
+     *
+     * @return count of lost frame errors.
+     */
+    public int getDot5StatsLostFrameErrors() {
+        return dot5StatsLostFrameErrors;
+    }
+
+    /**
+     * Gets the count of receive congestion errors.
+     *
+     * @return count of receive congestion errors.
+     */
+    public int getDot5StatsReceiveCongestions() {
+        return dot5StatsReceiveCongestions;
+    }
+
+    /**
+     * Gets the count of frame copied errors.
+     *
+     * @return count of frame copied errors.
+     */
+    public int getDot5StatsFrameCopiedErrors() {
+        return dot5StatsFrameCopiedErrors;
+    }
+
+    /**
+     * Gets the count of token errors.
+     *
+     * @return count of token errors.
+     */
+    public int getDot5StatsTokenErrors() {
+        return dot5StatsTokenErrors;
+    }
+
+    /**
+     * Gets the count of soft errors.
+     *
+     * @return count of soft errors.
+     */
+    public int getDot5StatsSoftErrors() {
+        return dot5StatsSoftErrors;
+    }
+
+    /**
+     * Gets the count of hard errors.
+     *
+     * @return count of hard errors.
+     */
+    public int getDot5StatsHardErrors() {
+        return dot5StatsHardErrors;
+    }
+
+    /**
+     * Gets the count of signal loss errors.
+     *
+     * @return count of signal loss errors.
+     */
+    public int getDot5StatsSignalLoss() {
+        return dot5StatsSignalLoss;
+    }
+
+    /**
+     * Gets the count of transmit beacons errors.
+     *
+     * @return count of transmit beacons errors.
+     */
+    public int getDot5StatsTransmitBeacons() {
+        return dot5StatsTransmitBeacons;
+    }
+
+    /**
+     * Gets the count of recovery.
+     *
+     * @return count of recovery.
+     */
+    public int getDot5StatsRecoverys() {
+        return dot5StatsRecoverys;
+    }
+
+    /**
+     * Gets the count of lobe wires errors.
+     *
+     * @return count of lobe wires errors.
+     */
+    public int getDot5StatsLobeWires() {
+        return dot5StatsLobeWires;
+    }
+
+    /**
+     * Gets the count of removes.
+     *
+     * @return count of removes.
+     */
+    public int getDot5StatsRemoves() {
+        return dot5StatsRemoves;
+    }
+
+    /**
+     * Gets the count of singles.
+     *
+     * @return count of singles.
+     */
+    public int getDot5StatsSingles() {
+        return dot5StatsSingles;
+    }
+
+    /**
+     * Gets the count of frequency errors.
+     *
+     * @return count of frequency errors.
+     */
+    public int getDot5StatsFreqErrors() {
+        return dot5StatsFreqErrors;
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .add("generic", generic)
+                .add("dot5StatsLineErrors", dot5StatsLineErrors)
+                .add("dot5StatsBurstErrors", dot5StatsBurstErrors)
+                .add("dot5StatsAcErrors", dot5StatsAcErrors)
+                .add("dot5StatsAbortTransErrors", dot5StatsAbortTransErrors)
+                .add("dot5StatsInternalErrors", dot5StatsInternalErrors)
+                .add("dot5StatsLostFrameErrors", dot5StatsLostFrameErrors)
+                .add("dot5StatsReceiveCongestions", dot5StatsReceiveCongestions)
+                .add("dot5StatsFrameCopiedErrors", dot5StatsFrameCopiedErrors)
+                .add("dot5StatsTokenErrors", dot5StatsTokenErrors)
+                .add("dot5StatsSoftErrors", dot5StatsSoftErrors)
+                .add("dot5StatsHardErrors", dot5StatsHardErrors)
+                .add("dot5StatsSignalLoss", dot5StatsSignalLoss)
+                .add("dot5StatsTransmitBeacons", dot5StatsTransmitBeacons)
+                .add("dot5StatsRecoverys", dot5StatsRecoverys)
+                .add("dot5StatsLobeWires", dot5StatsLobeWires)
+                .add("dot5StatsRemoves", dot5StatsRemoves)
+                .add("dot5StatsSingles", dot5StatsSingles)
+                .add("dot5StatsFreqErrors", dot5StatsFreqErrors)
+                .toString();
+    }
+
+    /**
+     * Builder pattern to create an instance of InterfaceCounter.
+     */
+    private static class Builder {
+
+        private InterfaceCounter generic;
+        private int dot5StatsLineErrors;
+        private int dot5StatsBurstErrors;
+        private int dot5StatsAcErrors;
+        private int dot5StatsAbortTransErrors;
+        private int dot5StatsInternalErrors;
+        private int dot5StatsLostFrameErrors;
+        private int dot5StatsReceiveCongestions;
+        private int dot5StatsFrameCopiedErrors;
+        private int dot5StatsTokenErrors;
+        private int dot5StatsSoftErrors;
+        private int dot5StatsHardErrors;
+        private int dot5StatsSignalLoss;
+        private int dot5StatsTransmitBeacons;
+        private int dot5StatsRecoverys;
+        private int dot5StatsLobeWires;
+        private int dot5StatsRemoves;
+        private int dot5StatsSingles;
+        private int dot5StatsFreqErrors;
+
+        /**
+         * Sets the generic interface counter.
+         *
+         * @param generic the generic interface counter.
+         * @return this builder instance.
+         */
+        public Builder generic(InterfaceCounter generic) {
+            this.generic = generic;
+            return this;
+        }
+
+        /**
+         * Sets the count of line errors.
+         *
+         * @param dot5StatsLineErrors the count of line errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsLineErrors(int dot5StatsLineErrors) {
+            this.dot5StatsLineErrors = dot5StatsLineErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of burst errors.
+         *
+         * @param dot5StatsBurstErrors the count of burst errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsBurstErrors(int dot5StatsBurstErrors) {
+            this.dot5StatsBurstErrors = dot5StatsBurstErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of AC errors.
+         *
+         * @param dot5StatsAcErrors the count of AC errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsAcErrors(int dot5StatsAcErrors) {
+            this.dot5StatsAcErrors = dot5StatsAcErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of abort transmit errors.
+         *
+         * @param dot5StatsAbortTransErrors the count of abort transmit errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsAbortTransErrors(int dot5StatsAbortTransErrors) {
+            this.dot5StatsAbortTransErrors = dot5StatsAbortTransErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of internal errors.
+         *
+         * @param dot5StatsInternalErrors the count of internal errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsInternalErrors(int dot5StatsInternalErrors) {
+            this.dot5StatsInternalErrors = dot5StatsInternalErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of lost frame errors.
+         *
+         * @param dot5StatsLostFrameErrors the count of lost frame errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsLostFrameErrors(int dot5StatsLostFrameErrors) {
+            this.dot5StatsLostFrameErrors = dot5StatsLostFrameErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of receive congestion errors.
+         *
+         * @param dot5StatsReceiveCongestions the count of receive congestion errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsReceiveCongestions(int dot5StatsReceiveCongestions) {
+            this.dot5StatsReceiveCongestions = dot5StatsReceiveCongestions;
+            return this;
+        }
+
+        /**
+         * Sets the count of frame copied errors.
+         *
+         * @param dot5StatsFrameCopiedErrors the count of frame copied errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsFrameCopiedErrors(int dot5StatsFrameCopiedErrors) {
+            this.dot5StatsFrameCopiedErrors = dot5StatsFrameCopiedErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of token errors.
+         *
+         * @param dot5StatsTokenErrors the count of token errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsTokenErrors(int dot5StatsTokenErrors) {
+            this.dot5StatsTokenErrors = dot5StatsTokenErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of soft errors.
+         *
+         * @param dot5StatsSoftErrors the count of soft errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsSoftErrors(int dot5StatsSoftErrors) {
+            this.dot5StatsSoftErrors = dot5StatsSoftErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of hard errors.
+         *
+         * @param dot5StatsHardErrors the count of hard errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsHardErrors(int dot5StatsHardErrors) {
+            this.dot5StatsHardErrors = dot5StatsHardErrors;
+            return this;
+        }
+
+        /**
+         * Sets the count of signal loss errors.
+         *
+         * @param dot5StatsSignalLoss the count of signal loss errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsSignalLoss(int dot5StatsSignalLoss) {
+            this.dot5StatsSignalLoss = dot5StatsSignalLoss;
+            return this;
+        }
+
+        /**
+         * Sets the count of transmit beacons errors.
+         *
+         * @param dot5StatsTransmitBeacons the count of transmit beacons errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsTransmitBeacons(int dot5StatsTransmitBeacons) {
+            this.dot5StatsTransmitBeacons = dot5StatsTransmitBeacons;
+            return this;
+        }
+
+        /**
+         * Sets the count of recovery.
+         *
+         * @param dot5StatsRecoverys the count of recovery.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsRecoverys(int dot5StatsRecoverys) {
+            this.dot5StatsRecoverys = dot5StatsRecoverys;
+            return this;
+        }
+
+        /**
+         * Sets the count of lobe wires errors.
+         *
+         * @param dot5StatsLobeWires the count of lobe wires errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsLobeWires(int dot5StatsLobeWires) {
+            this.dot5StatsLobeWires = dot5StatsLobeWires;
+            return this;
+        }
+
+        /**
+         * Sets the count of removes.
+         *
+         * @param dot5StatsRemoves the count of removes.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsRemoves(int dot5StatsRemoves) {
+            this.dot5StatsRemoves = dot5StatsRemoves;
+            return this;
+        }
+
+        /**
+         * Sets the count of singles.
+         *
+         * @param dot5StatsSingles the count of singles.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsSingles(int dot5StatsSingles) {
+            this.dot5StatsSingles = dot5StatsSingles;
+            return this;
+        }
+
+        /**
+         * Sets the count of frequency errors.
+         *
+         * @param dot5StatsFreqErrors the count of frequency errors.
+         * @return this builder instance.
+         */
+        public Builder dot5StatsFreqErrors(int dot5StatsFreqErrors) {
+            this.dot5StatsFreqErrors = dot5StatsFreqErrors;
+            return this;
+        }
+
+        /**
+         * Builds an instance of TokenRingCounter based on the configured parameters.
+         *
+         * @return an instance of TokenRingCounter.
+         */
+        public TokenRingCounter build() {
+            return new TokenRingCounter(this);
+        }
+    }
+}