Upgrade SDC from Titan to Janus Graph
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / impl / internal / tool / DeleteComponentHandler.java
index e7f42c9..76fcec8 100644 (file)
  */
 package org.openecomp.sdc.asdctool.impl.internal.tool;
 
-import com.thinkaurelius.titan.core.TitanVertex;
+import org.janusgraph.core.JanusGraphVertex;
 import fj.data.Either;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.openecomp.sdc.asdctool.utils.ConsoleWriter;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
-import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
+import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
-import org.openecomp.sdc.be.model.jsontitan.operations.NodeTypeOperation;
-import org.openecomp.sdc.be.model.jsontitan.operations.TopologyTemplateOperation;
-import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementOperation;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTypeOperation;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.TopologyTemplateOperation;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaElementOperation;
 import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -56,7 +56,7 @@ import java.util.Scanner;
 @Component("deleteComponentHandler")
 public class DeleteComponentHandler extends CommonInternalTool{
     @Autowired
-    private TitanDao titanDao;
+    private JanusGraphDao janusGraphDao;
     @Autowired
     private NodeTypeOperation nodeTypeOperation;
     @Autowired
@@ -70,23 +70,23 @@ public class DeleteComponentHandler extends CommonInternalTool{
         super("delete");
     }
     public void deleteComponent(String id, Scanner scanner) {
-        TitanOperationStatus status = TitanOperationStatus.OK;
-        GraphVertex metadataVertex = titanDao.getVertexById(id).either(l -> l, r -> null);
+        JanusGraphOperationStatus status = JanusGraphOperationStatus.OK;
+        GraphVertex metadataVertex = janusGraphDao.getVertexById(id).either(l -> l, r -> null);
         if (metadataVertex != null) {
             status = handleComponent(scanner, metadataVertex);
         } else {
             ConsoleWriter.dataLine("No vertex for id", id);
         }
-        if (status == TitanOperationStatus.OK) {
-            titanDao.commit();
+        if (status == JanusGraphOperationStatus.OK) {
+            janusGraphDao.commit();
         } else {
-            titanDao.rollback();
+            janusGraphDao.rollback();
         }
     }
 
-    private TitanOperationStatus handleComponent(Scanner scanner, GraphVertex metadataVertex) {
+    private JanusGraphOperationStatus handleComponent(Scanner scanner, GraphVertex metadataVertex) {
         Map<GraphPropertyEnum, Object> metadataProperties = metadataVertex.getMetadataProperties();
-        TitanOperationStatus status = TitanOperationStatus.OK;
+        JanusGraphOperationStatus status = JanusGraphOperationStatus.OK;
         printComponentInfo(metadataProperties);
 
         Iterator<Edge> edges = metadataVertex.getVertex().edges(Direction.OUT, EdgeLabelEnum.VERSION.name());
@@ -107,12 +107,12 @@ public class DeleteComponentHandler extends CommonInternalTool{
         return status;
     }
 
-    private TitanOperationStatus handleComponent(GraphVertex metadataVertex) {
+    private JanusGraphOperationStatus handleComponent(GraphVertex metadataVertex) {
         ToscaElementOperation toscaElementOperation = getOperationByLabel(metadataVertex);
         Iterator<Edge> edges = metadataVertex.getVertex().edges(Direction.IN, EdgeLabelEnum.VERSION.name());
         if (edges != null && edges.hasNext()) {
-            TitanOperationStatus status = updatePreviousVersion(metadataVertex, edges);
-            if ( status != TitanOperationStatus.OK ){
+            JanusGraphOperationStatus status = updatePreviousVersion(metadataVertex, edges);
+            if ( status != JanusGraphOperationStatus.OK ){
                 return status;
             }
         }
@@ -121,28 +121,28 @@ public class DeleteComponentHandler extends CommonInternalTool{
              .map(l -> {
                  ConsoleWriter.dataLine("\nDeleted");
                  report(metadataVertex);
-                 return TitanOperationStatus.OK;
+                 return JanusGraphOperationStatus.OK;
              })
              .right()
              .map(r-> {
                  ConsoleWriter.dataLine("\nFailed to delete. see log file");
                  return r;
              });
-        return TitanOperationStatus.OK;
+        return JanusGraphOperationStatus.OK;
     }
 
-    private TitanOperationStatus updatePreviousVersion(GraphVertex metadataVertex, Iterator<Edge> edges) {
+    private JanusGraphOperationStatus updatePreviousVersion(GraphVertex metadataVertex, Iterator<Edge> edges) {
         Edge edge = edges.next();
-        TitanVertex prevVersionVertex = (TitanVertex) edge.outVertex();
+        JanusGraphVertex prevVersionVertex = (JanusGraphVertex) edge.outVertex();
         // check if previous version is deleted
-        Boolean isDeleted = (Boolean) titanDao.getProperty(prevVersionVertex, GraphPropertyEnum.IS_DELETED.getProperty());
+        Boolean isDeleted = (Boolean) janusGraphDao.getProperty(prevVersionVertex, GraphPropertyEnum.IS_DELETED.getProperty());
         if (isDeleted != null && isDeleted) {
             ConsoleWriter.dataLine("\nPrevoius version is marked as deleted. Component cannot be deleted");
-            return TitanOperationStatus.GENERAL_ERROR;
+            return JanusGraphOperationStatus.GENERAL_ERROR;
         }
         // update highest property for previous version
-        TitanOperationStatus status = updateStateOfPreviuosVersion(prevVersionVertex);
-        if ( TitanOperationStatus.OK != status ){
+        JanusGraphOperationStatus status = updateStateOfPreviuosVersion(prevVersionVertex);
+        if ( JanusGraphOperationStatus.OK != status ){
             return status;
         }
         
@@ -150,51 +150,54 @@ public class DeleteComponentHandler extends CommonInternalTool{
         return connectToCatalogAndArchive(metadataVertex, prevVersionVertex);
     }
 
-    private TitanOperationStatus updateStateOfPreviuosVersion(TitanVertex prevVersionVertex) {
-        String prevId = (String) titanDao.getProperty(prevVersionVertex, GraphPropertyEnum.UNIQUE_ID.getProperty());
-        Either<GraphVertex, TitanOperationStatus> prevGraphVertex = titanDao.getVertexById(prevId);
+    private JanusGraphOperationStatus updateStateOfPreviuosVersion(JanusGraphVertex prevVersionVertex) {
+        String prevId = (String) janusGraphDao.getProperty(prevVersionVertex, GraphPropertyEnum.UNIQUE_ID.getProperty());
+        Either<GraphVertex, JanusGraphOperationStatus> prevGraphVertex = janusGraphDao.getVertexById(prevId);
         GraphVertex prevVertex = prevGraphVertex.left().value();
         prevVertex.addMetadataProperty(GraphPropertyEnum.IS_HIGHEST_VERSION, true);
-        titanDao.updateVertex(prevVertex);
+        janusGraphDao.updateVertex(prevVertex);
   
         Iterator<Edge> edgesIter = prevVersionVertex.edges(Direction.IN, EdgeLabelEnum.LAST_STATE.name());
         if ( edgesIter.hasNext() ) {
             Edge lastStateEdge = edgesIter.next();
             Vertex lastModifier = lastStateEdge.outVertex();
-            TitanOperationStatus replaceRes = titanDao.replaceEdgeLabel(lastModifier, prevVersionVertex, lastStateEdge, EdgeLabelEnum.LAST_STATE, EdgeLabelEnum.STATE);
-            if (replaceRes != TitanOperationStatus.OK) {
+            JanusGraphOperationStatus
+                replaceRes = janusGraphDao
+                .replaceEdgeLabel(lastModifier, prevVersionVertex, lastStateEdge, EdgeLabelEnum.LAST_STATE, EdgeLabelEnum.STATE);
+            if (replaceRes != JanusGraphOperationStatus.OK) {
                 log.info("Failed to replace label from {} to {}. status = {}", EdgeLabelEnum.LAST_STATE, EdgeLabelEnum.STATE, replaceRes);
                 ConsoleWriter.dataLine("\nFailed to replace LAST_STATE edge . Failed to delete");
-                return TitanOperationStatus.GENERAL_ERROR;
+                return JanusGraphOperationStatus.GENERAL_ERROR;
             }
         }
-        return TitanOperationStatus.OK;
+        return JanusGraphOperationStatus.OK;
     }
 
    
-    private TitanOperationStatus connectToCatalogAndArchive(GraphVertex metadataVertex, TitanVertex prevVersionVertex) {
+    private JanusGraphOperationStatus connectToCatalogAndArchive(GraphVertex metadataVertex, JanusGraphVertex prevVersionVertex) {
         
-        TitanOperationStatus status = connectByLabel(metadataVertex, prevVersionVertex, EdgeLabelEnum.CATALOG_ELEMENT, VertexTypeEnum.CATALOG_ROOT);
-        if ( status == TitanOperationStatus.OK ){
+        JanusGraphOperationStatus
+            status = connectByLabel(metadataVertex, prevVersionVertex, EdgeLabelEnum.CATALOG_ELEMENT, VertexTypeEnum.CATALOG_ROOT);
+        if ( status == JanusGraphOperationStatus.OK ){
             status = connectByLabel(metadataVertex, prevVersionVertex, EdgeLabelEnum.ARCHIVE_ELEMENT, VertexTypeEnum.ARCHIVE_ROOT);
         }
         return status;
     }
 
-    private TitanOperationStatus connectByLabel(GraphVertex metadataVertex, TitanVertex prevVersionVertex, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexlabel) {
+    private JanusGraphOperationStatus connectByLabel(GraphVertex metadataVertex, JanusGraphVertex prevVersionVertex, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexlabel) {
         Iterator<Edge> edgesToCatalog = metadataVertex.getVertex().edges(Direction.IN, edgeLabel.name());
         if ( edgesToCatalog != null && edgesToCatalog.hasNext() ){
             //exist edge move to prev version
-            Either<GraphVertex, TitanOperationStatus> catalog = titanDao.getVertexByLabel(vertexlabel);
+            Either<GraphVertex, JanusGraphOperationStatus> catalog = janusGraphDao.getVertexByLabel(vertexlabel);
             if (catalog.isRight()) {
                 log.debug("Failed to fetch {} vertex, error {}", vertexlabel, catalog.right().value());
                 return catalog.right().value();
             }
             GraphVertex catalogV = catalog.left().value();      
             Edge edge = edgesToCatalog.next();
-            return titanDao.createEdge(catalogV.getVertex(), prevVersionVertex, edgeLabel, edge );
+            return janusGraphDao.createEdge(catalogV.getVertex(), prevVersionVertex, edgeLabel, edge );
         }
-        return TitanOperationStatus.OK;
+        return JanusGraphOperationStatus.OK;
     }
 
     private boolean isReferenceExist(GraphVertex metadataVertex) {