summaryrefslogtreecommitdiffstats
path: root/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/MapComponentInstanceExternalRefs.java
diff options
context:
space:
mode:
Diffstat (limited to 'common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/MapComponentInstanceExternalRefs.java')
-rw-r--r--common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/MapComponentInstanceExternalRefs.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/MapComponentInstanceExternalRefs.java b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/MapComponentInstanceExternalRefs.java
new file mode 100644
index 0000000000..0900f44cea
--- /dev/null
+++ b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/MapComponentInstanceExternalRefs.java
@@ -0,0 +1,83 @@
+package org.openecomp.sdc.be.datatypes.elements;
+
+import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
+import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * Maps an object type (e.g. "monitoring", "workflows" etc) to a list of external references.
+ *
+ * "monitoring" -> { "ref1", "ref2" },
+ * "workflows" -> { "ref1", "ref2" }
+ *
+ */
+public class MapComponentInstanceExternalRefs extends ToscaDataDefinition implements Serializable {
+
+ private static final long serialVersionUID = 7788408255736272985L;
+
+ //Constructor
+ public MapComponentInstanceExternalRefs() {
+ this.setComponentInstanceExternalRefs(new HashMap<String, List<String>>());
+ }
+
+ public Map<String, List<String>> getComponentInstanceExternalRefs() {
+ return (Map<String, List<String>>) getToscaPresentationValue(JsonPresentationFields.EXTERNAL_REF);
+ }
+
+ public List<String> getExternalRefsByObjectType(String objectType) {
+ List<String> externalRefsByObjectType = ((Map<String, List<String>>) getToscaPresentationValue(JsonPresentationFields.EXTERNAL_REF)).get(objectType);
+ return externalRefsByObjectType;
+ }
+
+ public void setComponentInstanceExternalRefs(Map<String, List<String>> componentInstanceExternalRefs) {
+ setToscaPresentationValue(JsonPresentationFields.EXTERNAL_REF, componentInstanceExternalRefs);
+ }
+
+ /**
+ * Adds a reference to the given object type. Will do nothing if already exist.
+ *
+ * @param objectType object type to associate reference to
+ * @param ref to add
+ */
+ public boolean addExternalRef(String objectType, String ref){
+
+ List<String> refList = this.getExternalRefsByObjectType(objectType);
+
+ if (refList == null) {
+ //Create list if does not exist and add it to map
+ refList = new ArrayList<String>();
+ this.getComponentInstanceExternalRefs().put(objectType, refList);
+ }
+
+ //Add reference to list if does not exist
+ if (!refList.contains(ref)){
+ return refList.add(ref);
+ }
+
+ return false;
+
+ }
+
+ public boolean deleteExternalRef(String objectType, String ref){
+ List<String> refList = this.getExternalRefsByObjectType(objectType);
+
+ if (refList != null) {
+ return refList.remove(ref);
+ } else {
+ return false;
+ }
+ }
+
+ public boolean replaceExternalRef(String objectType, String oldRef, String newRef) {
+ List<String> refList = this.getExternalRefsByObjectType(objectType);
+
+ if (refList != null && !refList.contains(newRef)) {
+ return Collections.replaceAll(refList, oldRef, newRef);
+ } else {
+ return false;
+ }
+ }
+
+}