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.model.jsontitan.utils;
18 import org.apache.commons.collections.CollectionUtils;
19 import org.apache.commons.collections.MapUtils;
20 import org.openecomp.sdc.be.datatypes.elements.InputDataDefinition;
21 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
22 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
23 import org.openecomp.sdc.be.model.InputDefinition;
24 import org.openecomp.sdc.be.model.InterfaceDefinition;
25 import org.openecomp.sdc.be.model.Operation;
26 import org.openecomp.sdc.be.model.Resource;
28 import java.util.ArrayList;
29 import java.util.Collection;
30 import java.util.Collections;
31 import java.util.Formatter;
32 import java.util.List;
34 import java.util.Optional;
35 import java.util.stream.Collectors;
37 public class InterfaceUtils {
39 public static final String INTERFACE_TOSCA_RESOURCE_NAME = "org.openecomp.interfaces.node.lifecycle.%s";
41 public static final Optional<InterfaceDefinition> getInterfaceDefinitionFromToscaName(
42 Collection<InterfaceDefinition> interfaces,
43 String resourceName) {
44 if (CollectionUtils.isEmpty(interfaces)) {
45 return Optional.empty();
48 String toscaName = createInterfaceToscaResourceName(resourceName);
49 return interfaces.stream().filter(
50 interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
51 .getToscaResourceName().equals(toscaName)).findAny();
54 public static Collection<InterfaceDefinition> getInterfaceDefinitionListFromToscaName(Collection<InterfaceDefinition> interfaces,
55 String resourceName) {
56 if(CollectionUtils.isEmpty(interfaces)){
57 return CollectionUtils.EMPTY_COLLECTION;
60 String toscaName = createInterfaceToscaResourceName(resourceName);
61 return interfaces.stream().filter(
62 interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
63 .getToscaResourceName().equals(toscaName)).collect(Collectors.toList());
66 public static String createInterfaceToscaResourceName(String resourceName) {
67 StringBuilder sb = new StringBuilder();
68 Formatter formatter = new Formatter(sb);
69 return formatter.format(INTERFACE_TOSCA_RESOURCE_NAME, resourceName).toString();
72 public static Map<String, Operation> getInterfaceOperationsFromInterfaces(
73 Map<String, InterfaceDefinition> interfaces,
74 Resource resource) throws IllegalStateException {
75 if (MapUtils.isEmpty(interfaces)) {
76 return Collections.EMPTY_MAP;
78 Optional<InterfaceDefinition> optionalInterface = getInterfaceDefinitionFromToscaName(
79 interfaces.values(), resource.getName());
80 if (!optionalInterface.isPresent()) {
81 return Collections.EMPTY_MAP;
83 InterfaceDefinition interfaceDefinition = optionalInterface.get();
84 interfaceDefinition.getOperationsMap().values().stream()
85 .forEach(operation -> createInput(operation, resource.getInputs()));
86 return interfaceDefinition.getOperationsMap();
90 private static void createInput(Operation operation, List<InputDefinition> inputs) throws IllegalStateException {
91 ListDataDefinition<OperationInputDefinition> inputDefinitionListDataDefinition = operation.getInputs();
92 if (inputDefinitionListDataDefinition != null) {
95 List<OperationInputDefinition> listToscaDataDefinition = inputDefinitionListDataDefinition
96 .getListToscaDataDefinition();
97 List<OperationInputDefinition> convertedInputs = listToscaDataDefinition.stream()
98 .map(input -> convertInput(input, inputs))
99 .collect(Collectors.toList());
100 inputDefinitionListDataDefinition.getListToscaDataDefinition().clear();
101 inputDefinitionListDataDefinition.getListToscaDataDefinition().addAll(convertedInputs);
104 private static OperationInputDefinition convertInput(OperationInputDefinition input,
105 List<InputDefinition> inputs) throws IllegalStateException {
106 Optional<InputDefinition> anyInputDefinition = inputs.stream()
107 .filter(inp -> inp.getUniqueId().equals(input.getUniqueId())).findAny();
108 if (anyInputDefinition.isPresent()) {
109 return new OperationInputDefinition(input.getLabel(),new InputDataDefinition(anyInputDefinition.get()));
111 throw new IllegalStateException("Could not find input :"+ input.getLabel());
114 public static List<Operation> getOperationsFromInterface(Map<String, InterfaceDefinition> interfaces) {
115 List<Operation> operationData = new ArrayList<>();
116 if (!MapUtils.isEmpty(interfaces)) {
117 operationData = interfaces.values().stream()
118 .filter(a -> MapUtils.isNotEmpty(a.getOperationsMap()))
119 .map(a-> new ArrayList<>(a.getOperationsMap().values())).flatMap(List::stream).collect(Collectors.toList());
121 return operationData;