* ============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.
@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();