[WIP][ONOS-3722] Augment TableModel with Annotations Mechanism
Change-Id: I815ce0b0fde254dd730153c34905d9454f019d9a
diff --git a/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java b/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java
index b8d4857..43700db 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/TableRequestHandler.java
@@ -25,6 +25,8 @@
*/
public abstract class TableRequestHandler extends RequestHandler {
+ private static final String ANNOTS = "annots";
+ private static final String NO_ROWS_MSG_KEY = "no_rows_msg";
private final String respType;
private final String nodeName;
@@ -53,8 +55,11 @@
String sortDir = JsonUtils.string(payload, "sortDir", "asc");
tm.sort(sortCol, TableModel.sortDir(sortDir));
+ addTableConfigAnnotations(tm);
+
ObjectNode rootNode = MAPPER.createObjectNode();
- rootNode.set(nodeName, TableUtils.generateArrayNode(tm));
+ rootNode.set(nodeName, TableUtils.generateRowArrayNode(tm));
+ rootNode.set(ANNOTS, TableUtils.generateAnnotObjectNode(tm));
sendMessage(respType, 0, rootNode);
}
@@ -72,6 +77,15 @@
}
/**
+ * Adds all annotations to table model.
+ *
+ * @param tm a table model
+ */
+ protected void addTableConfigAnnotations(TableModel tm) {
+ tm.addAnnotation(NO_ROWS_MSG_KEY, noRowsMessage());
+ }
+
+ /**
* Returns the default column ID to be used when one is not supplied in
* the payload as the column on which to sort.
* <p>
@@ -92,6 +106,15 @@
protected abstract String[] getColumnIds();
/**
+ * Subclasses should return the message to display in the table when there
+ * are no rows to display. For example, a host table might return
+ * "No hosts found".
+ *
+ * @return the message
+ */
+ protected abstract String noRowsMessage();
+
+ /**
* Subclasses should populate the table model by adding
* {@link TableModel.Row rows}.
* <pre>
@@ -108,4 +131,4 @@
* @param payload request payload
*/
protected abstract void populateTable(TableModel tm, ObjectNode payload);
-}
+}
\ No newline at end of file