GUI -- Refactoring of server-side message handlers (Part One).

Change-Id: I895cef0545f7ba4b78a2adfa2bad9d889ca0104a
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java
index b14ba98..81965da 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/FlowViewMessageHandler.java
@@ -16,7 +16,6 @@
 
 package org.onosproject.ui.impl;
 
-import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableSet;
 import org.apache.commons.lang.WordUtils;
@@ -27,6 +26,11 @@
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.flow.criteria.Criterion;
 import org.onosproject.net.flow.instructions.Instruction;
+import org.onosproject.ui.UiMessageHandler;
+import org.onosproject.ui.table.AbstractTableRow;
+import org.onosproject.ui.table.RowComparator;
+import org.onosproject.ui.table.TableRow;
+import org.onosproject.ui.table.TableUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -37,7 +41,7 @@
 /**
  * Message handler for flow view related messages.
  */
-public class FlowViewMessageHandler extends AbstractTabularViewMessageHandler {
+public class FlowViewMessageHandler extends UiMessageHandler {
 
     private static final String NO_DEV = "none";
 
@@ -50,10 +54,16 @@
 
     @Override
     public void process(ObjectNode message) {
+        String type = eventType(message);
+        if (type.equals("flowDataRequest")) {
+            sendFlowList(message);
+        }
+    }
+
+    private void sendFlowList(ObjectNode message) {
         ObjectNode payload = payload(message);
+        RowComparator rc = TableUtils.createRowComparator(payload);
         String uri = string(payload, "devId", NO_DEV);
-        String sortCol = string(payload, "sortCol", "id");
-        String sortDir = string(payload, "sortDir", "asc");
 
         ObjectNode rootNode;
         if (uri.equals(NO_DEV)) {
@@ -61,16 +71,11 @@
             rootNode.set("flows", mapper.createArrayNode());
         } else {
             DeviceId deviceId = DeviceId.deviceId(uri);
-
             FlowRuleService service = get(FlowRuleService.class);
             TableRow[] rows = generateTableRows(service, deviceId);
-            RowComparator rc =
-                    new RowComparator(sortCol, RowComparator.direction(sortDir));
             Arrays.sort(rows, rc);
-            ArrayNode flows = generateArrayNode(rows);
-
             rootNode = mapper.createObjectNode();
-            rootNode.set("flows", flows);
+            rootNode.set("flows", TableUtils.generateArrayNode(rows));
         }
 
         connection().sendMessage("flowDataResponse", 0, rootNode);
@@ -191,7 +196,6 @@
             return sb;
         }
 
-
         @Override
         protected String[] columnIds() {
             return COL_IDS;