GUI -- General GUI backend cleanup and bug fixes. Added custom formatters for existing tables, unit test for Enum Formatter, and more glyphs.
Change-Id: I956f1faf6a59e535094d45b811980f822b084be0
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 61417cd..c3e01ff 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
@@ -22,14 +22,14 @@
import org.onosproject.net.DeviceId;
import org.onosproject.net.flow.FlowEntry;
import org.onosproject.net.flow.FlowRuleService;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.flow.criteria.Criterion;
import org.onosproject.net.flow.instructions.Instruction;
import org.onosproject.ui.RequestHandler;
import org.onosproject.ui.UiMessageHandler;
+import org.onosproject.ui.table.CellFormatter;
import org.onosproject.ui.table.TableModel;
import org.onosproject.ui.table.TableRequestHandler;
+import org.onosproject.ui.table.cell.EnumFormatter;
import org.onosproject.ui.table.cell.IntComparator;
import org.onosproject.ui.table.cell.LongComparator;
@@ -37,9 +37,6 @@
import java.util.List;
import java.util.Set;
-import static org.apache.commons.lang.WordUtils.capitalizeFully;
-
-
/**
* Message handler for flow view related messages.
*/
@@ -95,6 +92,10 @@
tm.setComparator(TIMEOUT, IntComparator.INSTANCE);
tm.setComparator(PACKETS, LongComparator.INSTANCE);
tm.setComparator(BYTES, LongComparator.INSTANCE);
+
+ tm.setFormatter(SELECTOR, new SelectorFormatter());
+ tm.setFormatter(TREATMENT, new TreatmentFormatter());
+ tm.setFormatter(STATE, EnumFormatter.INSTANCE);
return tm;
}
@@ -116,73 +117,50 @@
.cell(GROUP_ID, flow.groupId().id())
.cell(TABLE_ID, flow.tableId())
.cell(PRIORITY, flow.priority())
- .cell(SELECTOR, getSelectorString(flow))
- .cell(TREATMENT, getTreatmentString(flow))
+ .cell(SELECTOR, flow)
+ .cell(TREATMENT, flow)
.cell(TIMEOUT, flow.timeout())
.cell(PERMANENT, flow.isPermanent())
- .cell(STATE, capitalizeFully(flow.state().toString()))
+ .cell(STATE, flow.state())
.cell(PACKETS, flow.packets())
.cell(BYTES, flow.bytes());
}
- private String getSelectorString(FlowEntry f) {
- String result;
- TrafficSelector selector = f.selector();
- Set<Criterion> criteria = selector.criteria();
+ private final class SelectorFormatter implements CellFormatter {
+ @Override
+ public String format(Object value) {
+ FlowEntry flow = (FlowEntry) value;
+ Set<Criterion> criteria = flow.selector().criteria();
- if (criteria.isEmpty()) {
- result = "(No traffic selectors for this flow)";
- } else {
- StringBuilder sb = new StringBuilder("Criteria = ");
+ if (criteria.isEmpty()) {
+ return "(No traffic selector criteria for this flow)";
+ }
+ StringBuilder sb = new StringBuilder("Criteria: ");
for (Criterion c : criteria) {
- sb.append(capitalizeFully(c.type().toString())).append(COMMA);
- }
- result = removeTrailingComma(sb).toString();
- }
- return result;
- }
-
- private String getTreatmentString(FlowEntry f) {
- TrafficTreatment treatment = f.treatment();
- List<Instruction> deferred = treatment.deferred();
- List<Instruction> immediate = treatment.immediate();
- boolean haveDef = !deferred.isEmpty();
- boolean haveImm = !immediate.isEmpty();
- boolean both = haveDef && haveImm;
- boolean neither = !haveDef && !haveImm;
- String result;
-
- if (neither) {
- result = "(No traffic treatment instructions for this flow)";
- } else {
- StringBuilder sb = new StringBuilder();
- addDeferred(sb, deferred);
- if (both) {
- sb.append(COMMA);
- }
- addImmediate(sb, immediate);
- result = sb.toString();
- }
- return result;
- }
-
- private void addDeferred(StringBuilder sb, List<Instruction> deferred) {
- if (!deferred.isEmpty()) {
- sb.append("Deferred instructions = ");
- for (Instruction i : deferred) {
- sb.append(capitalizeFully(i.type().toString())).append(COMMA);
+ sb.append(c).append(COMMA);
}
removeTrailingComma(sb);
+
+ return sb.toString();
}
}
- private void addImmediate(StringBuilder sb, List<Instruction> immediate) {
- if (!immediate.isEmpty()) {
- sb.append("Immediate instructions = ");
- for (Instruction i : immediate) {
- sb.append(capitalizeFully(i.type().toString())).append(COMMA);
+ private final class TreatmentFormatter implements CellFormatter {
+ @Override
+ public String format(Object value) {
+ FlowEntry flow = (FlowEntry) value;
+ List<Instruction> instructions = flow.treatment().allInstructions();
+
+ if (instructions.isEmpty()) {
+ return "(No traffic treatment instructions for this flow)";
+ }
+ StringBuilder sb = new StringBuilder("Treatment Instructions: ");
+ for (Instruction i : instructions) {
+ sb.append(i).append(COMMA);
}
removeTrailingComma(sb);
+
+ return sb.toString();
}
}