Integrate aai-schema-ingest library into aai-core
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / query / builder / TraversalQuery.java
index 60e72aa..21d8eb5 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.
  * 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;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.util.List;
-
-import javax.ws.rs.core.MultivaluedMap;
-
 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.edges.enums.EdgeType;
+
+import javax.ws.rs.core.MultivaluedMap;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.util.List;
 
 /**
  * The Class TraversalQuery.
@@ -125,19 +122,27 @@ public class TraversalQuery<E> extends GraphTraversalBuilder<E> {
        
        @Override
        protected QueryBuilder<E> cloneQueryAtStep(int index) {
-               if (index == 0) {
-                       index = stepIndex;
+               GraphTraversal.Admin<Vertex, E> cloneAdmin = getCloneAdmin(index);
+               return new TraversalQuery<>(cloneAdmin, loader, source, this);
+       }
+
+       protected GraphTraversal.Admin<Vertex, E> getCloneAdmin(int index) {
+               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);
+               return cloneAdmin;
        }
-       
+
        @Override
        protected QueryBuilder<E> removeQueryStepsBetween(int start, int end) {
                GraphTraversal<Vertex, E> clone = this.traversal.asAdmin().clone();