Support setting interfaces on instances
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / utils / InterfaceOperationUtils.java
index 9c82a29..ae94d98 100644 (file)
 
 package org.openecomp.sdc.be.components.utils;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.openecomp.sdc.be.datatypes.elements.InterfaceDataDefinition;
@@ -24,93 +32,67 @@ import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
 import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
 import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.model.ComponentInstanceInterface;
 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.tosca.ToscaFunctions;
 import org.openecomp.sdc.be.tosca.InterfacesOperationsConverter;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Collectors;
+import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
 
 public class InterfaceOperationUtils {
 
     private InterfaceOperationUtils() {
     }
 
-    public static Optional<InterfaceDefinition> getInterfaceDefinitionFromComponentByInterfaceType(Component component,
-            String interfaceType) {
+    public static Optional<InterfaceDefinition> getInterfaceDefinitionFromComponentByInterfaceType(Component component, String interfaceType) {
         if (MapUtils.isEmpty(component.getInterfaces())) {
             return Optional.empty();
         }
         return component.getInterfaces().values().stream()
-                       .filter(interfaceDefinition -> interfaceDefinition.getType() != null && interfaceDefinition
-                                                                                                       .getType()
-                                                                                                       .equals(interfaceType))
-                       .findAny();
+            .filter(interfaceDefinition -> interfaceDefinition.getType() != null && interfaceDefinition.getType().equals(interfaceType)).findAny();
     }
 
-    public static Optional<InterfaceDefinition> getInterfaceDefinitionFromComponentByInterfaceId(Component component,
-            String interfaceId) {
+    public static Optional<InterfaceDefinition> getInterfaceDefinitionFromComponentByInterfaceId(Component component, String interfaceId) {
         if (MapUtils.isEmpty(component.getInterfaces())) {
             return Optional.empty();
         }
         return component.getInterfaces().values().stream()
-                       .filter(interfaceDefinition -> interfaceDefinition.getUniqueId() != null && interfaceDefinition
-                                                                                                           .getUniqueId()
-                                                                                                           .equals(interfaceId))
-                       .findAny();
+            .filter(interfaceDefinition -> interfaceDefinition.getUniqueId() != null && interfaceDefinition.getUniqueId().equals(interfaceId))
+            .findAny();
     }
 
-    public static Optional<Map.Entry<String, Operation>> getOperationFromInterfaceDefinition(
-            InterfaceDefinition interfaceDefinition, String operationId) {
+    public static Optional<Map.Entry<String, Operation>> getOperationFromInterfaceDefinition(InterfaceDefinition interfaceDefinition,
+                                                                                             String operationId) {
         if (MapUtils.isEmpty(interfaceDefinition.getOperationsMap())) {
             return Optional.empty();
         }
-        return interfaceDefinition.getOperationsMap().entrySet().stream()
-                       .filter(entry -> entry.getValue().getUniqueId().equals(operationId)).findAny();
+        return interfaceDefinition.getOperationsMap().entrySet().stream().filter(entry -> entry.getValue().getUniqueId().equals(operationId))
+            .findAny();
     }
 
-    public static Optional<InterfaceDefinition> getInterfaceDefinitionFromOperationId(List<InterfaceDefinition> interfaces,
-            String operationId) {
+    public static Optional<InterfaceDefinition> getInterfaceDefinitionFromOperationId(List<InterfaceDefinition> interfaces, String operationId) {
         if (CollectionUtils.isEmpty(interfaces)) {
             return Optional.empty();
         }
-        return interfaces.stream()
-                       .filter(interfaceDefinition -> interfaceDefinition.getOperationsMap().containsKey(operationId))
-                       .findAny();
+        return interfaces.stream().filter(interfaceDefinition -> interfaceDefinition.getOperationsMap().containsKey(operationId)).findAny();
     }
 
-    public static boolean isOperationInputMappedToComponentInput(OperationInputDefinition input,
-                                                                                    List<InputDefinition> inputs) {
+    public static boolean isOperationInputMappedToComponentInput(OperationInputDefinition input, List<InputDefinition> inputs) {
         if (CollectionUtils.isEmpty(inputs)) {
             return false;
         }
-
         boolean matchedInput = inputs.stream().anyMatch(inp -> inp.getUniqueId().equals(input.getInputId()));
         if (!matchedInput && input.getInputId().contains(".")) {
-            return inputs.stream()
-                    .anyMatch(inp -> inp.getUniqueId()
-                            .equals(input.getInputId().substring(0, input.getInputId().lastIndexOf('.'))));
+            return inputs.stream().anyMatch(inp -> inp.getUniqueId().equals(input.getInputId().substring(0, input.getInputId().lastIndexOf('.'))));
         }
         return matchedInput;
     }
 
-    public static boolean isOperationInputMappedToOtherOperationOutput(String outputName,
-                                                                       List<OperationOutputDefinition>
-                                                                               otherOperationOutputs) {
+    public static boolean isOperationInputMappedToOtherOperationOutput(String outputName, List<OperationOutputDefinition> otherOperationOutputs) {
         if (CollectionUtils.isEmpty(otherOperationOutputs)) {
             return false;
         }
-        return otherOperationOutputs.stream()
-                .anyMatch(output -> output.getName().equals(outputName));
-
+        return otherOperationOutputs.stream().anyMatch(output -> output.getName().equals(outputName));
     }
 
     public static Map<String, List<String>> createMappedInputPropertyDefaultValue(String propertyName) {
@@ -124,13 +106,11 @@ public class InterfaceOperationUtils {
         return getPropertyMap;
     }
 
-    public static Map<String, List<String>> createMappedCapabilityPropertyDefaultValue(String capabilityName,
-                                                                                       String propertyName) {
+    public static Map<String, List<String>> createMappedCapabilityPropertyDefaultValue(String capabilityName, String propertyName) {
         Map<String, List<String>> getPropertyMap = new HashMap<>();
         List<String> values = new ArrayList<>();
         values.add(InterfacesOperationsConverter.SELF);
         values.add(capabilityName);
-
         if (Objects.nonNull(propertyName) && !propertyName.isEmpty()) {
             values.addAll(Arrays.asList(propertyName.split("\\.")));
         }
@@ -140,18 +120,17 @@ public class InterfaceOperationUtils {
 
     /**
      * Get the list of outputs of other operations of all the interfaces in the component.
+     *
      * @param currentOperationIdentifier Fully qualified operation name e.g. org.test.interfaces.node.lifecycle.Abc.stop
-     * @param componentInterfaces VF or service interfaces
+     * @param componentInterfaces        VF or service interfaces
      */
-
-    public static ListDataDefinition<OperationOutputDefinition> getOtherOperationOutputsOfComponent(
-            String currentOperationIdentifier, Map<String, ? extends InterfaceDataDefinition> componentInterfaces) {
+    public static ListDataDefinition<OperationOutputDefinition> getOtherOperationOutputsOfComponent(String currentOperationIdentifier,
+                                                                                                    Map<String, ? extends InterfaceDataDefinition> componentInterfaces) {
         ListDataDefinition<OperationOutputDefinition> componentOutputs = new ListDataDefinition<>();
         if (MapUtils.isEmpty(componentInterfaces)) {
             return componentOutputs;
         }
-        for (Map.Entry<String, ? extends InterfaceDataDefinition> interfaceDefinitionEntry :
-                componentInterfaces.entrySet()) {
+        for (Map.Entry<String, ? extends InterfaceDataDefinition> interfaceDefinitionEntry : componentInterfaces.entrySet()) {
             String interfaceName = interfaceDefinitionEntry.getKey();
             final Map<String, OperationDataDefinition> operations = interfaceDefinitionEntry.getValue().getOperations();
             if (MapUtils.isEmpty(operations)) {
@@ -170,13 +149,16 @@ public class InterfaceOperationUtils {
 
     /**
      * Create the value for operation input mapped to an operation output.
+     *
      * @param propertyName the mapped other operation output full name
      * @return input map for tosca
      */
     public static Map<String, List<String>> createMappedOutputDefaultValue(String componentName, String propertyName) {
         Map<String, List<String>> getOperationOutputMap = new HashMap<>();
         //For operation input mapped to other operation output parameter, the mapped property value
+
         // should be of the format <interface name>.<operation name>.<output parameter name>
+
         // Operation name and output param name should not contain "."
         List<String> defaultMappedOperationOutputValue = new ArrayList<>();
         String[] tokens = propertyName.split("\\.");
@@ -184,26 +166,21 @@ public class InterfaceOperationUtils {
             defaultMappedOperationOutputValue.add(componentName);
             String outputPropertyName = tokens[tokens.length - 1];
             String operationName = tokens[tokens.length - 2];
-            String mappedPropertyInterfaceType =
-                    propertyName.substring(0, propertyName.indexOf(operationName + '.' + outputPropertyName) - 1);
-            defaultMappedOperationOutputValue.addAll(Arrays.asList(mappedPropertyInterfaceType, operationName,
-                    outputPropertyName));
-            getOperationOutputMap.put(ToscaFunctions.GET_OPERATION_OUTPUT.getFunctionName(),
-                    defaultMappedOperationOutputValue);
+            String mappedPropertyInterfaceType = propertyName.substring(0, propertyName.indexOf(operationName + '.' + outputPropertyName) - 1);
+            defaultMappedOperationOutputValue.addAll(Arrays.asList(mappedPropertyInterfaceType, operationName, outputPropertyName));
+            getOperationOutputMap.put(ToscaFunctions.GET_OPERATION_OUTPUT.getFunctionName(), defaultMappedOperationOutputValue);
         }
         return getOperationOutputMap;
     }
 
     public static String getOperationOutputName(String fullOutputIdentifier) {
-        return fullOutputIdentifier.contains(".")
-                ? fullOutputIdentifier.substring(fullOutputIdentifier.lastIndexOf('.') + 1)
-                : fullOutputIdentifier;
+        return fullOutputIdentifier.contains(".") ? fullOutputIdentifier.substring(fullOutputIdentifier.lastIndexOf('.') + 1) : fullOutputIdentifier;
     }
 
     public static boolean isArtifactInUse(Component component, String operationId, String artifactUniqueId) {
         return MapUtils.emptyIfNull(component.getInterfaces()).values().stream()
-                       .filter(o -> MapUtils.isNotEmpty(o.getOperations()) && !o.getOperations().containsKey(operationId))
-                       .flatMap(o -> o.getOperations().values().stream()).collect(Collectors.toList()).stream()
-                       .anyMatch(op -> op.getImplementation().getUniqueId().equals(artifactUniqueId));
+            .filter(o -> MapUtils.isNotEmpty(o.getOperations()) && !o.getOperations().containsKey(operationId))
+            .flatMap(o -> o.getOperations().values().stream()).collect(Collectors.toList()).stream()
+            .anyMatch(op -> op.getImplementation().getUniqueId().equals(artifactUniqueId));
     }
 }