summaryrefslogtreecommitdiffstats
path: root/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/janusgraph/JanusGraphGenericDao.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-dao/src/main/java/org/openecomp/sdc/be/dao/janusgraph/JanusGraphGenericDao.java')
-rw-r--r--catalog-dao/src/main/java/org/openecomp/sdc/be/dao/janusgraph/JanusGraphGenericDao.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/janusgraph/JanusGraphGenericDao.java b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/janusgraph/JanusGraphGenericDao.java
index 2116dcc27e..8382af5e8b 100644
--- a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/janusgraph/JanusGraphGenericDao.java
+++ b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/janusgraph/JanusGraphGenericDao.java
@@ -48,6 +48,7 @@ import org.janusgraph.core.JanusGraphVertexQuery;
import org.janusgraph.core.PropertyKey;
import org.janusgraph.graphdb.query.JanusGraphPredicate;
import org.openecomp.sdc.be.config.ConfigurationManager;
+import org.openecomp.sdc.be.dao.api.exception.JanusGraphException;
import org.openecomp.sdc.be.dao.graph.GraphElementFactory;
import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
import org.openecomp.sdc.be.dao.graph.datatype.GraphElementTypeEnum;
@@ -59,6 +60,7 @@ import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
import org.openecomp.sdc.be.resources.data.GraphNodeLock;
+import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
import org.openecomp.sdc.common.log.wrappers.Logger;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -1318,6 +1320,58 @@ public class JanusGraphGenericDao {
return Either.left(immutablePairs);
}
+ public <T extends GraphNode> JanusGraphOperationStatus deleteAllChildrenNodes(String key, String uniqueId, GraphEdgeLabels edgeType) {
+ final JanusGraph janusGraph = getJanusGraph();
+ final Iterable<JanusGraphVertex> vertices = janusGraph.query().has(key, uniqueId).vertices();
+ if (vertices == null || !vertices.iterator().hasNext()) {
+ return JanusGraphOperationStatus.NOT_FOUND;
+ }
+ final Vertex rootVertex = vertices.iterator().next();
+ final Iterator<Edge> outEdges = rootVertex.edges(Direction.OUT, edgeType.getProperty());
+ while (outEdges.hasNext()) {
+ final Edge edge = outEdges.next();
+ final Vertex vertexIn = edge.inVertex();
+ final Iterator<Edge> outSubEdges = vertexIn.edges(Direction.OUT);
+ while (outSubEdges.hasNext()) {
+ Edge subEdge = outSubEdges.next();
+ Vertex vertex = subEdge.inVertex();
+ Map<String, Object> properties = getProperties(vertex);
+ if (properties != null) {
+ String label = (String) properties.get(GraphPropertiesDictionary.LABEL.getProperty());
+ if (label.equals("property")) {
+ vertex.remove();
+ }
+ }
+ }
+ Map<String, Object> properties = getProperties(vertexIn);
+ if (properties != null) {
+ String label = (String) properties.get(GraphPropertiesDictionary.LABEL.getProperty());
+ GraphNode node = GraphElementFactory
+ .createElement(label, GraphElementTypeEnum.Node, properties, GraphNode.class);
+ if (node != null) {
+ vertexIn.remove();
+ }
+ }
+ }
+ return JanusGraphOperationStatus.OK;
+ }
+
+ /**
+ * Gets the JanusGraph instance.
+ *
+ * @return the JanusGraph instance
+ * @throws JanusGraphException when the graph was not created
+ */
+ public JanusGraph getJanusGraph() {
+ final Either<JanusGraph, JanusGraphOperationStatus> graphRes = janusGraphClient.getGraph();
+ if (graphRes.isRight()) {
+ final var errorMsg = String.format("Failed to retrieve graph. Status was '%s'", graphRes.right().value());
+ log.error(EcompLoggerErrorCode.SCHEMA_ERROR, JanusGraphGenericDao.class.getName(), errorMsg);
+ throw new JanusGraphException(graphRes.right().value(), errorMsg);
+ }
+ return graphRes.left().value();
+ }
+
public Either<List<ImmutablePair<JanusGraphVertex, Edge>>, JanusGraphOperationStatus> getChildrenVertecies(String key, String uniqueId,
GraphEdgeLabels edgeType) {
List<ImmutablePair<JanusGraphVertex, Edge>> immutablePairs = new ArrayList<>();