diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/tosca/GroupExportParserImpl.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/tosca/GroupExportParserImpl.java | 409 |
1 files changed, 186 insertions, 223 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/GroupExportParserImpl.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/GroupExportParserImpl.java index bb4d363e43..65f3b64c33 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/GroupExportParserImpl.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/GroupExportParserImpl.java @@ -7,9 +7,9 @@ * 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. @@ -17,10 +17,25 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.tosca; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; +import static org.apache.commons.collections.CollectionUtils.isEmpty; +import static org.apache.commons.collections.CollectionUtils.isNotEmpty; +import static org.apache.commons.collections.MapUtils.isEmpty; +import static org.apache.commons.collections.MapUtils.isNotEmpty; +import static org.apache.commons.lang.StringUtils.isNotEmpty; +import static org.openecomp.sdc.be.model.utils.ComponentUtilities.getComponentInstanceNameByInstanceId; + import fj.data.Either; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Predicate; +import java.util.function.Supplier; import org.apache.commons.lang.StringUtils; import org.openecomp.sdc.be.components.impl.exceptions.SdcResourceNotFoundException; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; @@ -43,234 +58,182 @@ import org.openecomp.sdc.be.tosca.model.VfModuleToscaMetadata; import org.openecomp.sdc.common.api.Constants; import org.openecomp.sdc.common.log.wrappers.Logger; import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.function.Predicate; -import java.util.function.Supplier; import org.springframework.context.event.EventListener; -import static java.util.stream.Collectors.toList; -import static java.util.stream.Collectors.toMap; -import static org.apache.commons.collections.CollectionUtils.isEmpty; -import static org.apache.commons.collections.CollectionUtils.isNotEmpty; -import static org.apache.commons.collections.MapUtils.isEmpty; -import static org.apache.commons.collections.MapUtils.isNotEmpty; -import static org.apache.commons.lang.StringUtils.isNotEmpty; -import static org.openecomp.sdc.be.model.utils.ComponentUtilities.getComponentInstanceNameByInstanceId; - @org.springframework.stereotype.Component public class GroupExportParserImpl implements GroupExportParser { private static final Logger log = Logger.getLogger(GroupExportParserImpl.class); - + private final PropertyConvertor propertyConvertor; private Map<String, DataTypeDefinition> dataTypes; private ApplicationDataTypeCache dataTypeCache; - private final PropertyConvertor propertyConvertor; - - @Autowired - public GroupExportParserImpl(ApplicationDataTypeCache dataTypeCache, PropertyConvertor propertyConvertor) { - this.dataTypeCache = dataTypeCache; - this.propertyConvertor = propertyConvertor; - this.dataTypes = getDataTypes(); - } - - private Map<String, DataTypeDefinition> getDataTypes() { - Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll(); - if (dataTypesEither.isRight()) { - log.error("Failed to retrieve all data types {}", dataTypesEither.right().value()); - throw new SdcResourceNotFoundException(); - } - - return dataTypesEither.left().value(); - } - @EventListener - public void onDataTypesCacheChangedEvent( - ApplicationDataTypeCache.DataTypesCacheChangedEvent dataTypesCacheChangedEvent) { - dataTypes = dataTypesCacheChangedEvent.getNewData(); - log.debug("Data types cache updated."); - } - - @Override - public Map<String, ToscaGroupTemplate> getGroups(Component component) { - List<GroupDefinition> groups = component.getGroups(); - - if (isEmpty(groups)) { - return null; - } - - return groups.stream() - .collect(toMap(GroupDefinition::getName, - group -> getToscaGroupTemplate(component, group))); - } - - @Override - public ToscaGroupTemplate getToscaGroupTemplate(GroupInstance groupInstance, String componentInstanceInvariantName) { - - String groupName = groupInstance.getName(); - if (StringUtils.isNotEmpty(componentInstanceInvariantName)) { - String prefix = componentInstanceInvariantName + Constants.GROUP_POLICY_NAME_DELIMETER; - if (groupName.startsWith(prefix)) { - groupName = groupName.substring(prefix.length()); - } - } - String invariantUUID = groupInstance.getInvariantUUID(); - String groupUUID = groupInstance.getGroupUUID(); - String version = groupInstance.getVersion(); - List<GroupInstanceProperty> groupInstanceProperties = groupInstance.convertToGroupInstancesProperties(); - String groupType = groupInstance.getType(); - String customizationUUID = groupInstance.getCustomizationUUID(); - - IToscaMetadata toscaMetadata = getToscaGroupTemplateMetadata(groupName, invariantUUID, groupUUID, version, groupType, customizationUUID); - Map<String, Object> properties = getToscaGroupTemplateProperties(groupInstanceProperties); - + @Autowired + public GroupExportParserImpl(ApplicationDataTypeCache dataTypeCache, PropertyConvertor propertyConvertor) { + this.dataTypeCache = dataTypeCache; + this.propertyConvertor = propertyConvertor; + this.dataTypes = getDataTypes(); + } + + private Map<String, DataTypeDefinition> getDataTypes() { + Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> dataTypesEither = dataTypeCache.getAll(); + if (dataTypesEither.isRight()) { + log.error("Failed to retrieve all data types {}", dataTypesEither.right().value()); + throw new SdcResourceNotFoundException(); + } + return dataTypesEither.left().value(); + } + + @EventListener + public void onDataTypesCacheChangedEvent(ApplicationDataTypeCache.DataTypesCacheChangedEvent dataTypesCacheChangedEvent) { + dataTypes = dataTypesCacheChangedEvent.getNewData(); + log.debug("Data types cache updated."); + } + + @Override + public Map<String, ToscaGroupTemplate> getGroups(Component component) { + List<GroupDefinition> groups = component.getGroups(); + if (isEmpty(groups)) { + return null; + } + return groups.stream().collect(toMap(GroupDefinition::getName, group -> getToscaGroupTemplate(component, group))); + } + + @Override + public ToscaGroupTemplate getToscaGroupTemplate(GroupInstance groupInstance, String componentInstanceInvariantName) { + String groupName = groupInstance.getName(); + if (StringUtils.isNotEmpty(componentInstanceInvariantName)) { + String prefix = componentInstanceInvariantName + Constants.GROUP_POLICY_NAME_DELIMETER; + if (groupName.startsWith(prefix)) { + groupName = groupName.substring(prefix.length()); + } + } + String invariantUUID = groupInstance.getInvariantUUID(); + String groupUUID = groupInstance.getGroupUUID(); + String version = groupInstance.getVersion(); + List<GroupInstanceProperty> groupInstanceProperties = groupInstance.convertToGroupInstancesProperties(); + String groupType = groupInstance.getType(); + String customizationUUID = groupInstance.getCustomizationUUID(); + IToscaMetadata toscaMetadata = getToscaGroupTemplateMetadata(groupName, invariantUUID, groupUUID, version, groupType, customizationUUID); + Map<String, Object> properties = getToscaGroupTemplateProperties(groupInstanceProperties); return new ToscaGroupTemplate(groupType, toscaMetadata, properties); - } - - private ToscaGroupTemplate getToscaGroupTemplate(Component component, GroupDefinition groupDefinition) { - - String groupName = groupDefinition.getName(); - String invariantUUID = groupDefinition.getInvariantUUID(); - String groupUUID = groupDefinition.getGroupUUID(); - String version = groupDefinition.getVersion(); - String groupType = groupDefinition.getType(); - List<PropertyDataDefinition> groupDefinitionProperties = groupDefinition.getProperties(); - - List<String> members = getToscaGroupTemplateMembers(component, groupDefinition.getMembers()); - IToscaMetadata toscaMetadata = getToscaGroupTemplateMetadata(groupName, invariantUUID, groupUUID, version,groupType, null); - Map<String, Object> properties = getToscaGroupTemplateProperties(groupDefinitionProperties); - Map<String, ToscaTemplateCapability> capabilities = getToscaGroupTemplateCapabilities(groupDefinition); - - return new ToscaGroupTemplate(groupType, members, toscaMetadata, properties, capabilities); - } - - private Map<String, ToscaTemplateCapability> getToscaGroupTemplateCapabilities(GroupDefinition group) { - if (isEmpty(group.getCapabilities())) { - return null; - } - - Map<String, ToscaTemplateCapability> toscaGroupTemplateCapabilities = group.getCapabilities().values() - .stream() - .flatMap(Collection::stream) - .filter(c -> isNotEmptyProperties(c.getProperties())) - .collect(toMap(c-> getCapabilityName(c, group), this::getToscaTemplateCapability)); - - if (isNotEmpty(toscaGroupTemplateCapabilities)) { - return toscaGroupTemplateCapabilities; - } else { - return null; - } - } - - private String getCapabilityName(CapabilityDefinition capability, GroupDefinition group) { - if(ComponentUtilities.isNotUpdatedCapReqName(group.getNormalizedName() + ".", capability.getName(), capability.getPreviousName())){ - return capability.getName(); - } - return capability.getPreviousName(); - } - - private boolean isNotEmptyProperties(List<ComponentInstanceProperty> properties) { - return isNotEmpty(properties) && properties.stream() - .filter(isComponentInstancePropertiesNotEmpty()) - .findFirst() - .isPresent(); - } - - private ToscaTemplateCapability getToscaTemplateCapability(CapabilityDefinition capability) { - ToscaTemplateCapability toscaTemplateCapability = new ToscaTemplateCapability(); - Map<String, Object> toscaCapabilityProperties = capability.getProperties().stream() - .filter(isComponentInstancePropertiesNotEmpty()) - .collect(toMap(ComponentInstanceProperty::getName, - this::fetchCapabilityValue)); - if(isNotEmpty(toscaCapabilityProperties)) { - toscaTemplateCapability.setProperties(toscaCapabilityProperties); - } - return toscaTemplateCapability; - } - - private Predicate<? super ComponentInstanceProperty> isComponentInstancePropertiesNotEmpty() { - return c -> { - return (c.getName() != null && (c.getValue() != null || c.getDefaultValue() != null)); - }; - } - - private String fetchCapabilityValue(ComponentInstanceProperty componentInstanceProperty) { - if(componentInstanceProperty.getValue() != null) { - return componentInstanceProperty.getValue(); - }else { - return componentInstanceProperty.getDefaultValue(); - } - } - - private List<String> getToscaGroupTemplateMembers(Component component, Map<String, String> members) { - if (members == null) { - return null; - } - return members.values() - .stream() - .map(memberId -> getMemberNameByMemberId(component, memberId)) - .filter(Optional::isPresent) - .map(Optional::get) - .collect(toList()); - } - - private Optional<String> getMemberNameByMemberId(Component component, String memberId) { - return getComponentInstanceNameByInstanceId(component, memberId); - } - - private IToscaMetadata getToscaGroupTemplateMetadata(String groupName,String invariantUUID, - String groupUUID,String version,String type, String customizationUUID) { - - IToscaMetadata toscaMetadata = getToscaMetadataByType(type); - - toscaMetadata.setName(groupName); - toscaMetadata.setInvariantUUID(invariantUUID); - toscaMetadata.setUUID(groupUUID); - toscaMetadata.setVersion(version); - toscaMetadata.setCustomizationUUID(customizationUUID); - return toscaMetadata; - } - - private IToscaMetadata getToscaMetadataByType(String type) { - IToscaMetadata toscaMetadata; - if (GroupUtils.isVfModule(type)) { - toscaMetadata = new VfModuleToscaMetadata(); - } else { - toscaMetadata = new ToscaMetadata(); - } - return toscaMetadata; - } - - private Map<String, Object> getToscaGroupTemplateProperties(List<? extends PropertyDataDefinition> tempProperties) { - - if (isEmpty(tempProperties)) { - return null; - } - - Map<String, Object> props = new HashMap<>(); - - tempProperties.forEach(input -> - propertyConvertor.convertAndAddValue(dataTypes, props, input, getPropertyValue(input)) - ); - - if (props.isEmpty()) { - return null; - } else { - return props; - } - } - - private Supplier<String> getPropertyValue(PropertyDataDefinition propertyDataDefinition) { - return () -> { - if (isNotEmpty(propertyDataDefinition.getValue())) { - return propertyDataDefinition.getValue(); - } else { - return propertyDataDefinition.getDefaultValue(); - } - }; - } + } + + private ToscaGroupTemplate getToscaGroupTemplate(Component component, GroupDefinition groupDefinition) { + String groupName = groupDefinition.getName(); + String invariantUUID = groupDefinition.getInvariantUUID(); + String groupUUID = groupDefinition.getGroupUUID(); + String version = groupDefinition.getVersion(); + String groupType = groupDefinition.getType(); + List<PropertyDataDefinition> groupDefinitionProperties = groupDefinition.getProperties(); + List<String> members = getToscaGroupTemplateMembers(component, groupDefinition.getMembers()); + IToscaMetadata toscaMetadata = getToscaGroupTemplateMetadata(groupName, invariantUUID, groupUUID, version, groupType, null); + Map<String, Object> properties = getToscaGroupTemplateProperties(groupDefinitionProperties); + Map<String, ToscaTemplateCapability> capabilities = getToscaGroupTemplateCapabilities(groupDefinition); + return new ToscaGroupTemplate(groupType, members, toscaMetadata, properties, capabilities); + } + + private Map<String, ToscaTemplateCapability> getToscaGroupTemplateCapabilities(GroupDefinition group) { + if (isEmpty(group.getCapabilities())) { + return null; + } + Map<String, ToscaTemplateCapability> toscaGroupTemplateCapabilities = group.getCapabilities().values().stream().flatMap(Collection::stream) + .filter(c -> isNotEmptyProperties(c.getProperties())).collect(toMap(c -> getCapabilityName(c, group), this::getToscaTemplateCapability)); + if (isNotEmpty(toscaGroupTemplateCapabilities)) { + return toscaGroupTemplateCapabilities; + } else { + return null; + } + } + + private String getCapabilityName(CapabilityDefinition capability, GroupDefinition group) { + if (ComponentUtilities.isNotUpdatedCapReqName(group.getNormalizedName() + ".", capability.getName(), capability.getPreviousName())) { + return capability.getName(); + } + return capability.getPreviousName(); + } + + private boolean isNotEmptyProperties(List<ComponentInstanceProperty> properties) { + return isNotEmpty(properties) && properties.stream().filter(isComponentInstancePropertiesNotEmpty()).findFirst().isPresent(); + } + + private ToscaTemplateCapability getToscaTemplateCapability(CapabilityDefinition capability) { + ToscaTemplateCapability toscaTemplateCapability = new ToscaTemplateCapability(); + Map<String, Object> toscaCapabilityProperties = capability.getProperties().stream().filter(isComponentInstancePropertiesNotEmpty()) + .collect(toMap(ComponentInstanceProperty::getName, this::fetchCapabilityValue)); + if (isNotEmpty(toscaCapabilityProperties)) { + toscaTemplateCapability.setProperties(toscaCapabilityProperties); + } + return toscaTemplateCapability; + } + + private Predicate<? super ComponentInstanceProperty> isComponentInstancePropertiesNotEmpty() { + return c -> { + return (c.getName() != null && (c.getValue() != null || c.getDefaultValue() != null)); + }; + } + + private String fetchCapabilityValue(ComponentInstanceProperty componentInstanceProperty) { + if (componentInstanceProperty.getValue() != null) { + return componentInstanceProperty.getValue(); + } else { + return componentInstanceProperty.getDefaultValue(); + } + } + + private List<String> getToscaGroupTemplateMembers(Component component, Map<String, String> members) { + if (members == null) { + return null; + } + return members.values().stream().map(memberId -> getMemberNameByMemberId(component, memberId)).filter(Optional::isPresent).map(Optional::get) + .collect(toList()); + } + + private Optional<String> getMemberNameByMemberId(Component component, String memberId) { + return getComponentInstanceNameByInstanceId(component, memberId); + } + + private IToscaMetadata getToscaGroupTemplateMetadata(String groupName, String invariantUUID, String groupUUID, String version, String type, + String customizationUUID) { + IToscaMetadata toscaMetadata = getToscaMetadataByType(type); + toscaMetadata.setName(groupName); + toscaMetadata.setInvariantUUID(invariantUUID); + toscaMetadata.setUUID(groupUUID); + toscaMetadata.setVersion(version); + toscaMetadata.setCustomizationUUID(customizationUUID); + return toscaMetadata; + } + + private IToscaMetadata getToscaMetadataByType(String type) { + IToscaMetadata toscaMetadata; + if (GroupUtils.isVfModule(type)) { + toscaMetadata = new VfModuleToscaMetadata(); + } else { + toscaMetadata = new ToscaMetadata(); + } + return toscaMetadata; + } + + private Map<String, Object> getToscaGroupTemplateProperties(List<? extends PropertyDataDefinition> tempProperties) { + if (isEmpty(tempProperties)) { + return null; + } + Map<String, Object> props = new HashMap<>(); + tempProperties.forEach(input -> propertyConvertor.convertAndAddValue(dataTypes, props, input, getPropertyValue(input))); + if (props.isEmpty()) { + return null; + } else { + return props; + } + } + + private Supplier<String> getPropertyValue(PropertyDataDefinition propertyDataDefinition) { + return () -> { + if (isNotEmpty(propertyDataDefinition.getValue())) { + return propertyDataDefinition.getValue(); + } else { + return propertyDataDefinition.getDefaultValue(); + } + }; + } } |