[WIP][ONOS-3722] Augment TableModel with Annotations Mechanism

Change-Id: I815ce0b0fde254dd730153c34905d9454f019d9a
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
index 77a5897..2e1e7a0 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ApplicationViewMessageHandler.java
@@ -66,6 +66,8 @@
 
     // handler for application table requests
     private final class AppDataRequest extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No applications found";
+
         private AppDataRequest() {
             super(APP_DATA_REQ, APP_DATA_RESP, APPS);
         }
@@ -76,6 +78,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected void populateTable(TableModel tm, ObjectNode payload) {
             ApplicationService as = get(ApplicationService.class);
             for (Application app : as.getApplications()) {
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java
index da0eae0..8c6c1eb 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ClusterViewMessageHandler.java
@@ -60,6 +60,8 @@
 
     // handler for cluster table requests
     private final class ClusterDataRequest extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No cluster nodes found";
+
         private ClusterDataRequest() {
             super(CLUSTER_DATA_REQ, CLUSTER_DATA_RESP, CLUSTERS);
         }
@@ -70,6 +72,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(UPDATED, new TimeFormatter());
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 a740a73..bbcbc91 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
@@ -127,6 +127,8 @@
 
     // handler for device table requests
     private final class DataRequestHandler extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No devices found";
+
         private DataRequestHandler() {
             super(DEV_DATA_REQ, DEV_DATA_RESP, DEVICES);
         }
@@ -137,6 +139,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected void populateTable(TableModel tm, ObjectNode payload) {
             DeviceService ds = get(DeviceService.class);
             MastershipService ms = get(MastershipService.class);
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 e7a29dd..5860a6d 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
@@ -75,6 +75,8 @@
     // handler for flow table requests
     private final class FlowDataRequest extends TableRequestHandler {
 
+        private static final String NO_ROWS_MESSAGE = "No flows found";
+
         private FlowDataRequest() {
             super(FLOW_DATA_REQ, FLOW_DATA_RESP, FLOWS);
         }
@@ -85,6 +87,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(ID, HexLongFormatter.INSTANCE);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
index 5780e9f..ab61a6a 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
@@ -65,6 +65,8 @@
     // handler for group table requests
     private final class GroupDataRequest extends TableRequestHandler {
 
+        private static final String NO_ROWS_MESSAGE = "No groups found";
+
         private GroupDataRequest() {
             super(GROUP_DATA_REQ, GROUP_DATA_RESP, GROUPS);
         }
@@ -75,6 +77,12 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            // TODO: if devices with OF 1.0, should return not support message
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(ID, HexFormatter.INSTANCE);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
index 12a2b66..47137ee 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
@@ -62,6 +62,8 @@
 
     // handler for host table requests
     private final class HostDataRequest extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No hosts found";
+
         private HostDataRequest() {
             super(HOST_DATA_REQ, HOST_DATA_RESP, HOSTS);
         }
@@ -72,6 +74,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(LOCATION, HostLocationFormatter.INSTANCE);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java
index bacb76d..7f9b5a9 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/IntentViewMessageHandler.java
@@ -71,6 +71,8 @@
 
     // handler for intent table requests
     private final class IntentDataRequest extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No intents found";
+
         private IntentDataRequest() {
             super(INTENT_DATA_REQ, INTENT_DATA_RESP, INTENTS);
         }
@@ -86,6 +88,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(APP_ID, AppIdFormatter.INSTANCE);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
index 7de6d62..9b8750e 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
@@ -65,6 +65,8 @@
 
     // handler for link table requests
     private final class LinkDataRequest extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No links found";
+
         private LinkDataRequest() {
             super(LINK_DATA_REQ, LINK_DATA_RESP, LINKS);
         }
@@ -75,6 +77,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected String defaultColumnId() {
             return ONE;
         }
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java
index f48fc81..ceb643a 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/MeterViewMessageHandler.java
@@ -61,6 +61,8 @@
     // handler for meter table requests
     private final class MeterDataRequest extends TableRequestHandler {
 
+        private static final String NO_ROWS_MESSAGE = "No meters found";
+
         private MeterDataRequest() {
             super(METER_DATA_REQ, METER_DATA_RESP, METERS);
         }
@@ -71,6 +73,12 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            // TODO: if the device with OF 1.0, return not support message
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(ID, HexLongFormatter.INSTANCE);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
index 9c2f211..c196642 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/PortViewMessageHandler.java
@@ -62,6 +62,8 @@
     // handler for port table requests
     private final class PortDataRequest extends TableRequestHandler {
 
+        private static final String NO_ROWS_MESSAGE = "No ports found";
+
         private PortDataRequest() {
             super(PORT_DATA_REQ, PORT_DATA_RESP, PORTS);
         }
@@ -72,6 +74,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(PKT_RX, NumberFormatter.INTEGER);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java
index 00b221b..1353538 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/ProcessorViewMessageHandler.java
@@ -64,6 +64,8 @@
 
     // handler for packet processor table requests
     private final class ProcessorDataRequest extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No packet processors found";
+
         private ProcessorDataRequest() {
             super(PROCESSOR_DATA_REQ, PROCESSOR_DATA_RESP, PROCESSORS);
         }
@@ -74,6 +76,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             tm.setFormatter(AVG_MS, NumberFormatter.TO_5DP);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java
index ed413fa..76171c0 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/SettingsViewMessageHandler.java
@@ -53,6 +53,8 @@
 
     // handler for host table requests
     private final class SettingsRequest extends TableRequestHandler {
+        private static final String NO_ROWS_MESSAGE = "No settings found";
+
         private SettingsRequest() {
             super(DATA_REQUEST, DATA_RESPONSE, SETTINGS);
         }
@@ -63,6 +65,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected String defaultColumnId() {
             return COMPONENT;
         }
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
index 1684818..2abc321 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
@@ -55,6 +55,8 @@
 
     private final class TunnelDataRequestHandler extends TableRequestHandler {
 
+        private static final String NO_ROWS_MESSAGE = "No tunnels found";
+
         public TunnelDataRequestHandler() {
             super(TUNNEL_DATA_REQ, TUNNEL_DATA_RESP, TUNNELS);
         }
@@ -65,6 +67,11 @@
         }
 
         @Override
+        protected String noRowsMessage() {
+            return NO_ROWS_MESSAGE;
+        }
+
+        @Override
         protected TableModel createTableModel() {
             TableModel tm = super.createTableModel();
             //TODO add more formater class so that we can get a more readable table