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
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.
16 * SPDX-License-Identifier: Apache-2.0
17 * ============LICENSE_END=========================================================
20 package org.openecomp.sdc.be.tosca.utils;
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;
34 public class SubstitutionFilterConverter {
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);
44 final List<UIConstraint> uiCapabilityFilters =
45 extractCapabilitiesFilter(inSubstitutionFilter, constraintConvertor);
46 if (!uiCapabilityFilters.isEmpty()) {
47 uiNodeFilter.setCapabilities(uiCapabilityFilters);
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()
61 .map(property -> property.getConstraints().iterator().next())
62 .map(constraintConvertor::convert)
63 .collect(Collectors.toList());
66 return Collections.emptyList();
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()
78 .map(capabilities -> capabilities.getProperties().getListToscaDataDefinition().iterator().next())
79 .map(property -> property.getConstraints().iterator().next())
80 .map(constraintConvertor::convert)
81 .collect(Collectors.toList());
84 return Collections.emptyList();