Reformat catalog-be
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / property / PropertyDeclarationOrchestrator.java
index c60c8f2..e5367c4 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
 package org.openecomp.sdc.be.components.property;
 
+import static org.apache.commons.collections.MapUtils.isNotEmpty;
+
 import fj.data.Either;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.openecomp.sdc.be.components.property.propertytopolicydeclarators.ComponentInstancePropertyToPolicyDeclarator;
@@ -34,15 +40,7 @@ import org.openecomp.sdc.be.model.PolicyDefinition;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.common.log.wrappers.Logger;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import static org.apache.commons.collections.MapUtils.isNotEmpty;
-
-@org.springframework.stereotype.Component
+@org.springframework.stereotype.Component("propertyDeclarationOrchestrator")
 public class PropertyDeclarationOrchestrator {
 
     private static final Logger log = Logger.getLogger(PropertyDeclarationOrchestrator.class);
@@ -57,10 +55,11 @@ public class PropertyDeclarationOrchestrator {
     private ComponentInstancePropertyToPolicyDeclarator componentInstancePropertyToPolicyDeclarator;
 
     public PropertyDeclarationOrchestrator(ComponentInstanceInputPropertyDeclarator componentInstanceInputPropertyDeclarator,
-            ComponentInstancePropertyDeclarator componentInstancePropertyDeclarator, PolicyPropertyDeclarator policyPropertyDeclarator,
-            GroupPropertyDeclarator groupPropertyDeclarator, ComponentPropertyDeclarator servicePropertyDeclarator,
-            ComponentPropertyToPolicyDeclarator componentPropertyToPolicyDeclarator,
-            ComponentInstancePropertyToPolicyDeclarator componentInstancePropertyToPolicyDeclarator) {
+                                           ComponentInstancePropertyDeclarator componentInstancePropertyDeclarator,
+                                           PolicyPropertyDeclarator policyPropertyDeclarator, GroupPropertyDeclarator groupPropertyDeclarator,
+                                           ComponentPropertyDeclarator servicePropertyDeclarator,
+                                           ComponentPropertyToPolicyDeclarator componentPropertyToPolicyDeclarator,
+                                           ComponentInstancePropertyToPolicyDeclarator componentInstancePropertyToPolicyDeclarator) {
         this.componentInstanceInputPropertyDeclarator = componentInstanceInputPropertyDeclarator;
         this.componentInstancePropertyDeclarator = componentInstancePropertyDeclarator;
         this.policyPropertyDeclarator = policyPropertyDeclarator;
@@ -68,11 +67,14 @@ public class PropertyDeclarationOrchestrator {
         this.servicePropertyDeclarator = servicePropertyDeclarator;
         this.componentPropertyToPolicyDeclarator = componentPropertyToPolicyDeclarator;
         this.componentInstancePropertyToPolicyDeclarator = componentInstancePropertyToPolicyDeclarator;
-        propertyDeclaratorsToInput = Arrays.asList(componentInstanceInputPropertyDeclarator, componentInstancePropertyDeclarator, policyPropertyDeclarator, groupPropertyDeclarator, servicePropertyDeclarator);
+        propertyDeclaratorsToInput = Arrays
+            .asList(componentInstanceInputPropertyDeclarator, componentInstancePropertyDeclarator, policyPropertyDeclarator, groupPropertyDeclarator,
+                servicePropertyDeclarator);
         propertyDeclaratorsToPolicy = Arrays.asList(componentPropertyToPolicyDeclarator, componentInstancePropertyToPolicyDeclarator);
     }
 
-    public Either<List<InputDefinition>, StorageOperationStatus> declarePropertiesToInputs(Component component, ComponentInstInputsMap componentInstInputsMap) {
+    public Either<List<InputDefinition>, StorageOperationStatus> declarePropertiesToInputs(Component component,
+                                                                                           ComponentInstInputsMap componentInstInputsMap) {
         updatePropertiesConstraints(component, componentInstInputsMap);
         PropertyDeclarator propertyDeclarator = getPropertyDeclarator(componentInstInputsMap);
         Pair<String, List<ComponentInstancePropInput>> propsToDeclare = componentInstInputsMap.resolvePropertiesToDeclare();
@@ -80,63 +82,63 @@ public class PropertyDeclarationOrchestrator {
     }
 
     private void updatePropertiesConstraints(Component component, ComponentInstInputsMap componentInstInputsMap) {
-        componentInstInputsMap.getComponentInstanceProperties().forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesProperties(), k, v));
-        componentInstInputsMap.getComponentInstanceInputsMap().forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesInputs(), k, v));
+        componentInstInputsMap.getComponentInstanceProperties()
+            .forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesProperties(), k, v));
+        componentInstInputsMap.getComponentInstanceInputsMap()
+            .forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesInputs(), k, v));
         componentInstInputsMap.getGroupProperties().forEach((k, v) -> updatePropsConstraints(component.safeGetPolicyProperties(), k, v));
         componentInstInputsMap.getPolicyProperties().forEach((k, v) -> updatePropsConstraints(component.safeGetGroupsProperties(), k, v));
     }
 
