Enhancement of tetopology implementation
To support regualar network and TE topology
Change-Id: Ib8319212d775c78f49a86a7b7685759099189967
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java
new file mode 100644
index 0000000..72b2e3c
--- /dev/null
+++ b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.tetopology.management.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections.MapUtils;
+import org.onosproject.tetopology.management.api.KeyId;
+import org.onosproject.tetopology.management.api.node.NetworkNode;
+import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
+import org.onosproject.tetopology.management.api.node.TeNodeKey;
+import org.onosproject.tetopology.management.api.node.TerminationPoint;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+
+/**
+ * Network Node representation in store.
+ */
+public class InternalNetworkNode {
+ private List<NetworkNodeKey> supportingNodeIds;
+ private List<KeyId> tpIds;
+ private TeNodeKey teNodeKey;
+ private boolean parentUpdate;
+ private boolean childUpdate;
+
+ /**
+ * Creates an instance of InternalNetworkNode.
+ *
+ * @param node the network node
+ * @param parentUpdate the flag if the data is updated by parent
+ */
+ public InternalNetworkNode(NetworkNode node, boolean parentUpdate) {
+ supportingNodeIds = node
+ .supportingNodeIds() == null ? null
+ : Lists.newArrayList(node
+ .supportingNodeIds());
+ if (MapUtils.isNotEmpty(node.terminationPoints())) {
+ tpIds = Lists.newArrayList();
+ for (Map.Entry<KeyId, TerminationPoint> entry : node
+ .terminationPoints().entrySet()) {
+ tpIds.add(entry.getKey());
+ }
+ }
+ this.parentUpdate = parentUpdate;
+ }
+
+ /**
+ * Returns the list of supporting node Ids.
+ *
+ * @return the supporting nodeIds
+ */
+ public List<NetworkNodeKey> supportingNodeIds() {
+ return supportingNodeIds == null ? null
+ : ImmutableList
+ .copyOf(supportingNodeIds);
+ }
+
+ /**
+ * Sets the list of supporting node Ids.
+ *
+ * @param supportingNodeIds the supportingNodeIds to set
+ */
+ public void setSupportingNodeIds(List<NetworkNodeKey> supportingNodeIds) {
+ this.supportingNodeIds = supportingNodeIds == null ? null
+ : Lists.newArrayList(supportingNodeIds);
+ }
+
+ /**
+ * Returns the list of termination point Ids.
+ *
+ * @return the termination point Ids
+ */
+ public List<KeyId> tpIds() {
+ return tpIds;
+ }
+
+ /**
+ * Sets the list of termination point Ids.
+ *
+ * @param tpIds the tpIds to set
+ */
+ public void setTpIds(List<KeyId> tpIds) {
+ this.tpIds = tpIds;
+ }
+
+ /**
+ * Returns the TE Node key.
+ *
+ * @return the teNodeKey
+ */
+ public TeNodeKey teNodeKey() {
+ return teNodeKey;
+ }
+
+ /**
+ * Sets the TE Node key.
+ *
+ * @param teNodeKey the teNodeKey to set
+ */
+ public void setTeNodeKey(TeNodeKey teNodeKey) {
+ this.teNodeKey = teNodeKey;
+ }
+
+ /**
+ * Returns the flag if the data was updated by parent change.
+ *
+ * @return value of parentUpdate
+ */
+ public boolean parentUpdate() {
+ return parentUpdate;
+ }
+
+ /**
+ * Returns the flag if the data was updated by child change.
+ *
+ * @return value of childUpdate
+ */
+ public boolean childUpdate() {
+ return childUpdate;
+ }
+
+ /**
+ * Sets the flag if the data was updated by child change.
+ *
+ * @param childUpdate the childUpdate value to set
+ */
+ public void setChildUpdate(boolean childUpdate) {
+ this.childUpdate = childUpdate;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(supportingNodeIds, tpIds, teNodeKey);
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object instanceof InternalNetworkNode) {
+ InternalNetworkNode that = (InternalNetworkNode) object;
+ return Objects.equal(supportingNodeIds, that.supportingNodeIds)
+ && Objects.equal(tpIds, that.tpIds)
+ && Objects.equal(teNodeKey, that.teNodeKey);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("supportingNodeIds", supportingNodeIds)
+ .add("tpIds", tpIds)
+ .add("teNodeKey", teNodeKey)
+ .add("parentUpdate", parentUpdate)
+ .add("childUpdate", childUpdate)
+ .toString();
+ }
+}