Simon Hunt

GUI Topo -- added NodeBadge field to NodeHighlight.

 - updated TopoJson to include device badge in JSON output.

Change-Id: I7fc0ec226c378a0395cd1eec765cb7bc867f9100
...@@ -17,16 +17,16 @@ ...@@ -17,16 +17,16 @@
17 package org.onosproject.ui.topo; 17 package org.onosproject.ui.topo;
18 18
19 /** 19 /**
20 - * Denotes the highlighting to apply to a device. 20 + * Denotes the highlighting to be applied to a device.
21 */ 21 */
22 public class DeviceHighlight extends NodeHighlight { 22 public class DeviceHighlight extends NodeHighlight {
23 23
24 + /**
25 + * Constructs a device highlight entity.
26 + *
27 + * @param deviceId the device identifier
28 + */
24 public DeviceHighlight(String deviceId) { 29 public DeviceHighlight(String deviceId) {
25 super(TopoElementType.DEVICE, deviceId); 30 super(TopoElementType.DEVICE, deviceId);
26 } 31 }
27 -
28 - // TODO: implement device highlighting:
29 - // - visual highlight
30 - // - badging
31 -
32 } 32 }
......
...@@ -20,7 +20,34 @@ package org.onosproject.ui.topo; ...@@ -20,7 +20,34 @@ package org.onosproject.ui.topo;
20 * Parent class of {@link DeviceHighlight} and {@link HostHighlight}. 20 * Parent class of {@link DeviceHighlight} and {@link HostHighlight}.
21 */ 21 */
22 public abstract class NodeHighlight extends AbstractHighlight { 22 public abstract class NodeHighlight extends AbstractHighlight {
23 +
24 + private NodeBadge badge;
25 +
26 + /**
27 + * Constructs a node highlight entity.
28 + *
29 + * @param type element type
30 + * @param elementId element identifier
31 + */
23 public NodeHighlight(TopoElementType type, String elementId) { 32 public NodeHighlight(TopoElementType type, String elementId) {
24 super(type, elementId); 33 super(type, elementId);
25 } 34 }
35 +
36 + /**
37 + * Sets the badge for this node.
38 + *
39 + * @param badge badge to apply
40 + */
41 + public void setBadge(NodeBadge badge) {
42 + this.badge = badge;
43 + }
44 +
45 + /**
46 + * Returns the badge for this node, if any.
47 + *
48 + * @return badge, or null
49 + */
50 + public NodeBadge badge() {
51 + return badge;
52 + }
26 } 53 }
......
...@@ -37,6 +37,8 @@ public final class TopoJson { ...@@ -37,6 +37,8 @@ public final class TopoJson {
37 static final String ID = "id"; 37 static final String ID = "id";
38 static final String LABEL = "label"; 38 static final String LABEL = "label";
39 static final String CSS = "css"; 39 static final String CSS = "css";
40 + static final String BADGE = "badge";
41 + static final String MSG = "msg";
40 42
41 static final String TITLE = "title"; 43 static final String TITLE = "title";
42 static final String TYPE = "type"; 44 static final String TYPE = "type";
...@@ -103,6 +105,13 @@ public final class TopoJson { ...@@ -103,6 +105,13 @@ public final class TopoJson {
103 if (dh.subdued()) { 105 if (dh.subdued()) {
104 n.put(SUBDUE, true); 106 n.put(SUBDUE, true);
105 } 107 }
108 + NodeBadge badge = dh.badge();
109 + if (badge != null) {
110 + ObjectNode b = objectNode()
111 + .put(TYPE, badge.type().code())
112 + .put(MSG, badge.message());
113 + n.set(BADGE, b);
114 + }
106 return n; 115 return n;
107 } 116 }
108 117
......
...@@ -23,12 +23,17 @@ import org.onosproject.ui.JsonUtils; ...@@ -23,12 +23,17 @@ import org.onosproject.ui.JsonUtils;
23 import org.onosproject.ui.topo.Highlights.Amount; 23 import org.onosproject.ui.topo.Highlights.Amount;
24 24
25 import static org.junit.Assert.assertEquals; 25 import static org.junit.Assert.assertEquals;
26 +import static org.junit.Assert.assertNotNull;
26 27
27 /** 28 /**
28 * Unit tests for {@link TopoJson}. 29 * Unit tests for {@link TopoJson}.
29 */ 30 */
30 public class TopoJsonTest { 31 public class TopoJsonTest {
31 32
33 + private static final String DEV1 = "device-1";
34 + private static final String DEV2 = "device-2";
35 + private static final String BADGE_MSG = "Hello there";
36 +
32 private ObjectNode payload; 37 private ObjectNode payload;
33 38
34 private void checkArrayLength(String key, int expLen) { 39 private void checkArrayLength(String key, int expLen) {
...@@ -68,4 +73,38 @@ public class TopoJsonTest { ...@@ -68,4 +73,38 @@ public class TopoJsonTest {
68 String subdue = JsonUtils.string(payload, TopoJson.SUBDUE); 73 String subdue = JsonUtils.string(payload, TopoJson.SUBDUE);
69 assertEquals("not max", "max", subdue); 74 assertEquals("not max", "max", subdue);
70 } 75 }
76 +
77 + @Test
78 + public void badgedDevice() {
79 + Highlights h = new Highlights();
80 + DeviceHighlight dh = new DeviceHighlight(DEV1);
81 + dh.setBadge(NodeBadge.info(BADGE_MSG));
82 + h.add(dh);
83 +
84 + dh = new DeviceHighlight(DEV2);
85 + dh.setBadge(NodeBadge.number(7));
86 + h.add(dh);
87 +
88 + payload = TopoJson.json(h);
89 + System.out.println(payload);
90 +
91 + // dig into the payload, and verify the badges are set on the devices
92 + ArrayNode a = (ArrayNode) payload.get(TopoJson.DEVICES);
93 +
94 + ObjectNode d = (ObjectNode) a.get(0);
95 + assertEquals("wrong device id", DEV1, d.get(TopoJson.ID).asText());
96 +
97 + ObjectNode b = (ObjectNode) d.get(TopoJson.BADGE);
98 + assertNotNull("missing badge", b);
99 + assertEquals("wrong type code", "i", b.get(TopoJson.TYPE).asText());
100 + assertEquals("wrong message", BADGE_MSG, b.get(TopoJson.MSG).asText());
101 +
102 + d = (ObjectNode) a.get(1);
103 + assertEquals("wrong device id", DEV2, d.get(TopoJson.ID).asText());
104 +
105 + b = (ObjectNode) d.get(TopoJson.BADGE);
106 + assertNotNull("missing badge", b);
107 + assertEquals("wrong type code", "n", b.get(TopoJson.TYPE).asText());
108 + assertEquals("wrong message", "7", b.get(TopoJson.MSG).asText());
109 + }
71 } 110 }
......