ONOS-1443: Group bucket statistics support and group CLI formatting

Change-Id: Iaa6d8ae1f9222eb9c29d14bf1615a7449e50c4d3
diff --git a/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java b/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java
index e4910d5..6efd3e7 100644
--- a/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java
+++ b/core/api/src/main/java/org/onosproject/net/group/DefaultGroupBucket.java
@@ -38,12 +38,14 @@
  * in the group. A failover group bucket is associated with a
  * specific port or group that controls its liveness.
  */
-public final class DefaultGroupBucket implements GroupBucket {
+public final class DefaultGroupBucket implements GroupBucket, StoredGroupBucketEntry {
     private final GroupDescription.Type type;
     private final TrafficTreatment treatment;
     private final short weight;
     private final PortNumber watchPort;
     private final GroupId watchGroup;
+    private long packets;
+    private long bytes;
 
     /**
      * Group bucket constructor with the parameters.
@@ -223,6 +225,28 @@
         return toStringHelper(this)
                 .add("type", type)
                 .add("treatment", treatment)
+                .add("packets", packets)
+                .add("bytes", bytes)
                 .toString();
     }
+
+    @Override
+    public long packets() {
+        return packets;
+    }
+
+    @Override
+    public long bytes() {
+        return bytes;
+    }
+
+    @Override
+    public void setPackets(long packets) {
+        this.packets = packets;
+    }
+
+    @Override
+    public void setBytes(long bytes) {
+        this.bytes = bytes;
+    }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java b/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java
index 2bf8882..401c769 100644
--- a/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java
+++ b/core/api/src/main/java/org/onosproject/net/group/GroupBucket.java
@@ -64,4 +64,17 @@
      */
     public GroupId watchGroup();
 
+    /**
+     * Returns the number of packets processed by this group bucket.
+     *
+     * @return number of packets
+     */
+    long packets();
+
+    /**
+     * Returns the number of bytes processed by this group bucket.
+     *
+     * @return number of bytes
+     */
+    long bytes();
 }
diff --git a/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java b/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java
index 26cd5f6..c0b5e5c 100644
--- a/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java
+++ b/core/api/src/main/java/org/onosproject/net/group/GroupBuckets.java
@@ -70,7 +70,7 @@
     @Override
     public String toString() {
         return toStringHelper(this)
-                .add("buckets", buckets)
+                .add("buckets", buckets.toString())
                 .toString();
     }
 }
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/net/group/GroupBucketEntry.java b/core/api/src/main/java/org/onosproject/net/group/StoredGroupBucketEntry.java
similarity index 72%
rename from core/api/src/main/java/org/onosproject/net/group/GroupBucketEntry.java
rename to core/api/src/main/java/org/onosproject/net/group/StoredGroupBucketEntry.java
index f7a6617..131875b 100644
--- a/core/api/src/main/java/org/onosproject/net/group/GroupBucketEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/group/StoredGroupBucketEntry.java
@@ -20,18 +20,18 @@
  * group object. A group bucket entry provides additional info of
  * group bucket like statistics...etc
  */
-public interface GroupBucketEntry extends GroupBucket {
+public interface StoredGroupBucketEntry extends GroupBucket {
     /**
-     * Returns Number of packets processed by bucket.
+     * Sets number of packets processed by this group bucket entry.
      *
-     * @return long
+     * @param packets a long value
      */
-    public long packets();
+    void setPackets(long packets);
 
     /**
-     * Returns Number of bytes processed by bucket.
+     * Sets number of bytes processed by this group bucket entry.
      *
-     * @return long
+     * @param bytes a long value
      */
-    public long bytes();
+    void setBytes(long bytes);
 }