Catalog alignment
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / CompositionBusinessLogic.java
index ba256d4..14a193f 100644 (file)
 
 package org.openecomp.sdc.be.components.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.openecomp.sdc.be.components.impl.exceptions.ByResponseFormatComponentException;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
 import org.openecomp.sdc.be.model.ComponentInstance;
 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
 import org.openecomp.sdc.be.model.Resource;
-import org.openecomp.sdc.exception.ResponseFormat;
+import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.security.SecureRandom;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -47,7 +53,7 @@ import java.util.stream.Collectors;
 @Component("compositionBusinessLogic")
 public class CompositionBusinessLogic {
     private final ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
-
+    private static final Logger log = Logger.getLogger(CompositionBusinessLogic.class.getName());
     private static final int VFC_CANVAS_ELEMENT_SIZE = 50;
     private static final int CP_CANVAS_ELEMENT_SIZE = 21;
     private static final int CANVAS_WIDTH = 1000;
@@ -73,17 +79,11 @@ public class CompositionBusinessLogic {
             // Set Relative Locations According to Canvas Size
             componentInstanceLocations.entrySet().forEach(this::setRelativePosition);
             // Update in DB
-            componentInstanceBusinessLogic.updateComponentInstance(ComponentTypeEnum.RESOURCE_PARAM_NAME,resource.getUniqueId(),
-                    userId, resource.getComponentInstances(), false)
-                    .left()
-                    .on(this::throwComponentException);
+            componentInstanceBusinessLogic.updateComponentInstance(ComponentTypeEnum.RESOURCE_PARAM_NAME,resource, resource.getUniqueId(),
+                    userId, resource.getComponentInstances(), false);
         }
     }
 
-    private List<ComponentInstance> throwComponentException(ResponseFormat responseFormat) {
-        throw new ByResponseFormatComponentException(responseFormat);
-    }
-
     private void setRelativePosition(Entry<ImmutablePair<Double, Double>, ComponentInstance> entry) {
         int xCenter = CANVAS_WIDTH / 2;
         int yCenter = CANVAS_HEIGHT / 2;
@@ -284,5 +284,19 @@ public class CompositionBusinessLogic {
         }
         return relativeElementPosition;
     }
+    protected void validateAndSetDefaultCoordinates(ComponentInstance resourceInstance) {
+        int xCenter =  CANVAS_WIDTH / 2;
+        int yCenter = CANVAS_HEIGHT / 2;
+        double leftLimit = -10D;
+        double rightLimit = -1D;
+        double generatedDouble = leftLimit + new SecureRandom().nextDouble() * (rightLimit - leftLimit);
+
+        if (StringUtils.isEmpty(resourceInstance.getPosX())|| StringUtils.isEmpty(resourceInstance.getPosY())){
+            resourceInstance.setPosX(calculateCompositionPosition(xCenter, generatedDouble, resourceInstance));
+            resourceInstance.setPosY(calculateCompositionPosition(yCenter, generatedDouble, resourceInstance));
+            log.debug("Missing Failed PosX/PosY values. new values generated automatically. PosX = {} and PosY = {}", resourceInstance.getPosX(), resourceInstance.getPosY());
+        }
+    }
+
 
 }