Improvements to flows list command.

 * Added -s option which gives more succinct output.
 * Display each flow on one line for easy grepping.
 * Added ability to filter output by table ID.
 * Flows are now sorted by descending priority within a table.
 * Removed the use of toStringHelper in instructions and criterion to produce
   less verbose output.

Change-Id: I1c874c776491386488ea5a4d23627b20f1e5728b
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index 8ed882c8..cb6e200 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -54,6 +54,8 @@
  */
 public final class Instructions {
 
+    private static final String SEPARATOR = ":";
+
     // Ban construction
     private Instructions() {}
 
@@ -547,7 +549,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString()).toString();
+            return type().toString();
         }
 
         @Override
@@ -581,7 +583,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString()).toString();
+            return type().toString();
         }
 
         @Override
@@ -619,10 +621,10 @@
         public Type type() {
             return Type.OUTPUT;
         }
+
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("port", port).toString();
+            return type().toString() + SEPARATOR + port.toString();
         }
 
         @Override
@@ -665,9 +667,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .addValue("group ID=0x" + Integer.toHexString(groupId.id()))
-                    .toString();
+            return type().toString() + SEPARATOR + Integer.toHexString(groupId.id());
         }
 
         @Override
@@ -770,8 +770,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("meter ID", meterId.id()).toString();
+            return type().toString() + SEPARATOR + meterId.id();
         }
 
         @Override
@@ -814,8 +813,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("tableId", this.tableId).toString();
+            return type().toString() + SEPARATOR + this.tableId;
         }
 
         @Override
@@ -864,10 +862,9 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("metadata", Long.toHexString(this.metadata))
-                    .add("metadata mask", Long.toHexString(this.metadataMask))
-                    .toString();
+            return type().toString() + SEPARATOR +
+                    Long.toHexString(this.metadata) + "/" +
+                    Long.toHexString(this.metadataMask);
         }
 
         @Override
@@ -917,10 +914,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(type().toString())
-                    .add("extension", extensionTreatment)
-                    .add("deviceId", deviceId)
-                    .toString();
+            return type().toString() + SEPARATOR + deviceId + "/" + extensionTreatment;
         }
 
         @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java
index 4af3d16..e0088c1 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L0ModificationInstruction.java
@@ -15,15 +15,14 @@
  */
 package org.onosproject.net.flow.instructions;
 
-import com.google.common.base.MoreObjects;
 import org.onosproject.net.OchSignal;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 import java.util.Objects;
 
 public abstract class L0ModificationInstruction implements Instruction {
 
+    public static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -69,8 +68,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("lambda", lambda).toString();
+            return subtype().toString() + SEPARATOR + lambda;
         }
 
         @Override
@@ -131,9 +129,7 @@
 
         @Override
         public String toString() {
-            return MoreObjects.toStringHelper(this)
-                    .add("lambda", lambda)
-                    .toString();
+            return subtype().toString() + SEPARATOR + lambda;
         }
     }
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java
index b72dd7b..9a76520 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java
@@ -17,12 +17,12 @@
 
 import org.onosproject.net.OduSignalId;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 import java.util.Objects;
 
 public abstract class L1ModificationInstruction implements Instruction {
 
+    public static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -79,9 +79,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(this)
-                    .add("oduSignalId", oduSignalId)
-                    .toString();
+            return subtype().toString() + SEPARATOR + oduSignalId;
         }
     }
 
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
index 0dbbb451..29b6f99 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L2ModificationInstruction.java
@@ -22,13 +22,13 @@
 
 import java.util.Objects;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
 /**
  * Abstraction of a single traffic treatment step.
  */
 public abstract class L2ModificationInstruction implements Instruction {
 
+    private static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -94,9 +94,6 @@
         MPLS_BOS
     }
 
-    // TODO: Create factory class 'Instructions' that will have various factory
-    // to create specific instructions.
-
     public abstract L2SubType subtype();
 
     @Override
@@ -129,8 +126,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("mac", mac).toString();
+            return subtype().toString() + SEPARATOR + mac;
         }
 
         @Override
@@ -176,9 +172,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("ethernetType", ethernetType())
-                    .toString();
+            return subtype().toString() + SEPARATOR + ethernetType;
         }
 
         @Override
@@ -224,8 +218,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("id", vlanId).toString();
+            return subtype().toString() + SEPARATOR + vlanId;
         }
 
         @Override
@@ -269,8 +262,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("pcp", Long.toHexString(vlanPcp)).toString();
+            return subtype().toString() + SEPARATOR + Long.toHexString(vlanPcp);
         }
 
         @Override
@@ -308,8 +300,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .toString();
+            return subtype().toString();
         }
 
         @Override
@@ -365,8 +356,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("mpls", mplsLabel).toString();
+            return subtype().toString() + SEPARATOR + mplsLabel;
         }
 
         @Override
@@ -410,8 +400,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString()).add("bos", mplsBos)
-                    .toString();
+            return subtype().toString() + SEPARATOR + mplsBos;
         }
 
         @Override
@@ -448,8 +437,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .toString();
+            return subtype().toString();
         }
 
         @Override
@@ -492,9 +480,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("id", Long.toHexString(tunnelId))
-                    .toString();
+            return subtype().toString() + SEPARATOR + Long.toHexString(tunnelId);
         }
 
         @Override
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
index 0efe9a7..fec4338 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
@@ -15,18 +15,18 @@
  */
 package org.onosproject.net.flow.instructions;
 
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-import java.util.Objects;
-
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 
+import java.util.Objects;
+
 /**
  * Abstraction of a single traffic treatment step.
  */
 public abstract class L3ModificationInstruction implements Instruction {
 
+    private static final String SEPARATOR = ":";
+
     /**
      * Represents the type of traffic treatment.
      */
@@ -85,8 +85,6 @@
          * Arp operation modification.
          */
         ARP_OP
-
-        //TODO: remaining types
     }
 
     /**
@@ -125,8 +123,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("ip", ip).toString();
+            return subtype().toString() + SEPARATOR + ip;
         }
 
         @Override
@@ -173,8 +170,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("ip", ip).toString();
+            return subtype().toString() + SEPARATOR + ip;
         }
 
         @Override
@@ -221,8 +217,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("mac", mac).toString();
+            return subtype().toString() + SEPARATOR + mac;
         }
 
         @Override
@@ -269,8 +264,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .add("op", op).toString();
+            return subtype().toString() + SEPARATOR + op;
         }
 
         @Override
@@ -326,8 +320,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                .add("flowLabel", Long.toHexString(flowLabel)).toString();
+            return subtype().toString() + SEPARATOR + Long.toHexString(flowLabel);
         }
 
         @Override
@@ -367,8 +360,7 @@
 
         @Override
         public String toString() {
-            return toStringHelper(subtype().toString())
-                    .toString();
+            return subtype().toString();
         }
 
         @Override