Fix for substitution filter properties
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / tosca / utils / SubstitutionFilterConverter.java
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2020 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        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.
15  *
16  *  SPDX-License-Identifier: Apache-2.0
17  *  ============LICENSE_END=========================================================
18  */
19
20 package org.openecomp.sdc.be.tosca.utils;
21
22 import java.util.Collections;
23 import java.util.List;
24 import java.util.stream.Collectors;
25 import org.apache.commons.collections.CollectionUtils;
26 import org.openecomp.sdc.be.datamodel.utils.ConstraintConvertor;
27 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
28 import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterCapabilityDataDefinition;
29 import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterPropertyDataDefinition;
30 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
31 import org.openecomp.sdc.be.ui.model.UIConstraint;
32 import org.openecomp.sdc.be.ui.model.UINodeFilter;
33
34 public class SubstitutionFilterConverter {
35
36     public UINodeFilter convertToUi(final SubstitutionFilterDataDefinition inSubstitutionFilter) {
37         final UINodeFilter uiNodeFilter = new UINodeFilter();
38         final ConstraintConvertor constraintConvertor = new ConstraintConvertor();
39         final List<UIConstraint> uiPropertyFilters = extractPropertyFilter(inSubstitutionFilter, constraintConvertor);
40         if (!uiPropertyFilters.isEmpty()) {
41             uiNodeFilter.setProperties(uiPropertyFilters);
42         }
43
44         final List<UIConstraint> uiCapabilityFilters =
45             extractCapabilitiesFilter(inSubstitutionFilter, constraintConvertor);
46         if (!uiCapabilityFilters.isEmpty()) {
47             uiNodeFilter.setCapabilities(uiCapabilityFilters);
48         }
49
50         return uiNodeFilter;
51     }
52
53     private List<UIConstraint> extractPropertyFilter(final SubstitutionFilterDataDefinition substitutionFilter,
54                                                      final ConstraintConvertor constraintConvertor) {
55         final ListDataDefinition<RequirementSubstitutionFilterPropertyDataDefinition> substitutionFilterProperties =
56             substitutionFilter.getProperties();
57         if (substitutionFilterProperties != null && !substitutionFilterProperties.isEmpty()
58             && CollectionUtils.isNotEmpty(substitutionFilterProperties.getListToscaDataDefinition())) {
59             return substitutionFilterProperties.getListToscaDataDefinition()
60                 .stream()
61                 .map(property -> property.getConstraints().iterator().next())
62                 .map(constraintConvertor::convert)
63                 .collect(Collectors.toList());
64         }
65
66         return Collections.emptyList();
67     }
68
69     private List<UIConstraint> extractCapabilitiesFilter(final SubstitutionFilterDataDefinition substitutionFilter,
70                                                          final ConstraintConvertor constraintConvertor) {
71         final ListDataDefinition<RequirementSubstitutionFilterCapabilityDataDefinition> substitutionFilterCapabilities =
72             substitutionFilter.getCapabilities();
73         if (substitutionFilterCapabilities != null && !substitutionFilterCapabilities.isEmpty()
74             && CollectionUtils.isNotEmpty(substitutionFilterCapabilities.getListToscaDataDefinition())) {
75             return substitutionFilterCapabilities
76                 .getListToscaDataDefinition()
77                 .stream()
78                 .map(capabilities -> capabilities.getProperties().getListToscaDataDefinition().iterator().next())
79                 .map(property -> property.getConstraints().iterator().next())
80                 .map(constraintConvertor::convert)
81                 .collect(Collectors.toList());
82         }
83
84         return Collections.emptyList();
85     }
86 }