diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/GroupInstance.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/GroupInstance.java | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/GroupInstance.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/GroupInstance.java index e7d7c69efc..4ffa843463 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/GroupInstance.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/GroupInstance.java @@ -21,11 +21,18 @@ package org.openecomp.sdc.be.model; import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.openecomp.sdc.be.datatypes.elements.GroupInstanceDataDefinition; import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; +import org.openecomp.sdc.common.api.ArtifactTypeEnum; public class GroupInstance extends GroupInstanceDataDefinition implements Serializable { @@ -38,7 +45,10 @@ public class GroupInstance extends GroupInstanceDataDefinition implements Serial public GroupInstance(GroupInstanceDataDefinition r) { super(r); } - + /** + * Converts contained list of PropertyDataDefinitions to list of GroupInstanceProperties + * @return + */ public List<GroupInstanceProperty> convertToGroupInstancesProperties() { List<GroupInstanceProperty> groupInstancesProperties = null; List<PropertyDataDefinition> propertiesList = super.getProperties(); @@ -47,12 +57,77 @@ public class GroupInstance extends GroupInstanceDataDefinition implements Serial } return groupInstancesProperties; } - + /** + * Converts received list of GroupInstanceProperties to the list of PropertyDataDefinitions and sets It into the GroupInstanceDataDefinition as properties + * @param groupInstancesProperties + */ public void convertFromGroupInstancesProperties(List<GroupInstanceProperty> groupInstancesProperties) { if(groupInstancesProperties != null && !groupInstancesProperties .isEmpty()){ List<PropertyDataDefinition> propList = groupInstancesProperties.stream().map(p -> new PropertyDataDefinition(p)).collect(Collectors.toList()); super.setProperties(propList); } } + + private void removeArtifactsDuplicates() { + List<String> artifacts = getArtifacts(); + Set<String> artifactsSet = new HashSet<>(); + artifactsSet.addAll(artifacts); + artifacts.clear(); + artifacts.addAll(artifactsSet); + + List<String> giArtifacts = getGroupInstanceArtifacts(); + Set<String> giArtifactsSet = new HashSet<>(); + giArtifactsSet.addAll(giArtifacts); + giArtifacts.clear(); + giArtifacts.addAll(giArtifactsSet); + } + + private void clearArtifactsUuid() { + List<String> artifactsUuid = getArtifactsUuid(); + if(CollectionUtils.isNotEmpty(artifactsUuid)){ + artifactsUuid.clear(); + } else if (artifactsUuid == null){ + setArtifactsUuid(new ArrayList<>()); + } + + List<String> giartifactsUuid = this.getGroupInstanceArtifactsUuid(); + if(CollectionUtils.isNotEmpty(giartifactsUuid)){ + giartifactsUuid.clear(); + } else if (giartifactsUuid == null){ + setGroupInstanceArtifactsUuid(new ArrayList<>()); + } + } + + /** + * Aligns the list of artifacts UUIDs of group instance according to received deployment artifacts + * @param deploymentArtifacts + */ + public void alignArtifactsUuid(Map<String, ArtifactDefinition> deploymentArtifacts) { + List<String> artifactIds = getArtifacts(); + if(CollectionUtils.isNotEmpty(artifactIds)){ + removeArtifactsDuplicates(); + clearArtifactsUuid(); + List<String> artifactUuids = getArtifactsUuid(); + List<String> giArtifactUuids = getGroupInstanceArtifactsUuid(); + for(String artifactId : artifactIds){ + String label = artifactId.substring(artifactId.lastIndexOf('.') + 1); + ArtifactDefinition artifact = deploymentArtifacts.get(label); + ArtifactTypeEnum artifactType = ArtifactTypeEnum.findType(artifact.getArtifactType()); + if (artifactType != ArtifactTypeEnum.HEAT_ENV){ + addArtifactsIdToCollection(artifactUuids, artifact); + }else{ + addArtifactsIdToCollection(giArtifactUuids, artifact); + } + } + + } + } + + private void addArtifactsIdToCollection(List<String> artifactUuids, ArtifactDefinition artifact) { + if(!artifactUuids.contains(artifact.getArtifactUUID()) && StringUtils.isNotEmpty(artifact.getArtifactUUID())){ + artifactUuids.add(artifact.getArtifactUUID()); + + } + } } |