Implement 'Update Service by importing Tosca Model'-story
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / jsonjanusgraph / operations / BaseOperation.java
index 92dc67b..2bf1c96 100644 (file)
@@ -39,14 +39,13 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.janusgraph.core.JanusGraphVertex;
 import org.openecomp.sdc.be.dao.impl.HealingPipelineDao;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
-import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
 import org.openecomp.sdc.be.dao.jsongraph.utils.IdBuilderUtils;
-import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.GroupInstanceDataDefinition;
@@ -597,7 +596,6 @@ public abstract class BaseOperation {
 
     public <T extends ToscaDataDefinition> StorageOperationStatus deleteToscaDataDeepElementsBlockOfToscaElement(String toscaElementUid,
                                                                                                                  EdgeLabelEnum edgeLabel,
-                                                                                                                 VertexTypeEnum vertexLabel,
                                                                                                                  String key) {
         StorageOperationStatus statusRes = null;
         Either<GraphVertex, JanusGraphOperationStatus> getToscaElementRes;
@@ -609,7 +607,7 @@ public abstract class BaseOperation {
             statusRes = DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status);
         }
         if (statusRes == null) {
-            statusRes = deleteToscaDataDeepElementsBlockToToscaElement(getToscaElementRes.left().value(), edgeLabel, vertexLabel, key);
+            statusRes = deleteToscaDataDeepElementsBlockToToscaElement(getToscaElementRes.left().value(), edgeLabel, key);
         }
         if (statusRes == null) {
             statusRes = StorageOperationStatus.OK;
@@ -619,7 +617,6 @@ public abstract class BaseOperation {
 
     public <T extends ToscaDataDefinition> StorageOperationStatus deleteToscaDataDeepElementsBlockToToscaElement(GraphVertex toscaElement,
                                                                                                                  EdgeLabelEnum edgeLabel,
-                                                                                                                 VertexTypeEnum vertexLabel,
                                                                                                                  String key) {
         StorageOperationStatus result = null;
         GraphVertex toscaDataVertex = null;
@@ -1009,7 +1006,13 @@ public abstract class BaseOperation {
             if (!currMap.containsKey(pathKeys.get(0))) {
                 currMap.put(pathKeys.get(0), new MapDataDefinition<>());
             }
-            MapDataDefinition currDeepElement = currMap.get(pathKeys.get(0));
+            Object object = currMap.get(pathKeys.get(0));
+            MapDataDefinition currDeepElement = null;
+            if (object instanceof MapDataDefinition) {
+                currDeepElement = (MapDataDefinition) object;
+            } else {
+                currDeepElement = new MapDataDefinition(currMap);
+            }
             for (int i = 1; i < pathKeys.size(); ++i) {
                 if (currDeepElement.findByKey(pathKeys.get(i)) == null) {
                     currDeepElement.put(pathKeys.get(i), new MapDataDefinition<>());
@@ -1075,10 +1078,9 @@ public abstract class BaseOperation {
      *
      * @param toscaElementUid
      * @param edgeLabel
-     * @param vertexLabel
      * @return
      */
-    public StorageOperationStatus removeToscaData(String toscaElementUid, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel) {
+    public StorageOperationStatus removeToscaData(String toscaElementUid, EdgeLabelEnum edgeLabel) {
         StorageOperationStatus statusRes = StorageOperationStatus.OK;
         Either<GraphVertex, JanusGraphOperationStatus> getToscaElementRes;
         getToscaElementRes = janusGraphDao.getVertexById(toscaElementUid, JsonParseFlagEnum.NoParse);
@@ -1089,7 +1091,7 @@ public abstract class BaseOperation {
             statusRes = DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status);
         }
         if (statusRes == StorageOperationStatus.OK) {
-            statusRes = removeToscaDataVertex(getToscaElementRes.left().value(), edgeLabel, vertexLabel);
+            statusRes = removeToscaDataVertex(getToscaElementRes.left().value(), edgeLabel);
         }
         return statusRes;
     }
@@ -1099,10 +1101,9 @@ public abstract class BaseOperation {
      *
      * @param toscaElement
      * @param edgeLabel
-     * @param vertexLabel
      * @return
      */
-    public StorageOperationStatus removeToscaDataVertex(GraphVertex toscaElement, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel) {
+    private StorageOperationStatus removeToscaDataVertex(GraphVertex toscaElement, EdgeLabelEnum edgeLabel) {
         StorageOperationStatus result = null;
         GraphVertex toscaDataVertex = null;
         Iterator<Edge> edges = null;
@@ -1202,7 +1203,7 @@ public abstract class BaseOperation {
             statusRes = DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status);
         }
         if (statusRes == StorageOperationStatus.OK) {
-            statusRes = deleteToscaDataElement(getToscaElementRes.left().value(), edgeLabel, vertexLabel, uniqueKey, mapKeyField);
+            statusRes = deleteToscaDataElement(getToscaElementRes.left().value(), edgeLabel, uniqueKey);
         }
         return statusRes;
     }
@@ -1212,14 +1213,12 @@ public abstract class BaseOperation {
      *
      * @param toscaElementUid
      * @param edgeLabel
-     * @param vertexLabel
      * @param uniqueKey
      * @param pathKeys
-     * @param mapKeyField
      * @return
      */
-    public StorageOperationStatus deleteToscaDataDeepElement(String toscaElementUid, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel,
-                                                             String uniqueKey, List<String> pathKeys, JsonPresentationFields mapKeyField) {
+    public StorageOperationStatus deleteToscaDataDeepElement(String toscaElementUid, EdgeLabelEnum edgeLabel,
+                                                             String uniqueKey, List<String> pathKeys) {
         StorageOperationStatus statusRes = StorageOperationStatus.OK;
         Either<GraphVertex, JanusGraphOperationStatus> getToscaElementRes;
         getToscaElementRes = janusGraphDao.getVertexById(toscaElementUid, JsonParseFlagEnum.NoParse);
@@ -1230,7 +1229,7 @@ public abstract class BaseOperation {
             statusRes = DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status);
         }
         if (statusRes == StorageOperationStatus.OK) {
-            statusRes = deleteToscaDataDeepElement(getToscaElementRes.left().value(), edgeLabel, vertexLabel, uniqueKey, pathKeys, mapKeyField);
+            statusRes = deleteToscaDataDeepElement(getToscaElementRes.left().value(), edgeLabel, uniqueKey, pathKeys);
         }
         return statusRes;
     }
@@ -1240,21 +1239,19 @@ public abstract class BaseOperation {
      *
      * @param toscaElement
      * @param edgeLabel
-     * @param vertexLabel
      * @param uniqueKey
      * @param pathKeys
-     * @param mapKeyField
      * @return
      */
-    public StorageOperationStatus deleteToscaDataDeepElement(GraphVertex toscaElement, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel,
-                                                             String uniqueKey, List<String> pathKeys, JsonPresentationFields mapKeyField) {
+    public StorageOperationStatus deleteToscaDataDeepElement(GraphVertex toscaElement, EdgeLabelEnum edgeLabel,
+                                                             String uniqueKey, List<String> pathKeys) {
         List<String> uniqueKeys = new ArrayList<>();
         uniqueKeys.add(uniqueKey);
-        return deleteToscaDataDeepElements(toscaElement, edgeLabel, vertexLabel, uniqueKeys, pathKeys, mapKeyField);
+        return deleteToscaDataDeepElements(toscaElement, edgeLabel, uniqueKeys, pathKeys);
     }
 
-    public StorageOperationStatus deleteToscaDataDeepElements(GraphVertex toscaElement, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel,
-                                                              List<String> uniqueKeys, List<String> pathKeys, JsonPresentationFields mapKeyField) {
+    public StorageOperationStatus deleteToscaDataDeepElements(GraphVertex toscaElement, EdgeLabelEnum edgeLabel,
+                                                              List<String> uniqueKeys, List<String> pathKeys) {
         StorageOperationStatus result = null;
         GraphVertex toscaDataVertex;
         Map<String, ToscaDataDefinition> existingToscaDataMap = null;
@@ -1298,13 +1295,11 @@ public abstract class BaseOperation {
      *
      * @param toscaElement
      * @param edgeLabel
-     * @param vertexLabel
      * @param uniqueKey
-     * @param mapKeyField
      * @return
      */
-    public StorageOperationStatus deleteToscaDataElement(GraphVertex toscaElement, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel,
-                                                         String uniqueKey, JsonPresentationFields mapKeyField) {
+    public StorageOperationStatus deleteToscaDataElement(GraphVertex toscaElement, EdgeLabelEnum edgeLabel,
+                                                         String uniqueKey) {
         List<String> uniqueKeys = new ArrayList<>();
         uniqueKeys.add(uniqueKey);
         return deleteToscaDataElements(toscaElement, edgeLabel, uniqueKeys);
@@ -1428,16 +1423,15 @@ public abstract class BaseOperation {
             mergedToscaDataMap.putAll(existingToscaDataMap);
         }
         for (T toscaDataElement : toscaDataList) {
-            status = handleToscaDataElement(toscaElement, mapKeyField, mergedToscaDataMap, toscaDataElement, isUpdate);
+            status = handleToscaDataElement(toscaElement.getUniqueId(), mapKeyField, mergedToscaDataMap, toscaDataElement, isUpdate);
             if (status != StorageOperationStatus.OK) {
-                result = Either.right(status);
-                break;
+                return Either.right(status);
             }
         }
         return result;
     }
 
-    private <T extends ToscaDataDefinition> StorageOperationStatus handleToscaDataElement(GraphVertex toscaElement,
+    private <T extends ToscaDataDefinition> StorageOperationStatus handleToscaDataElement(String toscaElementId,
                                                                                           JsonPresentationFields mapKeyField,
                                                                                           Map<String, T> mergedToscaDataMap, T toscaDataElement,
                                                                                           boolean isUpdate) {
@@ -1455,7 +1449,7 @@ public abstract class BaseOperation {
             status = StorageOperationStatus.BAD_REQUEST;
         } else if (!isUpdate && mergedToscaDataMap.containsKey(currKey)) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
-                "Failed to add tosca data to tosca element {}. The element with the same key {} already exists. ", toscaElement.getUniqueId(),
+                "Failed to add tosca data to tosca element {}. The element with the same key {} already exists. ", toscaElementId,
                 currKey);
             status = StorageOperationStatus.BAD_REQUEST;
         }
@@ -1464,8 +1458,7 @@ public abstract class BaseOperation {
     }
 
     protected GroupInstanceDataDefinition buildGroupInstanceDataDefinition(GroupDataDefinition group,
-                                                                           ComponentInstanceDataDefinition componentInstance,
-                                                                           Map<String, ArtifactDataDefinition> instDeplArtifMap) {
+                                                                           ComponentInstanceDataDefinition componentInstance) {
         String componentInstanceName = componentInstance.getName();
         Long creationDate = System.currentTimeMillis();
         GroupInstanceDataDefinition groupInstance = new GroupInstanceDataDefinition();
@@ -1479,7 +1472,7 @@ public abstract class BaseOperation {
         groupInstance.setGroupName(group.getName());
         groupInstance.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(groupInstance.getName()));
         groupInstance
-            .setUniqueId(UniqueIdBuilder.buildResourceInstanceUniuqeId(componentInstance.getUniqueId(), groupUid, groupInstance.getNormalizedName()));
+            .setUniqueId(UniqueIdBuilder.buildResourceInstanceUniqueId(componentInstance.getUniqueId(), groupUid, groupInstance.getNormalizedName()));
         groupInstance.setArtifacts(group.getArtifacts());
         groupInstance.setArtifactsUuid(group.getArtifactsUuid());
         groupInstance.setProperties(group.getProperties());