aboutsummaryrefslogtreecommitdiffstats
path: root/vid-automation/src/main/java/org/onap/sdc/ci/tests/devObjects/ToscaDataDefinition.java
diff options
context:
space:
mode:
Diffstat (limited to 'vid-automation/src/main/java/org/onap/sdc/ci/tests/devObjects/ToscaDataDefinition.java')
-rw-r--r--vid-automation/src/main/java/org/onap/sdc/ci/tests/devObjects/ToscaDataDefinition.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/vid-automation/src/main/java/org/onap/sdc/ci/tests/devObjects/ToscaDataDefinition.java b/vid-automation/src/main/java/org/onap/sdc/ci/tests/devObjects/ToscaDataDefinition.java
new file mode 100644
index 000000000..c4fa53b5d
--- /dev/null
+++ b/vid-automation/src/main/java/org/onap/sdc/ci/tests/devObjects/ToscaDataDefinition.java
@@ -0,0 +1,79 @@
+package org.onap.sdc.ci.tests.devObjects;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import fj.data.Either;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+
+public abstract class ToscaDataDefinition {
+
+ protected Map<String, Object> toscaPresentation;
+
+
+ public ToscaDataDefinition(){
+ toscaPresentation = new HashMap<String, Object>();
+ }
+ @JsonCreator
+ public ToscaDataDefinition(Map<String, Object> art){
+ toscaPresentation = art;
+ }
+ @JsonValue
+ public Object getToscaPresentationValue(JsonPresentationFields name) {
+ if (toscaPresentation != null && toscaPresentation.containsKey(name.getPresentation())) {
+ return toscaPresentation.get(name.getPresentation());
+ }
+ return null;
+ }
+
+ public void setToscaPresentationValue(JsonPresentationFields name, Object value) {
+ if (toscaPresentation == null && value !=null) {
+ toscaPresentation = new HashMap<String, Object>();
+ }
+ toscaPresentation.put(name.getPresentation(), value);
+
+ }
+ public void setOwnerIdIfEmpty(String ownerId){
+ if ( getOwnerId() == null ){
+ setOwnerId(ownerId);
+ }
+ }
+ public void setOwnerId(String ownerId){
+ setToscaPresentationValue(JsonPresentationFields.OWNER_ID, ownerId);
+ }
+
+ public String getOwnerId(){
+ return (String) getToscaPresentationValue(JsonPresentationFields.OWNER_ID);
+ }
+
+
+ //default merge function for merging data maps - implement where needed and use mergeDataMaps method where applicable instead of map1.putAll(map2)
+ public <T extends ToscaDataDefinition> T mergeFunction(T other, boolean allowDefaultValueOverride){
+ other.setOwnerId(getOwnerId());
+ return other;
+ }
+
+ public static <T extends ToscaDataDefinition> Either<Map<String, T>, String> mergeDataMaps(Map<String, T> map1, Map<String, T> map2){
+ return mergeDataMaps(map1, map2, false);
+ }
+
+ //return Either.right(item key) if an illegal merge was attempted (overriding data type is forbidden)
+ public static <T extends ToscaDataDefinition> Either<Map<String, T>, String> mergeDataMaps(Map<String, T> map1, Map<String, T> map2, boolean allowDefaultValueOverride){
+ for(Entry<String, T> entry : map2.entrySet()){
+ map1.merge(entry.getKey(), entry.getValue(), (item1, item2) -> item1.mergeFunction(item2, allowDefaultValueOverride));
+ //validate merge success
+ if(!map1.containsKey(entry.getKey()))
+ return Either.right(entry.getKey());
+ }
+ return Either.left(map1);
+ }
+
+ public static <T extends ToscaDataDefinition> Map<String, T> listToMapByName(List<T> dataList) {
+ return null == dataList? new HashMap<>() : dataList.stream()
+ .collect(Collectors.toMap(p -> (String)p.getToscaPresentationValue(JsonPresentationFields.NAME), p -> p));
+ }
+}