diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java new file mode 100644 index 0000000000..df9702949a --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java @@ -0,0 +1,123 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.openecomp.sdc.be.model.jsontitan.utils; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; +import org.openecomp.sdc.be.datatypes.elements.InputDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition; +import org.openecomp.sdc.be.model.InputDefinition; +import org.openecomp.sdc.be.model.InterfaceDefinition; +import org.openecomp.sdc.be.model.Operation; +import org.openecomp.sdc.be.model.Resource; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Formatter; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +public class InterfaceUtils { + + public static final String INTERFACE_TOSCA_RESOURCE_NAME = "org.openecomp.interfaces.node.lifecycle.%s"; + + public static final Optional<InterfaceDefinition> getInterfaceDefinitionFromToscaName( + Collection<InterfaceDefinition> interfaces, + String resourceName) { + if (CollectionUtils.isEmpty(interfaces)) { + return Optional.empty(); + } + + String toscaName = createInterfaceToscaResourceName(resourceName); + return interfaces.stream().filter( + interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition + .getToscaResourceName().equals(toscaName)).findAny(); + } + + public static Collection<InterfaceDefinition> getInterfaceDefinitionListFromToscaName(Collection<InterfaceDefinition> interfaces, + String resourceName) { + if(CollectionUtils.isEmpty(interfaces)){ + return CollectionUtils.EMPTY_COLLECTION; + } + + String toscaName = createInterfaceToscaResourceName(resourceName); + return interfaces.stream().filter( + interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition + .getToscaResourceName().equals(toscaName)).collect(Collectors.toList()); + } + + public static String createInterfaceToscaResourceName(String resourceName) { + StringBuilder sb = new StringBuilder(); + Formatter formatter = new Formatter(sb); + return formatter.format(INTERFACE_TOSCA_RESOURCE_NAME, resourceName).toString(); + } + + public static Map<String, Operation> getInterfaceOperationsFromInterfaces( + Map<String, InterfaceDefinition> interfaces, + Resource resource) throws IllegalStateException { + if (MapUtils.isEmpty(interfaces)) { + return Collections.EMPTY_MAP; + } + Optional<InterfaceDefinition> optionalInterface = getInterfaceDefinitionFromToscaName( + interfaces.values(), resource.getName()); + if (!optionalInterface.isPresent()) { + return Collections.EMPTY_MAP; + } + InterfaceDefinition interfaceDefinition = optionalInterface.get(); + interfaceDefinition.getOperationsMap().values().stream() + .forEach(operation -> createInput(operation, resource.getInputs())); + return interfaceDefinition.getOperationsMap(); + + } + + private static void createInput(Operation operation, List<InputDefinition> inputs) throws IllegalStateException { + ListDataDefinition<OperationInputDefinition> inputDefinitionListDataDefinition = operation.getInputs(); + if (inputDefinitionListDataDefinition != null) { + return; + } + List<OperationInputDefinition> listToscaDataDefinition = inputDefinitionListDataDefinition + .getListToscaDataDefinition(); + List<OperationInputDefinition> convertedInputs = listToscaDataDefinition.stream() + .map(input -> convertInput(input, inputs)) + .collect(Collectors.toList()); + inputDefinitionListDataDefinition.getListToscaDataDefinition().clear(); + inputDefinitionListDataDefinition.getListToscaDataDefinition().addAll(convertedInputs); + } + + private static OperationInputDefinition convertInput(OperationInputDefinition input, + List<InputDefinition> inputs) throws IllegalStateException { + Optional<InputDefinition> anyInputDefinition = inputs.stream() + .filter(inp -> inp.getUniqueId().equals(input.getUniqueId())).findAny(); + if (anyInputDefinition.isPresent()) { + return new OperationInputDefinition(input.getLabel(),new InputDataDefinition(anyInputDefinition.get())); + } + throw new IllegalStateException("Could not find input :"+ input.getLabel()); + } + + public static List<Operation> getOperationsFromInterface(Map<String, InterfaceDefinition> interfaces) { + List<Operation> operationData = new ArrayList<>(); + if (!MapUtils.isEmpty(interfaces)) { + operationData = interfaces.values().stream() + .filter(a -> MapUtils.isNotEmpty(a.getOperationsMap())) + .map(a-> new ArrayList<>(a.getOperationsMap().values())).flatMap(List::stream).collect(Collectors.toList()); + } + return operationData; + } +} |