diff options
Diffstat (limited to 'common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ListDataDefinition.java')
-rw-r--r-- | common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ListDataDefinition.java | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ListDataDefinition.java b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ListDataDefinition.java index 6d11c51596..e9969d73de 100644 --- a/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ListDataDefinition.java +++ b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/ListDataDefinition.java @@ -21,18 +21,16 @@ package org.openecomp.sdc.be.datatypes.elements; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import java.util.function.Predicate; +import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; import org.codehaus.jackson.annotate.JsonCreator; import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields; import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition; - public class ListDataDefinition<T extends ToscaDataDefinition> extends ToscaDataDefinition { protected List<T> listToscaDataDefinition; @@ -76,22 +74,49 @@ public class ListDataDefinition<T extends ToscaDataDefinition> extends ToscaData listToscaDataDefinition.forEach(e -> e.setOwnerIdIfEmpty(ownerId)); } } - + @Override - public <S extends ToscaDataDefinition> S mergeFunction(S other, boolean allowDefaultValueOverride){ + public <S extends ToscaDataDefinition> S mergeFunction(S other, boolean allowDefaultValueOverride) { Map<String, T> mapByName = listToMapByName(listToscaDataDefinition); - List<T> otherList = ((ListDataDefinition)other).getListToscaDataDefinition(); - for(T item : otherList){ - mapByName.merge((String)item.getToscaPresentationValue(JsonPresentationFields.NAME), item, (thisItem, otherItem) -> thisItem.mergeFunction(otherItem, allowDefaultValueOverride)); + List<T> otherList = ((ListDataDefinition) other).getListToscaDataDefinition(); + for (T item : otherList) { + mapByName.merge((String) item.getToscaPresentationValue(JsonPresentationFields.NAME), item, (thisItem, otherItem) -> thisItem.mergeFunction(otherItem, allowDefaultValueOverride)); } - ((ListDataDefinition)other).listToscaDataDefinition = mapByName.values().stream().collect(Collectors.toList()); - return other; + ((ListDataDefinition) other).listToscaDataDefinition = mapByName.values().stream().collect(Collectors.toList()); + return other; + } + + @Override + public boolean findUidMatch(String uid) { + return listToscaDataDefinition.stream().anyMatch(p -> p.findUidMatch(uid)); } @Override - public boolean findUidMatch(String uid){ - return listToscaDataDefinition.stream() - .anyMatch(p -> p.findUidMatch(uid)); + public <T extends ToscaDataDefinition> T removeByOwnerId(Set<String> ownerIdList) { + List<T> collect1 = (List<T>) listToscaDataDefinition.stream().filter(e -> ownerIdList.contains(e.getOwnerId())).collect(Collectors.toList()); + ListDataDefinition listDef = new ListDataDefinition(collect1); + + listToscaDataDefinition.removeIf(e -> ownerIdList.contains(e.getOwnerId())); + return (T) listDef; } + @Override + public <T extends ToscaDataDefinition> T updateIfExist(T other, boolean allowDefaultValueOverride) { + + List<T> list = ((ListDataDefinition)other).getListToscaDataDefinition(); + list.forEach(e -> { + String nameFromPrev = (String)e.getToscaPresentationValue(JsonPresentationFields.NAME); + if ( nameFromPrev != null ){ + Optional<T> findAny = (Optional<T>) listToscaDataDefinition.stream().filter(o->nameFromPrev.equals(e.getToscaPresentationValue(JsonPresentationFields.NAME))).findAny(); + if ( findAny.isPresent() ){ + e.mergeFunction(findAny.get(), allowDefaultValueOverride); + } + } + }); + return other; + } + @Override + public boolean isEmpty(){ + return listToscaDataDefinition == null || listToscaDataDefinition.isEmpty(); + } } |