Update the license for 2017-2018 license
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / serialization / engines / query / GraphTraversalQueryEngine.java
index 872b0c5..d2c68fc 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * org.onap.aai
  * ================================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +16,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 package org.onap.aai.serialization.engines.query;
 
@@ -42,6 +40,7 @@ import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.introspection.Loader;
+import org.onap.aai.logging.StopWatch;
 
 /*
  * This class needs some big explanation despite its compact size.
@@ -68,9 +67,15 @@ public class GraphTraversalQueryEngine extends QueryEngine {
         */
        @Override
        public List<Vertex> findParents(Vertex start) {
-               
-               final GraphTraversal<Vertex, Vertex> pipe = this.g.V(start).emit(v -> true).repeat(__.union(__.inE().has(CONTAINS.toString(), OUT.toString()).outV(), __.outE().has(CONTAINS.toString(), IN.toString()).inV()));
-               return pipe.toList();
+               try {
+                       StopWatch.conditionalStart();
+                        @SuppressWarnings("unchecked")
+                        final GraphTraversal<Vertex, Vertex> pipe = this.g.V(start).emit(v -> true).repeat(__.union(__.inE().has(CONTAINS.toString(), OUT.toString()).outV(), __.outE().has(CONTAINS.toString(), IN.toString()).inV()));
+                       return pipe.toList();
+               }
+               finally {
+                       dbTimeMsecs += StopWatch.stopIfStarted();
+               }
        }
 
        /**
@@ -79,6 +84,7 @@ public class GraphTraversalQueryEngine extends QueryEngine {
        @Override
        public List<Vertex> findAllChildren(Vertex start) {
                
+               @SuppressWarnings("unchecked")
                GraphTraversal<Vertex, Vertex> pipe =  this.g
                                .V(start).emit(v -> true).repeat(__.union(__.outE().has(CONTAINS.toString(), OUT.toString()).inV(), __.inE().has(CONTAINS.toString(), IN.toString()).outV()));
                
@@ -87,7 +93,12 @@ public class GraphTraversalQueryEngine extends QueryEngine {
                
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
        public List<Vertex> findChildrenOfType(Vertex start, String type) {
+               @SuppressWarnings("unchecked")
                GraphTraversal<Vertex, Vertex> pipe =  this.g.V(start).union(
                                        __.outE().has(CONTAINS.toString(), OUT.toString()).inV(),
                                        __.inE().has(CONTAINS.toString(), IN.toString()).outV()
@@ -96,7 +107,12 @@ public class GraphTraversalQueryEngine extends QueryEngine {
                return pipe.toList();
        }
        
+       /**
+        * {@inheritDoc}
+        */
+       @Override
        public List<Vertex> findChildren(Vertex start) {
+               @SuppressWarnings("unchecked")
                GraphTraversal<Vertex, Vertex> pipe =  this.g.V(start).union(
                                        __.outE().has(CONTAINS.toString(), OUT.toString()),
                                        __.inE().has(CONTAINS.toString(), IN.toString())
@@ -110,19 +126,14 @@ public class GraphTraversalQueryEngine extends QueryEngine {
         */
        @Override
        public List<Vertex> findDeletable(Vertex start) {
+               @SuppressWarnings("unchecked")
                GraphTraversal<Vertex, Vertex> pipe = this.g
                                .V(start).emit(v -> true).repeat(
                                        __.union(
-                                               __.outE().or(
-                                                       __.has(CONTAINS.toString(), OUT.toString()),
-                                                       __.has(DELETE_OTHER_V.toString(), OUT.toString())
-                                               ).inV(),
-                                               __.inE().or(
-                                                               __.has(CONTAINS.toString(), IN.toString()),
-                                                               __.has(DELETE_OTHER_V.toString(), IN.toString())
-                                               ).outV()
+                                               __.outE().has(DELETE_OTHER_V.toString(), OUT.toString()).inV(),
+                                               __.inE().has(DELETE_OTHER_V.toString(), IN.toString()).outV()
                                        )
-                               );
+                               ).dedup();
                
                return pipe.toList();
        }
@@ -194,5 +205,8 @@ public class GraphTraversalQueryEngine extends QueryEngine {
                return pipeline.toList();
        }
        
+       public double getDBTimeMsecs() {
+               return (dbTimeMsecs);
+       }
 }