Starting implementation of UI topo modeling. WIP.
If reviewing this, please refer to http://tinyurl.com/onos-ui-topo-model
Change-Id: Iab75f213ca0a7d36619f9c498387b402ac9477af
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiCluster.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiCluster.java
index f7879ef..a5de405 100644
--- a/core/api/src/main/java/org/onosproject/ui/model/topo/UiCluster.java
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiCluster.java
@@ -16,8 +16,12 @@
package org.onosproject.ui.model.topo;
+import org.onosproject.cluster.NodeId;
+
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Encapsulates the notion of the ONOS cluster.
@@ -25,6 +29,12 @@
class UiCluster extends UiElement {
private final List<UiClusterMember> members = new ArrayList<>();
+ private final Map<NodeId, UiClusterMember> lookup = new HashMap<>();
+
+ @Override
+ public String toString() {
+ return String.valueOf(members.size()) + "-member cluster";
+ }
/**
* Removes all cluster members.
@@ -32,4 +42,34 @@
void clear() {
members.clear();
}
+
+ /**
+ * Returns the cluster member with the given identifier, or null if no
+ * such member exists.
+ *
+ * @param id identifier of member to find
+ * @return corresponding member
+ */
+ public UiClusterMember find(NodeId id) {
+ return lookup.get(id);
+ }
+
+ /**
+ * Adds the given member to the cluster.
+ *
+ * @param member member to add
+ */
+ public void add(UiClusterMember member) {
+ members.add(member);
+ lookup.put(member.id(), member);
+ }
+
+ /**
+ * Returns the number of members in the cluster.
+ *
+ * @return number of members
+ */
+ public int size() {
+ return members.size();
+ }
}