c0830996290bac89a360af97abd60d585751b57c
[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 package org.openecomp.sdc.be.tosca.utils;
20
21 import java.util.Collections;
22 import java.util.List;
23 import java.util.stream.Collectors;
24 import org.apache.commons.collections.CollectionUtils;
25 import org.openecomp.sdc.be.datamodel.utils.ConstraintConvertor;
26 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
27 import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterCapabilityDataDefinition;
28 import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterPropertyDataDefinition;
29 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
30 import org.openecomp.sdc.be.ui.model.UIConstraint;
31 import org.openecomp.sdc.be.ui.model.UINodeFilter;
32
33 public class SubstitutionFilterConverter {
34
35     public UINodeFilter convertToUi(final SubstitutionFilterDataDefinition inSubstitutionFilter) {
36         final UINodeFilter uiNodeFilter = new UINodeFilter();
37         final ConstraintConvertor constraintConvertor = new ConstraintConvertor();
38         final List<UIConstraint> uiPropertyFilters = extractPropertyFilter(inSubstitutionFilter, constraintConvertor);
39         if (!uiPropertyFilters.isEmpty()) {
40             uiNodeFilter.setProperties(uiPropertyFilters);
41         }
42         final List<UIConstraint> uiCapabilityFilters = extractCapabilitiesFilter(inSubstitutionFilter, constraintConvertor);
43         if (!uiCapabilityFilters.isEmpty()) {
44             uiNodeFilter.setCapabilities(uiCapabilityFilters);
45         }
46         return uiNodeFilter;
47     }
48
49     private List<UIConstraint> extractPropertyFilter(final SubstitutionFilterDataDefinition substitutionFilter,
50                                                      final ConstraintConvertor constraintConvertor) {
51         final ListDataDefinition<RequirementSubstitutionFilterPropertyDataDefinition> substitutionFilterProperties = substitutionFilter
52             .getProperties();
53         if (substitutionFilterProperties != null && !substitutionFilterProperties.isEmpty() && CollectionUtils
54             .isNotEmpty(substitutionFilterProperties.getListToscaDataDefinition())) {
55             return substitutionFilterProperties.getListToscaDataDefinition().stream().map(property -> property.getConstraints().iterator().next())
56                 .map(constraintConvertor::convert).collect(Collectors.toList());
57         }
58         return Collections.emptyList();
59     }
60
61     private List<UIConstraint> extractCapabilitiesFilter(final SubstitutionFilterDataDefinition substitutionFilter,
62                                                          final ConstraintConvertor constraintConvertor) {
63         final ListDataDefinition<RequirementSubstitutionFilterCapabilityDataDefinition> substitutionFilterCapabilities = substitutionFilter
64             .getCapabilities();
65         if (substitutionFilterCapabilities != null && !substitutionFilterCapabilities.isEmpty() && CollectionUtils
66             .isNotEmpty(substitutionFilterCapabilities.getListToscaDataDefinition())) {
67             return substitutionFilterCapabilities.getListToscaDataDefinition().stream()
68                 .map(capabilities -> capabilities.getProperties().getListToscaDataDefinition().iterator().next())
69                 .map(property -> property.getConstraints().iterator().next()).map(constraintConvertor::convert).collect(Collectors.toList());
70         }
71         return Collections.emptyList();
72     }
73 }