2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.openecomp.sdc.be.components.impl.utils;
18 import java.util.Collection;
19 import java.util.List;
21 import java.util.stream.Collectors;
22 import org.apache.commons.collections4.CollectionUtils;
23 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
24 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
25 import org.openecomp.sdc.be.datatypes.elements.PropertyFilterDataDefinition;
26 import org.openecomp.sdc.be.datatypes.elements.RequirementNodeFilterCapabilityDataDefinition;
27 import org.openecomp.sdc.be.model.UploadNodeFilterCapabilitiesInfo;
28 import org.openecomp.sdc.be.model.UploadNodeFilterInfo;
29 import org.openecomp.sdc.be.model.UploadNodeFilterPropertyInfo;
30 import org.openecomp.sdc.be.utils.PropertyFilterConstraintDataDefinitionHelper;
32 public class CINodeFilterUtils {
34 public CINodeFilterDataDefinition getNodeFilterDataDefinition(final UploadNodeFilterInfo uploadNodeFilterInfo, final String uniqueId) {
35 final var nodeFilterDataDefinition = new CINodeFilterDataDefinition();
36 nodeFilterDataDefinition.setName(uploadNodeFilterInfo.getName());
37 final List<PropertyFilterDataDefinition> propertyFilterList = uploadNodeFilterInfo.getProperties().stream()
38 .map(this::buildOnePropertyFilterForEachConstraint)
39 .flatMap(Collection::stream)
40 .collect(Collectors.toList());
41 final ListDataDefinition<PropertyFilterDataDefinition> listDataDefinition = new ListDataDefinition<>();
42 listDataDefinition.getListToscaDataDefinition().addAll(propertyFilterList);
43 nodeFilterDataDefinition.setProperties(listDataDefinition);
44 nodeFilterDataDefinition.setCapabilities(convertCapabilities(uploadNodeFilterInfo.getCapabilities()));
45 nodeFilterDataDefinition.setID(uniqueId);
46 nodeFilterDataDefinition.setTosca_id(uploadNodeFilterInfo.getTosca_id());
47 return nodeFilterDataDefinition;
50 private ListDataDefinition<RequirementNodeFilterCapabilityDataDefinition> convertCapabilities(
51 Map<String, UploadNodeFilterCapabilitiesInfo> capabilities) {
52 ListDataDefinition<RequirementNodeFilterCapabilityDataDefinition> listDataDefinition = new ListDataDefinition<>();
53 for (UploadNodeFilterCapabilitiesInfo capability : capabilities.values()) {
54 RequirementNodeFilterCapabilityDataDefinition requirementNodeFilterCapabilityDataDefinition = convertCapability(capability);
55 listDataDefinition.add(requirementNodeFilterCapabilityDataDefinition);
57 return listDataDefinition;
60 private RequirementNodeFilterCapabilityDataDefinition convertCapability(UploadNodeFilterCapabilitiesInfo capability) {
61 RequirementNodeFilterCapabilityDataDefinition retVal = new RequirementNodeFilterCapabilityDataDefinition();
62 retVal.setName(capability.getName());
63 List<PropertyFilterDataDefinition> props = capability.getProperties().stream().map(this::buildProperty)
64 .collect(Collectors.toList());
65 ListDataDefinition<PropertyFilterDataDefinition> propsList = new ListDataDefinition<>();
66 propsList.getListToscaDataDefinition().addAll(props);
67 retVal.setProperties(propsList);
71 private PropertyFilterDataDefinition buildProperty(final UploadNodeFilterPropertyInfo uploadNodeFilterPropertyInfo) {
72 final var propertyFilter = new PropertyFilterDataDefinition();
73 propertyFilter.setName(uploadNodeFilterPropertyInfo.getName());
74 final List<String> propertyConstraints = uploadNodeFilterPropertyInfo.getValues();
75 if (CollectionUtils.isNotEmpty(propertyConstraints)) {
76 propertyFilter.setConstraints(
77 propertyConstraints.stream()
78 .map(PropertyFilterConstraintDataDefinitionHelper::convertLegacyConstraint)
79 .collect(Collectors.toList())
82 return propertyFilter;
85 private List<PropertyFilterDataDefinition> buildOnePropertyFilterForEachConstraint(final UploadNodeFilterPropertyInfo uploadNodeFilterProperty) {
86 final List<String> propertyConstraints = uploadNodeFilterProperty.getValues();
87 if (CollectionUtils.isNotEmpty(propertyConstraints)) {
88 return propertyConstraints.stream()
89 .map(PropertyFilterConstraintDataDefinitionHelper::convertLegacyConstraint)
90 .map(propertyFilterConstraint -> {
91 final var propertyFilter = new PropertyFilterDataDefinition();
92 propertyFilter.setName(uploadNodeFilterProperty.getName());
93 propertyFilter.setConstraints(List.of(propertyFilterConstraint));
94 return propertyFilter;
95 }).collect(Collectors.toList());
97 final var propertyFilter = new PropertyFilterDataDefinition();
98 propertyFilter.setName(uploadNodeFilterProperty.getName());
99 return List.of(propertyFilter);