GUI -- refactored all the table views (server side) to use the new TableModel method of data generation.
Change-Id: Ib8a188ad432ff335db6cff1e49e08dbaf039436b
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 ae7f489..e361563 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
@@ -19,20 +19,17 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
-import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Link;
import org.onosproject.net.LinkKey;
import org.onosproject.net.link.LinkService;
import org.onosproject.ui.RequestHandler;
import org.onosproject.ui.UiMessageHandler;
import org.onosproject.ui.impl.TopologyViewMessageHandlerBase.BiLink;
-import org.onosproject.ui.table.AbstractTableRow;
+import org.onosproject.ui.table.TableModel;
import org.onosproject.ui.table.TableRequestHandler;
-import org.onosproject.ui.table.TableRow;
+import org.onosproject.ui.table.cell.ConnectPointFormatter;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
import java.util.Map;
import static org.onosproject.ui.impl.TopologyViewMessageHandlerBase.addLink;
@@ -53,6 +50,13 @@
private static final String DIRECTION = "direction";
private static final String DURABLE = "durable";
+ private static final String[] COL_IDS = {
+ ONE, TWO, TYPE, STATE, DIRECTION, DURABLE
+ };
+
+ private static final String ICON_ID_ONLINE = "active";
+ private static final String ICON_ID_OFFLINE = "inactive";
+
@Override
protected Collection<RequestHandler> getHandlers() {
return ImmutableSet.of(new LinkDataRequest());
@@ -65,48 +69,51 @@
}
@Override
- protected TableRow[] generateTableRows(ObjectNode payload) {
- LinkService service = get(LinkService.class);
- List<TableRow> list = new ArrayList<>();
-
- // First consolidate all uni-directional links into two-directional ones.
- Map<LinkKey, BiLink> biLinks = Maps.newHashMap();
- service.getLinks().forEach(link -> addLink(biLinks, link));
-
- // Now scan over all bi-links and produce table rows from them.
- biLinks.values().forEach(biLink -> list.add(new LinkTableRow(biLink)));
- return list.toArray(new TableRow[list.size()]);
+ protected String[] getColumnIds() {
+ return COL_IDS;
}
@Override
- protected String defaultColId() {
+ protected String defaultColumnId() {
return ONE;
}
- }
- /**
- * TableRow implementation for {@link org.onosproject.net.Link links}.
- */
- private static class LinkTableRow extends AbstractTableRow {
+ @Override
+ protected TableModel createTableModel() {
+ TableModel tm = super.createTableModel();
+ tm.setFormatter(ONE, ConnectPointFormatter.INSTANCE);
+ tm.setFormatter(TWO, ConnectPointFormatter.INSTANCE);
+ return tm;
+ }
- private static final String[] COL_IDS = {
- ONE, TWO, TYPE, STATE, DIRECTION, DURABLE
- };
+ @Override
+ protected void populateTable(TableModel tm, ObjectNode payload) {
+ LinkService ls = get(LinkService.class);
- private static final String ICON_ID_ONLINE = "active";
- private static final String ICON_ID_OFFLINE = "inactive";
+ // First consolidate all uni-directional links into two-directional ones.
+ Map<LinkKey, BiLink> biLinks = Maps.newHashMap();
+ ls.getLinks().forEach(link -> addLink(biLinks, link));
- public LinkTableRow(BiLink link) {
- ConnectPoint src = link.one.src();
- ConnectPoint dst = link.one.dst();
- linkState(link);
+ // Now scan over all bi-links and produce table rows from them.
+ biLinks.values().forEach(biLink -> populateRow(tm.addRow(), biLink));
+ }
- add(ONE, concat(src.elementId(), "/", src.port()));
- add(TWO, concat(dst.elementId(), "/", dst.port()));
- add(TYPE, linkType(link).toLowerCase());
- add(STATE, linkState(link));
- add(DIRECTION, link.two != null ? "A <--> B" : "A --> B");
- add(DURABLE, Boolean.toString(link.one.isDurable()));
+ private void populateRow(TableModel.Row row, BiLink biLink) {
+ row.cell(ONE, biLink.one.src())
+ .cell(TWO, biLink.one.dst())
+ .cell(TYPE, linkType(biLink))
+ .cell(STATE, linkState(biLink))
+ .cell(DIRECTION, linkDir(biLink))
+ .cell(DURABLE, biLink.one.isDurable());
+ }
+
+ private String linkType(BiLink link) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(link.one.type());
+ if (link.two != null && link.two.type() != link.one.type()) {
+ sb.append(" / ").append(link.two.type());
+ }
+ return sb.toString().toLowerCase();
}
private String linkState(BiLink link) {
@@ -115,16 +122,8 @@
ICON_ID_ONLINE : ICON_ID_OFFLINE;
}
- private String linkType(BiLink link) {
- return link.two == null || link.one.type() == link.two.type() ?
- link.one.type().toString() :
- link.one.type().toString() + " / " + link.two.type().toString();
- }
-
- @Override
- protected String[] columnIds() {
- return COL_IDS;
+ private String linkDir(BiLink link) {
+ return link.two != null ? "A <--> B" : "A --> B";
}
}
-
}