diff options
author | Threefoot, Jane (jt6620) <jt6620@att.com> | 2017-08-31 16:49:41 -0400 |
---|---|---|
committer | Threefoot, Jane (jt6620) <jt6620@att.com> | 2017-09-01 11:41:05 -0400 |
commit | 752504bac2b1066f9c8a979b54fccc8281ef8aeb (patch) | |
tree | 53ce297682fcc08de9890baaa83d9b15252533f1 /aai-core/src/main | |
parent | c5959920f7b8920dcde45150247ef529221c71a8 (diff) |
Added until and simplePath to QueryBuilder
Issue-ID: AAI-253
Change-Id: I0ad83d37bb15260b72e8f1745dc40ecd8df98229
Signed-off-by: Threefoot, Jane (jt6620) <jt6620@att.com>
Diffstat (limited to 'aai-core/src/main')
3 files changed, 52 insertions, 7 deletions
diff --git a/aai-core/src/main/java/org/openecomp/aai/query/builder/GraphTraversalBuilder.java b/aai-core/src/main/java/org/openecomp/aai/query/builder/GraphTraversalBuilder.java index 73b57d06..72c2efb0 100644 --- a/aai-core/src/main/java/org/openecomp/aai/query/builder/GraphTraversalBuilder.java +++ b/aai-core/src/main/java/org/openecomp/aai/query/builder/GraphTraversalBuilder.java @@ -30,7 +30,6 @@ import java.util.Set; import org.apache.tinkerpop.gremlin.process.traversal.P; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traversal.Admin; -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal; 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.process.traversal.dsl.graph.__; @@ -70,7 +69,7 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> { public GraphTraversalBuilder(Loader loader, GraphTraversalSource source) { super(loader, source); - traversal = new DefaultGraphTraversal<>(); + traversal = (GraphTraversal<Vertex, E>) __.<E>start(); } @@ -83,7 +82,7 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> { public GraphTraversalBuilder(Loader loader, GraphTraversalSource source, Vertex start) { super(loader, source, start); - traversal = new DefaultGraphTraversal<>(); + traversal = (GraphTraversal<Vertex, E>) __.__(start); } @@ -404,6 +403,24 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> { } @Override + public QueryBuilder<E> until(QueryBuilder<E> builder) { + this.traversal.until((GraphTraversal<Vertex,E>)builder.getQuery()); + stepIndex++; + + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryBuilder<E> simplePath(){ + this.traversal.simplePath(); + stepIndex++; + return this; + } + + @Override public QueryBuilder<Edge> outE() { this.traversal.outE(); stepIndex++; @@ -594,17 +611,18 @@ public abstract class GraphTraversalBuilder<E> extends QueryBuilder<E> { private void executeQuery() { - Admin<Vertex, Vertex> admin; + Admin admin; if (start != null) { - admin = source.V(start).asAdmin(); + this.completeTraversal = traversal.asAdmin(); } else { admin = source.V().asAdmin(); + TraversalHelper.insertTraversal(admin.getEndStep(), traversal.asAdmin(), admin); + + this.completeTraversal = (Admin<Vertex, E>) admin; } - TraversalHelper.insertTraversal(admin.getEndStep(), traversal.asAdmin(), admin); - this.completeTraversal = (Admin<Vertex, E>) admin; } @Override diff --git a/aai-core/src/main/java/org/openecomp/aai/query/builder/GremlinQueryBuilder.java b/aai-core/src/main/java/org/openecomp/aai/query/builder/GremlinQueryBuilder.java index f93bc484..b151d9d8 100644 --- a/aai-core/src/main/java/org/openecomp/aai/query/builder/GremlinQueryBuilder.java +++ b/aai-core/src/main/java/org/openecomp/aai/query/builder/GremlinQueryBuilder.java @@ -394,6 +394,24 @@ public abstract class GremlinQueryBuilder<E> extends QueryBuilder<E> { } @Override + public QueryBuilder<E> until(QueryBuilder<E> builder) { + this.list.add(".until(__" + builder.getQuery() + ")"); + stepIndex++; + + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryBuilder<E> simplePath(){ + this.list.add(".simplePath()"); + stepIndex++; + return this; + } + + @Override public QueryBuilder<Edge> outE() { this.list.add(".outE()"); stepIndex++; diff --git a/aai-core/src/main/java/org/openecomp/aai/query/builder/QueryBuilder.java b/aai-core/src/main/java/org/openecomp/aai/query/builder/QueryBuilder.java index 009f4fdf..717033fa 100644 --- a/aai-core/src/main/java/org/openecomp/aai/query/builder/QueryBuilder.java +++ b/aai-core/src/main/java/org/openecomp/aai/query/builder/QueryBuilder.java @@ -298,6 +298,15 @@ public abstract class QueryBuilder<E> implements Iterator<E> { public abstract QueryBuilder<E> not(QueryBuilder<E> builder); public abstract QueryBuilder<E> as(String name); public abstract QueryBuilder<E> select(String name); + public abstract QueryBuilder<E> until(QueryBuilder<E> builder); + + /** + * Used to prevent the traversal from repeating its path through the graph. + * See http://tinkerpop.apache.org/docs/3.0.1-incubating/#simplepath-step for more info. + * + * @return a QueryBuilder with the simplePath step appended to its traversal + */ + public abstract QueryBuilder<E> simplePath(); public abstract void markContainer(); |