-    public Either<List<PolicyDefinition>, StorageOperationStatus> declarePropertiesToPolicies(Component component, ComponentInstInputsMap componentInstInputsMap) {
+    public Either<List<PolicyDefinition>, StorageOperationStatus> declarePropertiesToPolicies(Component component,
+                                                                                              ComponentInstInputsMap componentInstInputsMap) {
         PropertyDeclarator propertyDeclarator = getPropertyDeclarator(componentInstInputsMap);
         Pair<String, List<ComponentInstancePropInput>> propsToDeclare = componentInstInputsMap.resolvePropertiesToDeclare();
         return propertyDeclarator.declarePropertiesAsPolicies(component, propsToDeclare.getLeft(), propsToDeclare.getRight());
     }
 
-    public Either<InputDefinition, StorageOperationStatus> declarePropertiesToListInput(Component component, ComponentInstInputsMap componentInstInputsMap, InputDefinition input) {
+    public Either<InputDefinition, StorageOperationStatus> declarePropertiesToListInput(Component component,
+                                                                                        ComponentInstInputsMap componentInstInputsMap,
+                                                                                        InputDefinition input) {
         PropertyDeclarator propertyDeclarator = getPropertyDeclarator(componentInstInputsMap);
         Pair<String, List<ComponentInstancePropInput>> propsToDeclare = componentInstInputsMap.resolvePropertiesToDeclare();
         log.debug("#declarePropertiesToInputs: componentId={}, propOwnerId={}", component.getUniqueId(), propsToDeclare.getLeft());
         return propertyDeclarator.declarePropertiesAsListInput(component, propsToDeclare.getLeft(), propsToDeclare.getRight(), input);
     }
 
-    private <T extends PropertyDataDefinition> void updatePropsConstraints(Map<String, List<T>> instancesProperties , String ownerId, List<ComponentInstancePropInput> inputs) {
-        Optional<List<T>> propertiesOpt = instancesProperties.entrySet()
-                .stream()
-                .filter(e -> e.getKey().equals(ownerId))
-                .map(Map.Entry::getValue)
-                .findFirst();
-        if(propertiesOpt.isPresent()){
-            Map<String, PropertyDataDefinition> instProps = propertiesOpt.get()
-                    .stream()
-                    .collect(Collectors.toMap(PropertyDataDefinition::getName, p->p));
-            inputs.stream()
-                    .filter(i->instProps.containsKey(i.getName()))
-                    .forEach(i->updatePropConstraints(i, instProps.get(i.getName())));
-
+    private <T extends PropertyDataDefinition> void updatePropsConstraints(Map<String, List<T>> instancesProperties, String ownerId,
+                                                                           List<ComponentInstancePropInput> inputs) {
+        Optional<List<T>> propertiesOpt = instancesProperties.entrySet().stream().filter(e -> e.getKey().equals(ownerId)).map(Map.Entry::getValue)
+            .findFirst();
+        if (propertiesOpt.isPresent()) {
+            Map<String, PropertyDataDefinition> instProps = propertiesOpt.get().stream()
+                .collect(Collectors.toMap(PropertyDataDefinition::getName, p -> p));
+            inputs.stream().filter(i -> instProps.containsKey(i.getName())).forEach(i -> updatePropConstraints(i, instProps.get(i.getName())));
         }
     }
 
     private void updatePropConstraints(PropertyDataDefinition input, PropertyDataDefinition property) {
-        if(CollectionUtils.isNotEmpty(property.getPropertyConstraints())){
+        if (CollectionUtils.isNotEmpty(property.getPropertyConstraints())) {
             input.setPropertyConstraints(property.getPropertyConstraints());
-        } else if(property.getSchemaProperty() != null && CollectionUtils.isNotEmpty(property.getSchemaProperty().getPropertyConstraints())){
+        } else if (property.getSchemaProperty() != null && CollectionUtils.isNotEmpty(property.getSchemaProperty().getPropertyConstraints())) {
             input.setPropertyConstraints(property.getSchemaProperty().getPropertyConstraints());
         }
     }
 
-
     public StorageOperationStatus unDeclarePropertiesAsInputs(Component component, InputDefinition inputToDelete) {
-        log.debug("#unDeclarePropertiesAsInputs - removing input declaration for input {} on component {}", inputToDelete.getName(), component.getUniqueId());
+        log.debug("#unDeclarePropertiesAsInputs - removing input declaration for input {} on component {}", inputToDelete.getName(),
+            component.getUniqueId());
         for (PropertyDeclarator propertyDeclarator : propertyDeclaratorsToInput) {
             StorageOperationStatus storageOperationStatus = propertyDeclarator.unDeclarePropertiesAsInputs(component, inputToDelete);
             if (StorageOperationStatus.OK != storageOperationStatus) {
-                log.debug("#unDeclarePropertiesAsInputs - failed to remove input declaration for input {} on component {}. reason {}", inputToDelete.getName(), component.getUniqueId(), storageOperationStatus);
+                log.debug("#unDeclarePropertiesAsInputs - failed to remove input declaration for input {} on component {}. reason {}",
+                    inputToDelete.getName(), component.getUniqueId(), storageOperationStatus);
                 return storageOperationStatus;
             }
         }
         return StorageOperationStatus.OK;
-
     }
+
     /**
      * Un declare properties declared as list type input
      *
@@ -145,16 +147,17 @@ public class PropertyDeclarationOrchestrator {
      * @return
      */
     public StorageOperationStatus unDeclarePropertiesAsListInputs(Component component, InputDefinition inputToDelete) {
-        log.debug("#unDeclarePropertiesAsListInputs - removing input declaration for input {} on component {}", inputToDelete.getName(), component.getUniqueId());
+        log.debug("#unDeclarePropertiesAsListInputs - removing input declaration for input {} on component {}", inputToDelete.getName(),
+            component.getUniqueId());
         for (PropertyDeclarator propertyDeclarator : propertyDeclaratorsToInput) {
             StorageOperationStatus storageOperationStatus = propertyDeclarator.unDeclarePropertiesAsListInputs(component, inputToDelete);
             if (StorageOperationStatus.OK != storageOperationStatus) {
-                log.debug("#unDeclarePropertiesAsListInputs - failed to remove input declaration for input {} on component {}. reason {}", inputToDelete.getName(), component.getUniqueId(), storageOperationStatus);
+                log.debug("#unDeclarePropertiesAsListInputs - failed to remove input declaration for input {} on component {}. reason {}",
+                    inputToDelete.getName(), component.getUniqueId(), storageOperationStatus);
                 return storageOperationStatus;
             }
         }
         return StorageOperationStatus.OK;
-
     }
 
     /**
@@ -169,20 +172,17 @@ public class PropertyDeclarationOrchestrator {
     }
 
     public StorageOperationStatus unDeclarePropertiesAsPolicies(Component component, PolicyDefinition policyToDelete) {
-        log.debug("#unDeclarePropertiesAsInputs - removing policy declaration for input {} on component {}", policyToDelete
-                                                                                                                     .getName(), component.getUniqueId());
-        for(PropertyDeclarator propertyDeclarator : propertyDeclaratorsToPolicy) {
-            StorageOperationStatus storageOperationStatus =
-                    propertyDeclarator.unDeclarePropertiesAsPolicies(component, policyToDelete);
+        log.debug("#unDeclarePropertiesAsInputs - removing policy declaration for input {} on component {}", policyToDelete.getName(),
+            component.getUniqueId());
+        for (PropertyDeclarator propertyDeclarator : propertyDeclaratorsToPolicy) {
+            StorageOperationStatus storageOperationStatus = propertyDeclarator.unDeclarePropertiesAsPolicies(component, policyToDelete);
             if (StorageOperationStatus.OK != storageOperationStatus) {
-                log.debug("#unDeclarePropertiesAsInputs - failed to remove policy declaration for policy {} on component {}. reason {}", policyToDelete
-                                                                                                                                                 .getName(), component.getUniqueId(), storageOperationStatus);
+                log.debug("#unDeclarePropertiesAsInputs - failed to remove policy declaration for policy {} on component {}. reason {}",
+                    policyToDelete.getName(), component.getUniqueId(), storageOperationStatus);
                 return storageOperationStatus;
             }
         }
-
         return StorageOperationStatus.OK;
-
     }
 
     private PropertyDeclarator getPropertyDeclarator(ComponentInstInputsMap componentInstInputsMap) {
@@ -198,17 +198,15 @@ public class PropertyDeclarationOrchestrator {
         if (isNotEmpty(componentInstInputsMap.getGroupProperties())) {
             return groupPropertyDeclarator;
         }
-        if(isNotEmpty(componentInstInputsMap.getServiceProperties())) {
+        if (isNotEmpty(componentInstInputsMap.getServiceProperties())) {
             return servicePropertyDeclarator;
         }
-        if(isNotEmpty(componentInstInputsMap.getComponentPropertiesToPolicies())) {
+        if (isNotEmpty(componentInstInputsMap.getComponentPropertiesToPolicies())) {
             return componentPropertyToPolicyDeclarator;
         }
-        if(isNotEmpty(componentInstInputsMap.getComponentInstancePropertiesToPolicies())) {
+        if (isNotEmpty(componentInstInputsMap.getComponentInstancePropertiesToPolicies())) {
             return componentInstancePropertyToPolicyDeclarator;
         }
         throw new IllegalStateException("there are no properties selected for declaration");
-
     }
-
 }