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

Change-Id: I895cef0545f7ba4b78a2adfa2bad9d889ca0104a
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
index 9820f6d..5015cb5 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/DeviceViewMessageHandler.java
@@ -27,6 +27,11 @@
 import org.onosproject.net.Port;
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.link.LinkService;
+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 +42,7 @@
 /**
  * Message handler for device view related messages.
  */
-public class DeviceViewMessageHandler extends AbstractTabularViewMessageHandler {
+public class DeviceViewMessageHandler extends UiMessageHandler {
 
     private static final String ID = "id";
     private static final String TYPE = "type";
@@ -68,36 +73,31 @@
     }
 
     @Override
-    public void process(ObjectNode event) {
-        String type = string(event, "event", "unknown");
+    public void process(ObjectNode message) {
+        String type = eventType(message);
         if (type.equals("deviceDataRequest")) {
-            dataRequest(event);
+            dataRequest(message);
         } else if (type.equals("deviceDetailsRequest")) {
-            detailsRequest(event);
+            detailsRequest(message);
         }
     }
 
-    private void dataRequest(ObjectNode event) {
-        ObjectNode payload = payload(event);
-        String sortCol = string(payload, "sortCol", "id");
-        String sortDir = string(payload, "sortDir", "asc");
+    private void dataRequest(ObjectNode message) {
+        ObjectNode payload = payload(message);
+        RowComparator rc = TableUtils.createRowComparator(payload);
 
         DeviceService service = get(DeviceService.class);
         MastershipService mastershipService = get(MastershipService.class);
-
         TableRow[] rows = generateTableRows(service, mastershipService);
-        RowComparator rc =
-                new RowComparator(sortCol, RowComparator.direction(sortDir));
         Arrays.sort(rows, rc);
-        ArrayNode devices = generateArrayNode(rows);
         ObjectNode rootNode = mapper.createObjectNode();
-        rootNode.set("devices", devices);
+        rootNode.set("devices", TableUtils.generateArrayNode(rows));
 
         connection().sendMessage("deviceDataResponse", 0, rootNode);
     }
 
-    private void detailsRequest(ObjectNode event) {
-        ObjectNode payload = payload(event);
+    private void detailsRequest(ObjectNode message) {
+        ObjectNode payload = payload(message);
         String id = string(payload, "id", "of:0000000000000000");
 
         DeviceId deviceId = DeviceId.deviceId(id);
@@ -139,9 +139,7 @@
                                          MastershipService mastershipService) {
         List<TableRow> list = new ArrayList<>();
         for (Device dev : service.getDevices()) {
-            list.add(new DeviceTableRow(service,
-                                        mastershipService,
-                                        dev));
+            list.add(new DeviceTableRow(service, mastershipService, dev));
         }
         return list.toArray(new TableRow[list.size()]);
     }
@@ -159,13 +157,13 @@
 
         Set<Link> links = ls.getEgressLinks(new ConnectPoint(id, p.number()));
         if (!links.isEmpty()) {
-            String egressLinks = "";
+            StringBuilder egressLinks = new StringBuilder();
             for (Link l : links) {
                 ConnectPoint dest = l.dst();
-                egressLinks += dest.elementId().toString()
-                        + "/" + dest.port().toString() + " ";
+                egressLinks.append(dest.elementId()).append("/")
+                        .append(dest.port()).append(" ");
             }
-            port.put(LINK_DEST, egressLinks);
+            port.put(LINK_DEST, egressLinks.toString());
         }
 
         return port;