You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2018/06/20 11:28:38 UTC
[38/50] tinkerpop git commit: TINKERPOP-1878 More tests for ordering
TINKERPOP-1878 More tests for ordering
Factored the order index creation into its own method to tidy up a bit.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b606a49f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b606a49f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b606a49f
Branch: refs/heads/TINKERPOP-1878
Commit: b606a49fccff2631e7e3dc6cbc512452d2bcc1f8
Parents: ccda087
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jan 26 15:56:55 2018 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 20 07:27:45 2018 -0400
----------------------------------------------------------------------
.../sparql/SparqlToGremlinTranspiler.java | 29 ++++++++++++++------
.../dsl/sparql/SparqlTraversalSourceTest.java | 6 ++++
2 files changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b606a49f/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinTranspiler.java
----------------------------------------------------------------------
diff --git a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinTranspiler.java b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinTranspiler.java
index ea3f828..c3bc907 100644
--- a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinTranspiler.java
+++ b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/SparqlToGremlinTranspiler.java
@@ -99,15 +99,8 @@ public class SparqlToGremlinTranspiler {
arrayOfAllTraversals[traversalIndex++] = tempTrav;
}
- final Map<String, Order> orderingIndex = new HashMap<>();
- if (query.hasOrderBy()) {
- final List<SortCondition> sortingConditions = query.getOrderBy();
-
- for (SortCondition sortCondition : sortingConditions) {
- final Expr expr = sortCondition.getExpression();
- orderingIndex.put(expr.getVarName(), sortCondition.getDirection() == 1 ? Order.incr : Order.decr);
- }
- }
+ // creates a map of ordering keys and their ordering direction
+ final Map<String, Order> orderingIndex = createOrderIndexFromQuery(query);
if (traversalList.size() > 0)
traversal = traversal.match(arrayOfAllTraversals);
@@ -203,6 +196,24 @@ public class SparqlToGremlinTranspiler {
return traversal;
}
+ /**
+ * Extracts any {@code SortCondition} instances from the SPARQL query and holds them in an index of their keys
+ * where the value is that keys sorting direction.
+ */
+ private static Map<String, Order> createOrderIndexFromQuery(final Query query) {
+ final Map<String, Order> orderingIndex = new HashMap<>();
+ if (query.hasOrderBy()) {
+ final List<SortCondition> sortingConditions = query.getOrderBy();
+
+ for (SortCondition sortCondition : sortingConditions) {
+ final Expr expr = sortCondition.getExpression();
+ orderingIndex.put(expr.getVarName(), sortCondition.getDirection() == 1 ? Order.incr : Order.decr);
+ }
+ }
+
+ return orderingIndex;
+ }
+
private static GraphTraversal<Vertex, ?> transpile(final GraphTraversalSource g, final Query query) {
return new SparqlToGremlinTranspiler(g).transpile(query);
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b606a49f/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java
----------------------------------------------------------------------
diff --git a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java
index 2743255..1b39813 100644
--- a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java
+++ b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java
@@ -82,4 +82,10 @@ public class SparqlTraversalSourceTest {
}}
));
}
+
+ @Test
+ public void shouldFindAllNamesOrdered() {
+ final List<?> x = g.sparql("SELECT ?name WHERE { ?person v:name ?name } ORDER BY DESC(?name)").toList();
+ assertThat(x, contains("vadas", "ripple", "peter", "marko", "lop", "josh"));
+ }
}