Update the license for 2017-2018 license
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / query / builder / TraversalQuery.java
index 60e72aa..677f658 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.query.builder;
 
@@ -31,12 +29,12 @@ import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-
 import org.onap.aai.exceptions.AAIException;
 import org.onap.aai.introspection.Introspector;
 import org.onap.aai.introspection.Loader;
 import org.onap.aai.parsers.query.QueryParser;
 import org.onap.aai.parsers.query.TraversalStrategy;
+import org.onap.aai.serialization.db.EdgeRules;
 
 /**
  * The Class TraversalQuery.
@@ -53,6 +51,19 @@ public class TraversalQuery<E> extends GraphTraversalBuilder<E> {
                this.factory = new TraversalStrategy(this.loader, this);
        }
        
+       /**
+        * Instantiates a new traversal query.
+        *
+        * @param loader the loader
+        * @param source graph traversal source
+        * @param edgeRules the edgeRules to use
+        */
+       public TraversalQuery(Loader loader, GraphTraversalSource source, EdgeRules edgeRules) {
+               super(loader, source, edgeRules);
+               this.factory = new TraversalStrategy(this.loader, this);
+       
+       }
+       
        /**
         * Instantiates a new traversal query.
         *
@@ -64,6 +75,17 @@ public class TraversalQuery<E> extends GraphTraversalBuilder<E> {
                this.factory = new TraversalStrategy(this.loader, this);
        }
        
+       /**
+        * Instantiates a new traversal query.
+        *
+        * @param loader the loader
+        * @param start the start
+        */
+       public TraversalQuery(Loader loader, GraphTraversalSource source, Vertex start, EdgeRules edgeRules) {
+               super(loader, source, start, edgeRules);
+               this.factory = new TraversalStrategy(this.loader, this);
+       }
+       
        protected TraversalQuery(GraphTraversal<Vertex, E> traversal, Loader loader, GraphTraversalSource source, GraphTraversalBuilder<E> gtb) {
                super(loader, source);
                this.traversal = traversal;
@@ -125,14 +147,17 @@ public class TraversalQuery<E> extends GraphTraversalBuilder<E> {
        
        @Override
        protected QueryBuilder<E> cloneQueryAtStep(int index) {
-               if (index == 0) {
-                       index = stepIndex;
+               int idx = index;
+               
+               if (idx == 0) {
+                       idx = stepIndex;
                }
+
                GraphTraversal<Vertex, E> clone = this.traversal.asAdmin().clone();
                GraphTraversal.Admin<Vertex, E> cloneAdmin = clone.asAdmin();
                List<Step> steps = cloneAdmin.getSteps();
 
-               for (int i = steps.size()-1; i >= index; i--) {
+               for (int i = steps.size()-1; i >= idx; i--) {
                        cloneAdmin.removeStep(i);
                }
                return new TraversalQuery<>(cloneAdmin, loader, source, this);