2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.datamodel.utils;
23 import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
24 import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
25 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
26 import org.openecomp.sdc.be.datatypes.components.ServiceMetadataDataDefinition;
27 import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
28 import org.openecomp.sdc.be.datatypes.enums.ComponentFieldsEnum;
29 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
30 import org.openecomp.sdc.be.model.*;
31 import org.openecomp.sdc.be.ui.model.*;
32 import org.openecomp.sdc.common.log.wrappers.Logger;
36 import static java.util.stream.Collectors.groupingBy;
37 import static java.util.stream.Collectors.toList;
39 @org.springframework.stereotype.Component("uiComponentDataConverter")
40 public class UiComponentDataConverter {
42 private static final Logger log = Logger.getLogger(UiComponentDataConverter.class);
43 public static final String INVALID_INPUT_GIVEN_TO_DATA_CONVERTER = "Invalid input given to data converter: {}";
44 private final GroupTypeBusinessLogic groupTypeBusinessLogic;
45 private final PolicyTypeBusinessLogic policyTypeBusinessLogic;
47 public UiComponentDataConverter(GroupTypeBusinessLogic groupTypeBusinessLogic, PolicyTypeBusinessLogic policyTypeBusinessLogic) {
48 this.groupTypeBusinessLogic = groupTypeBusinessLogic;
49 this.policyTypeBusinessLogic = policyTypeBusinessLogic;
52 private void setUiTranferDataByFieldName(UiComponentDataTransfer dataTransfer, Component component, String fieldName) {
53 ComponentFieldsEnum field = ComponentFieldsEnum.findByValue(fieldName);
55 log.error(INVALID_INPUT_GIVEN_TO_DATA_CONVERTER, fieldName);
60 setInputs(dataTransfer, component);
62 case COMPONENT_INSTANCE_RELATION:
63 setComponentInstanceRelation(dataTransfer, component);
66 setGroups(dataTransfer, component);
68 case NON_EXCLUDED_GROUPS:
69 setNonExcludedGroups(dataTransfer, component);
71 case COMPONENT_INSTANCES:
72 setComponentInstances(dataTransfer, component);
74 case COMPONENT_INSTANCES_PROPERTIES:
75 setComponentInstanceProperties(dataTransfer, component);
78 setCapabilities(dataTransfer, component);
81 dataTransfer.setPolicies(component.resolvePoliciesList());
83 case NON_EXCLUDED_POLICIES:
84 setNonExcludedPolicies(dataTransfer, component);
87 setRequirements(dataTransfer, component);
89 case DEPLOYMENT_ARTIFACTS:
90 setDeploymentArtifacts(dataTransfer, component);
93 setToscaArtifacts(dataTransfer, component);
96 setArtifacts(dataTransfer, component);
98 case COMPONENT_INSTANCES_ATTRIBUTES:
99 setComponentInstanceAttributes(dataTransfer, component);
101 case COMPONENT_INSTANCE_INPUTS:
102 setComponentInstanceInputs(dataTransfer, component);
109 private void setComponentInstanceRelation(UiComponentDataTransfer dataTransfer, Component component) {
110 if (component.getComponentInstancesRelations() == null) {
111 dataTransfer.setComponentInstancesRelations(new ArrayList<>());
113 dataTransfer.setComponentInstancesRelations(component.getComponentInstancesRelations());
117 private void setInputs(UiComponentDataTransfer dataTransfer, Component component) {
118 if (component.getInputs() == null) {
119 dataTransfer.setInputs(new ArrayList<>());
121 dataTransfer.setInputs(component.getInputs());
125 private void setComponentInstanceInputs(UiComponentDataTransfer dataTransfer, Component component) {
126 if (component.getComponentInstancesInputs() == null) {
127 dataTransfer.setComponentInstancesInputs(new HashMap<>());
129 dataTransfer.setComponentInstancesInputs(component.getComponentInstancesInputs());
133 private void setComponentInstanceAttributes(UiComponentDataTransfer dataTransfer, Component component) {
134 if (component.getComponentInstancesAttributes() == null) {
135 dataTransfer.setComponentInstancesAttributes(new HashMap<>());
137 dataTransfer.setComponentInstancesAttributes(component.getComponentInstancesAttributes());
141 private void setArtifacts(UiComponentDataTransfer dataTransfer, Component component) {
142 if (component.getArtifacts() == null) {
143 dataTransfer.setArtifacts(new HashMap<>());
145 dataTransfer.setArtifacts(component.getArtifacts());
149 private void setToscaArtifacts(UiComponentDataTransfer dataTransfer, Component component) {
150 if (component.getToscaArtifacts() == null) {
151 dataTransfer.setToscaArtifacts(new HashMap<>());
153 dataTransfer.setToscaArtifacts(component.getToscaArtifacts());
157 private void setDeploymentArtifacts(UiComponentDataTransfer dataTransfer, Component component) {
158 if (component.getDeploymentArtifacts() == null) {
159 dataTransfer.setDeploymentArtifacts(new HashMap<>());
161 dataTransfer.setDeploymentArtifacts(component.getDeploymentArtifacts());
165 private void setRequirements(UiComponentDataTransfer dataTransfer, Component component) {
166 if (component.getRequirements() == null) {
167 dataTransfer.setRequirements(new HashMap<>());
169 dataTransfer.setRequirements(component.getRequirements());
173 private void setCapabilities(UiComponentDataTransfer dataTransfer, Component component) {
174 if (component.getCapabilities() == null) {
175 dataTransfer.setCapabilities(new HashMap<>());
177 dataTransfer.setCapabilities(getFilteredCapabilities(component));
181 private Map<String,List<CapabilityDefinition>> getFilteredCapabilities(Component component) {
182 if(component.getComponentType() != ComponentTypeEnum.SERVICE){
183 return component.getCapabilities().values()
185 .flatMap(Collection::stream)
186 .filter(c -> c.getOwnerType() != CapabilityDataDefinition.OwnerType.GROUP)
187 .collect(groupingBy(CapabilityDefinition::getType, toList()));
189 return component.getCapabilities();
192 private void setComponentInstanceProperties(UiComponentDataTransfer dataTransfer, Component component) {
193 if (component.getComponentInstancesProperties() == null) {
194 dataTransfer.setComponentInstancesProperties(new HashMap<>());
196 dataTransfer.setComponentInstancesProperties(component.getComponentInstancesProperties());
200 private void setComponentInstances(UiComponentDataTransfer dataTransfer, Component component) {
201 if (component.getComponentInstances() == null) {
202 dataTransfer.setComponentInstances(new ArrayList<>());
204 dataTransfer.setComponentInstances(component.getComponentInstances());
208 private void setGroups(UiComponentDataTransfer dataTransfer, Component component) {
209 if (component.getGroups() == null) {
210 dataTransfer.setGroups(new ArrayList<>());
212 dataTransfer.setGroups(component.getGroups());
216 private void setNonExcludedGroups(UiComponentDataTransfer dataTransfer, Component component) {
217 List<GroupDefinition> groups = component.getGroups();
218 if (groups == null) {
219 dataTransfer.setGroups(new ArrayList<>());
221 Set<String> nonExcludedGroupTypes = groupTypeBusinessLogic.getExcludedGroupTypes(component.getActualComponentType());
222 List<GroupDefinition> nonExcludedGroups = groups.stream()
223 .filter(gd -> !nonExcludedGroupTypes.contains(gd.getType()))
225 dataTransfer.setGroups(nonExcludedGroups);
229 private void setNonExcludedPolicies(UiComponentDataTransfer dataTransfer, Component component) {
230 List<PolicyDefinition> policyDefinitions = component.resolvePoliciesList();
231 Set<String> nonExcludedPolicyTypes = policyTypeBusinessLogic.getExcludedPolicyTypes(component.getActualComponentType());
232 List<PolicyDefinition> nonExcludedPolicies = policyDefinitions.stream()
233 .filter(pd -> !nonExcludedPolicyTypes.contains(pd.getPolicyTypeName()))
235 dataTransfer.setPolicies(nonExcludedPolicies);
238 public UiComponentDataTransfer getUiDataTransferFromResourceByParams(Resource resource, List<String> paramsToReturn) {
239 UiResourceDataTransfer dataTransfer = new UiResourceDataTransfer();
241 for (String fieldName : paramsToReturn) {
243 ComponentFieldsEnum field = ComponentFieldsEnum.findByValue(fieldName);
245 log.error(INVALID_INPUT_GIVEN_TO_DATA_CONVERTER, fieldName);
251 setProperties(resource, dataTransfer);
255 setInterfaces(resource, dataTransfer);
259 setDerivedFrom(resource, dataTransfer);
263 setAttributes(resource, dataTransfer);
266 case ADDITIONAL_INFORMATION:
267 setAdditionalInfo(resource, dataTransfer);
270 UiResourceMetadata metadata = new UiResourceMetadata(resource.getCategories(), resource.getDerivedFrom(), (ResourceMetadataDataDefinition) resource.getComponentMetadataDefinition().getMetadataDataDefinition());
271 dataTransfer.setMetadata(metadata);
275 setUiTranferDataByFieldName(dataTransfer, resource, fieldName);
282 private void setProperties(Resource resource, UiResourceDataTransfer dataTransfer) {
283 if (resource.getProperties() == null) {
284 dataTransfer.setProperties(new ArrayList<>());
286 dataTransfer.setProperties(resource.getProperties());
290 private void setInterfaces(Resource resource, UiResourceDataTransfer dataTransfer) {
291 if (resource.getInterfaces() == null) {
292 dataTransfer.setInterfaces(new HashMap<>());
294 dataTransfer.setInterfaces(resource.getInterfaces());
298 private void setDerivedFrom(Resource resource, UiResourceDataTransfer dataTransfer) {
299 if (resource.getDerivedFrom() == null) {
300 dataTransfer.setDerivedFrom(new ArrayList<>());
302 dataTransfer.setDerivedFrom(resource.getDerivedFrom());
306 private void setAttributes(Resource resource, UiResourceDataTransfer dataTransfer) {
307 if (resource.getAttributes() == null) {
308 dataTransfer.setAttributes(new ArrayList<>());
310 dataTransfer.setAttributes(resource.getAttributes());
314 private void setAdditionalInfo(Resource resource, UiResourceDataTransfer dataTransfer) {
315 if (resource.getAdditionalInformation() == null) {
316 dataTransfer.setAdditionalInformation(new ArrayList<>());
318 dataTransfer.setAdditionalInformation(resource.getAdditionalInformation());
322 public UiComponentDataTransfer getUiDataTransferFromServiceByParams(Service service, List<String> paramsToReturn) {
323 UiServiceDataTransfer dataTransfer = new UiServiceDataTransfer();
324 for (String fieldName : paramsToReturn) {
325 ComponentFieldsEnum field = ComponentFieldsEnum.findByValue(fieldName);
327 log.error(INVALID_INPUT_GIVEN_TO_DATA_CONVERTER, fieldName);
331 case SERVICE_API_ARTIFACTS:
332 setServiceApiArtifacts(service, dataTransfer);
335 case FORWARDING_PATHS:
336 setForwardingPaths(service, dataTransfer);
339 UiServiceMetadata metadata = new UiServiceMetadata(service.getCategories(), (ServiceMetadataDataDefinition) service.getComponentMetadataDefinition().getMetadataDataDefinition());
340 dataTransfer.setMetadata(metadata);
343 setInterfaces(service, dataTransfer);
346 setUiTranferDataByFieldName(dataTransfer, service, fieldName);
352 private void setServiceApiArtifacts(Service service, UiServiceDataTransfer dataTransfer) {
353 if (service.getServiceApiArtifacts() == null) {
354 dataTransfer.setServiceApiArtifacts(new org.openecomp.sdc.be.ui.model.SerializedHashMap<>());
356 dataTransfer.setServiceApiArtifacts(service.getServiceApiArtifacts());
360 private void setForwardingPaths(Service service, UiServiceDataTransfer dataTransfer) {
361 if (service.getForwardingPaths() == null) {
362 dataTransfer.setForwardingPaths(new org.openecomp.sdc.be.ui.model.SerializedHashMap<>());
364 dataTransfer.setForwardingPaths(service.getForwardingPaths());
368 private void setInterfaces(Service service, UiServiceDataTransfer dataTransfer) {
369 if (service.getInterfaces() == null) {
370 dataTransfer.setInterfaces(new HashMap<>());
372 dataTransfer.setInterfaces(service.getInterfaces());
376 public static UiComponentMetadata convertToUiComponentMetadata(Component component) {
378 UiComponentMetadata uiComponentMetadata = null;
379 switch (component.getComponentType()) {
381 Resource resource = (Resource) component;
382 uiComponentMetadata = new UiResourceMetadata(component.getCategories(), resource.getDerivedFrom(), (ResourceMetadataDataDefinition) resource.getComponentMetadataDefinition().getMetadataDataDefinition());
385 uiComponentMetadata = new UiServiceMetadata(component.getCategories(), (ServiceMetadataDataDefinition) component.getComponentMetadataDefinition().getMetadataDataDefinition());
390 return uiComponentMetadata;