* 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.
package org.openecomp.sdc.be.datamodel.utils;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
+import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
+import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
import org.openecomp.sdc.be.datatypes.components.ServiceMetadataDataDefinition;
+import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
import org.openecomp.sdc.be.datatypes.enums.ComponentFieldsEnum;
-import org.openecomp.sdc.be.model.Component;
-import org.openecomp.sdc.be.model.Resource;
-import org.openecomp.sdc.be.model.Service;
-import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
-import org.openecomp.sdc.be.ui.model.UiComponentMetadata;
-import org.openecomp.sdc.be.ui.model.UiResourceDataTransfer;
-import org.openecomp.sdc.be.ui.model.UiResourceMetadata;
-import org.openecomp.sdc.be.ui.model.UiServiceDataTransfer;
-import org.openecomp.sdc.be.ui.model.UiServiceMetadata;
-
-public class UiComponentDataConverter {
+import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
+import org.openecomp.sdc.be.model.*;
+import org.openecomp.sdc.be.ui.model.*;
+import org.openecomp.sdc.common.log.wrappers.Logger;
- private static void setUiTranferDataByFieldName(UiComponentDataTransfer dataTransfer, Component component, String fieldName) {
+import java.util.*;
- switch (ComponentFieldsEnum.findByValue(fieldName)) {
+import static java.util.stream.Collectors.groupingBy;
+import static java.util.stream.Collectors.toList;
- case INPUTS:
- if(component.getInputs() == null){
- dataTransfer.setInputs(new ArrayList<>());
- } else {
- dataTransfer.setInputs(component.getInputs());
- }
- break;
+@org.springframework.stereotype.Component("uiComponentDataConverter")
+public class UiComponentDataConverter {
- case COMPONENT_INSTANCE_RELATION:
- if(component.getComponentInstancesRelations() == null){
- dataTransfer.setComponentInstancesRelations(new ArrayList<>());
- } else {
- dataTransfer.setComponentInstancesRelations(component.getComponentInstancesRelations());
- }
+ private static final Logger log = Logger.getLogger(UiComponentDataConverter.class);
+ public static final String INVALID_INPUT_GIVEN_TO_DATA_CONVERTER = "Invalid input given to data converter: {}";
+ private final GroupTypeBusinessLogic groupTypeBusinessLogic;
+ private final PolicyTypeBusinessLogic policyTypeBusinessLogic;
- break;
+ public UiComponentDataConverter(GroupTypeBusinessLogic groupTypeBusinessLogic, PolicyTypeBusinessLogic policyTypeBusinessLogic) {
+ this.groupTypeBusinessLogic = groupTypeBusinessLogic;
+ this.policyTypeBusinessLogic = policyTypeBusinessLogic;
+ }
- case GROUPS:
- if(component.getGroups() == null){
- dataTransfer.setGroups(new ArrayList<>());
- } else {
- dataTransfer.setGroups(component.getGroups());
- }
- break;
+ private void setUiTranferDataByFieldName(UiComponentDataTransfer dataTransfer, Component component, String fieldName) {
+ ComponentFieldsEnum field = ComponentFieldsEnum.findByValue(fieldName);
+ if (field == null) {
+ log.error(INVALID_INPUT_GIVEN_TO_DATA_CONVERTER, fieldName);
+ return;
+ }
+ switch (field) {
+ case INPUTS:
+ setInputs(dataTransfer, component);
+ break;
+ case COMPONENT_INSTANCE_RELATION:
+ setComponentInstanceRelation(dataTransfer, component);
+ break;
+ case GROUPS:
+ setGroups(dataTransfer, component);
+ break;
+ case NON_EXCLUDED_GROUPS:
+ setNonExcludedGroups(dataTransfer, component);
+ break;
+ case COMPONENT_INSTANCES:
+ setComponentInstances(dataTransfer, component);
+ break;
+ case COMPONENT_INSTANCES_PROPERTIES:
+ setComponentInstanceProperties(dataTransfer, component);
+ break;
+ case CAPABILITIES:
+ setCapabilities(dataTransfer, component);
+ break;
+ case POLICIES:
+ dataTransfer.setPolicies(component.resolvePoliciesList());
+ break;
+ case NON_EXCLUDED_POLICIES:
+ setNonExcludedPolicies(dataTransfer, component);
+ break;
+ case REQUIREMENTS:
+ setRequirements(dataTransfer, component);
+ break;
+ case DEPLOYMENT_ARTIFACTS:
+ setDeploymentArtifacts(dataTransfer, component);
+ break;
+ case TOSCA_ARTIFACTS:
+ setToscaArtifacts(dataTransfer, component);
+ break;
+ case ARTIFACTS:
+ setArtifacts(dataTransfer, component);
+ break;
+ case COMPONENT_INSTANCES_ATTRIBUTES:
+ setComponentInstanceAttributes(dataTransfer, component);
+ break;
+ case COMPONENT_INSTANCE_INPUTS:
+ setComponentInstanceInputs(dataTransfer, component);
+ break;
+ default:
+ break;
+ }
+ }
- case COMPONENT_INSTANCES:
- if(component.getComponentInstances() == null) {
- dataTransfer.setComponentInstances(new ArrayList<>());
- } else {
- dataTransfer.setComponentInstances(component.getComponentInstances());
- }
- break;
+ private void setComponentInstanceRelation(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getComponentInstancesRelations() == null) {
+ dataTransfer.setComponentInstancesRelations(new ArrayList<>());
+ } else {
+ dataTransfer.setComponentInstancesRelations(component.getComponentInstancesRelations());
+ }
+ }
- case COMPONENT_INSTANCES_PROPERTIES:
- if(component.getComponentInstancesProperties() == null) {
- dataTransfer.setComponentInstancesProperties(new HashMap<>());
- } else {
- dataTransfer.setComponentInstancesProperties(component.getComponentInstancesProperties());
- }
- break;
+ private void setInputs(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getInputs() == null) {
+ dataTransfer.setInputs(new ArrayList<>());
+ } else {
+ dataTransfer.setInputs(component.getInputs());
+ }
+ }
- case CAPABILITIES:
- if(component.getCapabilities() == null) {
- dataTransfer.setCapabilities(new HashMap<>());
- } else {
- dataTransfer.setCapabilities(component.getCapabilities());
- }
- break;
+ private void setComponentInstanceInputs(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getComponentInstancesInputs() == null) {
+ dataTransfer.setComponentInstancesInputs(new HashMap<>());
+ } else {
+ dataTransfer.setComponentInstancesInputs(component.getComponentInstancesInputs());
+ }
+ }
- case POLICIES:
- dataTransfer.setPolicies(component.resolvePoliciesList());
- break;
+ private void setComponentInstanceAttributes(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getComponentInstancesAttributes() == null) {
+ dataTransfer.setComponentInstancesAttributes(new HashMap<>());
+ } else {
+ dataTransfer.setComponentInstancesAttributes(component.getComponentInstancesAttributes());
+ }
+ }
- case REQUIREMENTS:
- if(component.getRequirements() == null) {
- dataTransfer.setRequirements(new HashMap<>());
- } else {
- dataTransfer.setRequirements(component.getRequirements());
- }
- break;
+ private void setArtifacts(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getArtifacts() == null) {
+ dataTransfer.setArtifacts(new HashMap<>());
+ } else {
+ dataTransfer.setArtifacts(component.getArtifacts());
+ }
+ }
- case DEPLOYMENT_ARTIFACTS:
- if(component.getDeploymentArtifacts() == null) {
- dataTransfer.setDeploymentArtifacts(new HashMap<>());
- } else {
- dataTransfer.setDeploymentArtifacts(component.getDeploymentArtifacts());
- }
- break;
+ private void setToscaArtifacts(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getToscaArtifacts() == null) {
+ dataTransfer.setToscaArtifacts(new HashMap<>());
+ } else {
+ dataTransfer.setToscaArtifacts(component.getToscaArtifacts());
+ }
+ }
- case TOSCA_ARTIFACTS:
- if(component.getToscaArtifacts() == null) {
- dataTransfer.setToscaArtifacts(new HashMap<>());
- } else {
- dataTransfer.setToscaArtifacts(component.getToscaArtifacts());
- }
- break;
+ private void setDeploymentArtifacts(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getDeploymentArtifacts() == null) {
+ dataTransfer.setDeploymentArtifacts(new HashMap<>());
+ } else {
+ dataTransfer.setDeploymentArtifacts(component.getDeploymentArtifacts());
+ }
+ }
- case ARTIFACTS:
- if(component.getArtifacts() == null) {
- dataTransfer.setArtifacts(new HashMap<>());
- } else {
- dataTransfer.setArtifacts(component.getArtifacts());
- }
- break;
+ private void setRequirements(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getRequirements() == null) {
+ dataTransfer.setRequirements(new HashMap<>());
+ } else {
+ dataTransfer.setRequirements(component.getRequirements());
+ }
+ }
- case COMPONENT_INSTANCES_ATTRIBUTES:
- if(component.getComponentInstancesAttributes() == null) {
- dataTransfer.setComponentInstancesAttributes(new HashMap<>());
- } else {
- dataTransfer.setComponentInstancesAttributes(component.getComponentInstancesAttributes());
- }
- break;
+ private void setCapabilities(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getCapabilities() == null) {
+ dataTransfer.setCapabilities(new HashMap<>());
+ } else {
+ dataTransfer.setCapabilities(getFilteredCapabilities(component));
+ }
+ }
- case COMPONENT_INSTANCE_INPUTS:
- if(component.getComponentInstancesInputs() == null) {
- dataTransfer.setComponentInstancesInputs(new HashMap<>());
- } else {
- dataTransfer.setComponentInstancesInputs(component.getComponentInstancesInputs());
- }
+ private Map<String,List<CapabilityDefinition>> getFilteredCapabilities(Component component) {
+ if(component.getComponentType() != ComponentTypeEnum.SERVICE){
+ return component.getCapabilities().values()
+ .stream()
+ .flatMap(Collection::stream)
+ .filter(c -> c.getOwnerType() != CapabilityDataDefinition.OwnerType.GROUP)
+ .collect(groupingBy(CapabilityDefinition::getType, toList()));
+ }
+ return component.getCapabilities();
+ }
- break;
+ private void setComponentInstanceProperties(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getComponentInstancesProperties() == null) {
+ dataTransfer.setComponentInstancesProperties(new HashMap<>());
+ } else {
+ dataTransfer.setComponentInstancesProperties(component.getComponentInstancesProperties());
+ }
+ }
+ private void setComponentInstances(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getComponentInstances() == null) {
+ dataTransfer.setComponentInstances(new ArrayList<>());
+ } else {
+ dataTransfer.setComponentInstances(component.getComponentInstances());
+ }
+ }
- default:
- break;
- }
+ private void setGroups(UiComponentDataTransfer dataTransfer, Component component) {
+ if (component.getGroups() == null) {
+ dataTransfer.setGroups(new ArrayList<>());
+ } else {
+ dataTransfer.setGroups(component.getGroups());
+ }
+ }
+ private void setNonExcludedGroups(UiComponentDataTransfer dataTransfer, Component component) {
+ List<GroupDefinition> groups = component.getGroups();
+ if (groups == null) {
+ dataTransfer.setGroups(new ArrayList<>());
+ } else {
+ Set<String> nonExcludedGroupTypes = groupTypeBusinessLogic.getExcludedGroupTypes(component.getActualComponentType());
+ List<GroupDefinition> nonExcludedGroups = groups.stream()
+ .filter(gd -> !nonExcludedGroupTypes.contains(gd.getType()))
+ .collect(toList());
+ dataTransfer.setGroups(nonExcludedGroups);
+ }
}
+ private void setNonExcludedPolicies(UiComponentDataTransfer dataTransfer, Component component) {
+ List<PolicyDefinition> policyDefinitions = component.resolvePoliciesList();
+ Set<String> nonExcludedPolicyTypes = policyTypeBusinessLogic.getExcludedPolicyTypes(component.getActualComponentType());
+ List<PolicyDefinition> nonExcludedPolicies = policyDefinitions.stream()
+ .filter(pd -> !nonExcludedPolicyTypes.contains(pd.getPolicyTypeName()))
+ .collect(toList());
+ dataTransfer.setPolicies(nonExcludedPolicies);
+ }
- public static UiComponentDataTransfer getUiDataTransferFromResourceByParams(Resource resource, List<String> paramsToReturn) {
+ public UiComponentDataTransfer getUiDataTransferFromResourceByParams(Resource resource, List<String> paramsToReturn) {
UiResourceDataTransfer dataTransfer = new UiResourceDataTransfer();
- for(String fieldName: paramsToReturn){
+ for (String fieldName : paramsToReturn) {
- switch (ComponentFieldsEnum.findByValue(fieldName)) {
+ ComponentFieldsEnum field = ComponentFieldsEnum.findByValue(fieldName);
+ if (field == null) {
+ log.error(INVALID_INPUT_GIVEN_TO_DATA_CONVERTER, fieldName);
+ continue;
+ }
+ switch (field) {
case PROPERTIES:
- if(resource.getProperties() == null) {
- dataTransfer.setProperties(new ArrayList<>());
- } else {
- dataTransfer.setProperties(resource.getProperties());
- }
+ setProperties(resource, dataTransfer);
break;
case INTERFACES:
- if(resource.getInterfaces() == null) {
- dataTransfer.setInterfaces(new HashMap<>());
- } else {
- dataTransfer.setInterfaces(resource.getInterfaces());
- }
+ setInterfaces(resource, dataTransfer);
break;
case DERIVED_FROM:
- if(resource.getDerivedFrom() == null) {
- dataTransfer.setDerivedFrom(new ArrayList<>());
- } else {
- dataTransfer.setDerivedFrom(resource.getDerivedFrom());
- }
+ setDerivedFrom(resource, dataTransfer);
break;
case ATTRIBUTES:
- if(resource.getAttributes() == null) {
- dataTransfer.setAttributes(new ArrayList<>());
- } else {
- dataTransfer.setAttributes(resource.getAttributes());
- }
+ setAttributes(resource, dataTransfer);
break;
case ADDITIONAL_INFORMATION:
- if(resource.getAdditionalInformation() == null) {
- dataTransfer.setAdditionalInformation(new ArrayList<>());
- } else {
- dataTransfer.setAdditionalInformation(resource.getAdditionalInformation());
- }
+ setAdditionalInfo(resource, dataTransfer);
break;
case METADATA:
- UiResourceMetadata metadata = new UiResourceMetadata(resource.getCategories(), resource.getDerivedFrom(), (ResourceMetadataDataDefinition) resource.getComponentMetadataDefinition().getMetadataDataDefinition());
+ UiResourceMetadata metadata = new UiResourceMetadata(resource.getCategories(), resource.getDerivedFrom(), (ResourceMetadataDataDefinition) resource.getComponentMetadataDefinition().getMetadataDataDefinition());
dataTransfer.setMetadata(metadata);
break;
return dataTransfer;
}
- public static UiComponentDataTransfer getUiDataTransferFromServiceByParams(Service service, List<String> paramsToReturn) {
- UiServiceDataTransfer dataTransfer = new UiServiceDataTransfer();
+ private void setProperties(Resource resource, UiResourceDataTransfer dataTransfer) {
+ if (resource.getProperties() == null) {
+ dataTransfer.setProperties(new ArrayList<>());
+ } else {
+ dataTransfer.setProperties(resource.getProperties());
+ }
+ }
+
+ private void setInterfaces(Resource resource, UiResourceDataTransfer dataTransfer) {
+ if (resource.getInterfaces() == null) {
+ dataTransfer.setInterfaces(new HashMap<>());
+ } else {
+ dataTransfer.setInterfaces(resource.getInterfaces());
+ }
+ }
+
+ private void setDerivedFrom(Resource resource, UiResourceDataTransfer dataTransfer) {
+ if (resource.getDerivedFrom() == null) {
+ dataTransfer.setDerivedFrom(new ArrayList<>());
+ } else {
+ dataTransfer.setDerivedFrom(resource.getDerivedFrom());
+ }
+ }
- for(String fieldName: paramsToReturn){
+ private void setAttributes(Resource resource, UiResourceDataTransfer dataTransfer) {
+ if (resource.getAttributes() == null) {
+ dataTransfer.setAttributes(new ArrayList<>());
+ } else {
+ dataTransfer.setAttributes(resource.getAttributes());
+ }
+ }
- switch (ComponentFieldsEnum.findByValue(fieldName)) {
+ private void setAdditionalInfo(Resource resource, UiResourceDataTransfer dataTransfer) {
+ if (resource.getAdditionalInformation() == null) {
+ dataTransfer.setAdditionalInformation(new ArrayList<>());
+ } else {
+ dataTransfer.setAdditionalInformation(resource.getAdditionalInformation());
+ }
+ }
+ public UiComponentDataTransfer getUiDataTransferFromServiceByParams(Service service, List<String> paramsToReturn) {
+ UiServiceDataTransfer dataTransfer = new UiServiceDataTransfer();
+ for (String fieldName : paramsToReturn) {
+ ComponentFieldsEnum field = ComponentFieldsEnum.findByValue(fieldName);
+ if (field == null) {
+ log.error(INVALID_INPUT_GIVEN_TO_DATA_CONVERTER, fieldName);
+ continue;
+ }
+ switch (field) {
case SERVICE_API_ARTIFACTS:
- if(service.getServiceApiArtifacts() == null) {
- dataTransfer.setServiceApiArtifacts(new org.openecomp.sdc.be.ui.model.SerializedHashMap<>());
- } else {
- dataTransfer.setServiceApiArtifacts(service.getServiceApiArtifacts());
- }
+ setServiceApiArtifacts(service, dataTransfer);
break;
case FORWARDING_PATHS:
- if(service.getForwardingPaths() == null) {
- dataTransfer.setForwardingPaths(new org.openecomp.sdc.be.ui.model.SerializedHashMap<>());
- } else {
- dataTransfer.setForwardingPaths(service.getForwardingPaths());
- }
-
+ setForwardingPaths(service, dataTransfer);
break;
case METADATA:
- UiServiceMetadata metadata = new UiServiceMetadata(service.getCategories(), (ServiceMetadataDataDefinition) service.getComponentMetadataDefinition().getMetadataDataDefinition());
+ UiServiceMetadata metadata = new UiServiceMetadata(service.getCategories(), (ServiceMetadataDataDefinition) service.getComponentMetadataDefinition().getMetadataDataDefinition());
dataTransfer.setMetadata(metadata);
break;
default:
setUiTranferDataByFieldName(dataTransfer, service, fieldName);
- }
+ }
}
-
return dataTransfer;
}
+ private void setServiceApiArtifacts(Service service, UiServiceDataTransfer dataTransfer) {
+ if (service.getServiceApiArtifacts() == null) {
+ dataTransfer.setServiceApiArtifacts(new org.openecomp.sdc.be.ui.model.SerializedHashMap<>());
+ } else {
+ dataTransfer.setServiceApiArtifacts(service.getServiceApiArtifacts());
+ }
+ }
+
+ private void setForwardingPaths(Service service, UiServiceDataTransfer dataTransfer) {
+ if (service.getForwardingPaths() == null) {
+ dataTransfer.setForwardingPaths(new org.openecomp.sdc.be.ui.model.SerializedHashMap<>());
+ } else {
+ dataTransfer.setForwardingPaths(service.getForwardingPaths());
+ }
+ }
+
public static UiComponentMetadata convertToUiComponentMetadata(Component component) {
UiComponentMetadata uiComponentMetadata = null;
switch (component.getComponentType()) {
case RESOURCE:
- Resource resource = (Resource)component;
- uiComponentMetadata = new UiResourceMetadata(component.getCategories(), resource.getDerivedFrom(), (ResourceMetadataDataDefinition) resource.getComponentMetadataDefinition().getMetadataDataDefinition());
+ Resource resource = (Resource) component;
+ uiComponentMetadata = new UiResourceMetadata(component.getCategories(), resource.getDerivedFrom(), (ResourceMetadataDataDefinition) resource.getComponentMetadataDefinition().getMetadataDataDefinition());
break;
case SERVICE:
- uiComponentMetadata = new UiServiceMetadata(component.getCategories(), (ServiceMetadataDataDefinition) component.getComponentMetadataDefinition().getMetadataDataDefinition());
+ uiComponentMetadata = new UiServiceMetadata(component.getCategories(), (ServiceMetadataDataDefinition) component.getComponentMetadataDefinition().getMetadataDataDefinition());
break;
default:
break;