TINKERPOP-1956 Deprecated Order.incr and Order.decr Replaced by Order.asc and Order.desc respectively. Left a number of uses of decr/incr so as to ensure ongoing compatibility during deprecation.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a937287d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a937287d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a937287d Branch: refs/heads/TINKERPOP-1956 Commit: a937287d983c179668af92696f6e43e2151568bf Parents: 7d8cb06 Author: Stephen Mallette <[email protected]> Authored: Fri Apr 27 06:22:13 2018 -0400 Committer: Stephen Mallette <[email protected]> Committed: Fri Apr 27 15:21:27 2018 -0400 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 7 + docs/site/home/gremlin.html | 4 +- docs/site/home/index.html | 2 +- docs/site/home/js/prism.js | 2 +- docs/src/dev/io/graphson.asciidoc | 8 +- docs/src/dev/io/gryo.asciidoc | 4 +- docs/src/recipes/centrality.asciidoc | 6 +- docs/src/recipes/collections.asciidoc | 2 +- docs/src/recipes/recommendation.asciidoc | 16 +- docs/src/recipes/style-guide.asciidoc | 4 +- docs/src/reference/gremlin-variants.asciidoc | 10 +- docs/src/reference/the-graph.asciidoc | 2 +- docs/src/reference/the-traversal.asciidoc | 61 ++++---- .../gremlin-language-variants/index.asciidoc | 2 +- docs/src/upgrade/release-3.3.x.asciidoc | 19 ++- .../gremlin/process/traversal/Order.java | 40 +++++ .../traversal/step/map/OrderGlobalStep.java | 4 +- .../traversal/step/map/OrderLocalStep.java | 4 +- .../util/function/ChainedComparator.java | 2 +- .../gremlin/util/function/MultiComparator.java | 2 +- .../gremlin/process/traversal/BytecodeTest.java | 6 +- .../gremlin/process/traversal/OrderTest.java | 15 ++ .../traversal/step/map/OrderGlobalStepTest.java | 8 +- .../traversal/step/map/OrderLocalStepTest.java | 8 +- .../PathRetractionStrategyTest.java | 2 +- .../LambdaRestrictionStrategyTest.java | 4 +- .../util/function/MultiComparatorTest.java | 6 +- .../Process/Traversal/NamingConversions.cs | 2 + .../src/Gremlin.Net/Process/Traversal/Order.cs | 6 + .../DriverRemoteConnection/EnumTests.cs | 2 +- .../gremlin-javascript/lib/process/traversal.js | 2 +- .../test/unit/traversal-test.js | 4 +- .../jython/gremlin_python/process/traversal.py | 4 +- gremlin-test/features/branch/Local.feature | 2 +- gremlin-test/features/filter/Dedup.feature | 4 +- gremlin-test/features/map/AddEdge.feature | 4 +- gremlin-test/features/map/Match.feature | 4 +- gremlin-test/features/map/Order.feature | 72 ++++++--- gremlin-test/features/map/Project.feature | 4 +- gremlin-test/features/map/Select.feature | 4 +- .../process/traversal/step/ComplexTest.java | 4 +- .../traversal/step/branch/LocalTest.java | 2 +- .../traversal/step/filter/DedupTest.java | 10 +- .../process/traversal/step/map/AddEdgeTest.java | 12 +- .../process/traversal/step/map/MatchTest.java | 12 +- .../process/traversal/step/map/MathTest.java | 12 +- .../process/traversal/step/map/OrderTest.java | 150 +++++++++++-------- .../traversal/step/map/PageRankTest.java | 20 +-- .../process/traversal/step/map/ProgramTest.java | 10 +- .../process/traversal/step/map/ProjectTest.java | 10 +- .../process/traversal/step/map/SelectTest.java | 10 +- .../decoration/SubgraphStrategyProcessTest.java | 2 +- .../gremlin/process/FeatureCoverageTest.java | 4 +- .../tinkerpop/gremlin/structure/io/Model.java | 2 +- .../io/AbstractTypedCompatibilityTest.java | 2 - .../io/graphson/_3_2_3/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_2_3/order-v2d0-partial.json | 2 +- .../io/graphson/_3_2_4/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_2_4/order-v2d0-partial.json | 2 +- .../io/graphson/_3_2_5/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_2_5/order-v2d0-partial.json | 2 +- .../io/graphson/_3_2_6/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_2_6/order-v2d0-partial.json | 2 +- .../io/graphson/_3_2_7/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_2_7/order-v2d0-partial.json | 2 +- .../io/graphson/_3_2_8/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_2_8/order-v2d0-partial.json | 2 +- .../io/graphson/_3_2_9/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_2_9/order-v2d0-partial.json | 2 +- .../io/graphson/_3_3_0/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_3_0/order-v2d0-partial.json | 2 +- .../io/graphson/_3_3_0/order-v3d0.json | 2 +- .../io/graphson/_3_3_1/order-v2d0-no-types.json | 2 +- .../io/graphson/_3_3_1/order-v2d0-partial.json | 2 +- .../io/graphson/_3_3_1/order-v3d0.json | 2 +- .../io/graphson/_3_3_2/order-v2d0-partial.json | 2 +- .../io/graphson/_3_3_2/order-v3d0.json | 2 +- .../io/graphson/_3_3_3/order-v2d0-partial.json | 2 +- .../io/graphson/_3_3_3/order-v3d0.json | 2 +- .../structure/io/gryo/_3_2_3/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_2_4/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_2_5/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_2_6/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_2_7/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_2_8/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_2_9/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_3_0/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_3_0/order-v3d0.kryo | 2 +- .../structure/io/gryo/_3_3_1/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_3_1/order-v3d0.kryo | 2 +- .../structure/io/gryo/_3_3_2/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_3_2/order-v3d0.kryo | 2 +- .../structure/io/gryo/_3_3_3/order-v1d0.kryo | 2 +- .../structure/io/gryo/_3_3_3/order-v3d0.kryo | 2 +- 94 files changed, 435 insertions(+), 269 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 3c5f4b8..1211ebe 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -20,6 +20,13 @@ limitations under the License. image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/gremlin-mozart.png[width=185] +[[release-3-3-4]] +=== TinkerPop 3.3.4 (Release Date: NOT OFFICIALLY RELEASED YET) + +This release also includes changes from <<release-3-2-10, 3.2.10>>. + +* Deprecated `Order` for `incr` and `decr` in favor of `asc` and `desc`. + [[release-3-3-3]] === TinkerPop 3.3.3 (Release Date: NOT OFFICIALLY RELEASED YET) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/site/home/gremlin.html ---------------------------------------------------------------------- diff --git a/docs/site/home/gremlin.html b/docs/site/home/gremlin.html index bedddf3..74e7c5e 100644 --- a/docs/site/home/gremlin.html +++ b/docs/site/home/gremlin.html @@ -153,7 +153,7 @@ g.V().has("name","gremlin"). out("bought").aggregate("stash"). in("bought").out("bought"). where(not(within("stash"))). - groupCount().order(local).by(values,decr) + groupCount().order(local).by(values,desc) </code></pre> </div> <div class="col-xs-7" style="border-left: thin solid #000000;height:148px"> @@ -177,7 +177,7 @@ g.V().hasLabel("person"). pageRank(). by("friendRank"). by(outE("knows")). - order().by("friendRank",decr). + order().by("friendRank",desc). limit(10)</code></pre> </div> <div class="col-xs-7" style="border-left: thin solid #000000;height:148px"> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/site/home/index.html ---------------------------------------------------------------------- diff --git a/docs/site/home/index.html b/docs/site/home/index.html index 9152a7e..b279547 100644 --- a/docs/site/home/index.html +++ b/docs/site/home/index.html @@ -133,7 +133,7 @@ limitations under the License. in("bought").out("bought"). where(not(within("stash"))). groupCount(). - order(local).by(values,decr) + order(local).by(values,desc) </code></pre> </div> </div> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/site/home/js/prism.js ---------------------------------------------------------------------- diff --git a/docs/site/home/js/prism.js b/docs/site/home/js/prism.js index 53661dd..999a43e 100644 --- a/docs/site/home/js/prism.js +++ b/docs/site/home/js/prism.js @@ -233,7 +233,7 @@ Prism.languages.clike = { punctuation: /[{}[\];(),.:]/ }; Prism.languages.gremlin = Prism.languages.extend("clike", { - keyword: /\b(values,|decr|incr|local|global|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/, + keyword: /\b(values,|decr|desc|incr|asc|local|global|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/, number: /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, "function": /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i }), Prism.languages.insertBefore("gremlin", "keyword", { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/dev/io/graphson.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/dev/io/graphson.asciidoc b/docs/src/dev/io/graphson.asciidoc index defebb3..d140a2f 100644 --- a/docs/src/dev/io/graphson.asciidoc +++ b/docs/src/dev/io/graphson.asciidoc @@ -143,7 +143,7 @@ file.withWriter { writer -> writer.write(toJson(Column.keys, "Column", "", "v2d0-partial")) writer.write(toJson(Direction.OUT, "Direction", "", "v2d0-partial")) writer.write(toJson(Operator.sum, "Operator", "", "v2d0-partial")) - writer.write(toJson(Order.incr, "Order", "", "v2d0-partial")) + writer.write(toJson(Order.shuffle, "Order", "", "v2d0-partial")) writer.write(toJson(org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.any, "Pick", "", "v2d0-partial")) writer.write(toJson(Pop.all, "Pop", "", "v2d0-partial")) writer.write(toJson(org.apache.tinkerpop.gremlin.util.function.Lambda.function("{ it.get() }"), "Lambda", "", "v2d0-partial")) @@ -272,7 +272,7 @@ file.withWriter { writer -> writer.write(toJson(Column.keys, "Column", "", "v2d0-no-types")) writer.write(toJson(Direction.OUT, "Direction", "", "v2d0-no-types")) writer.write(toJson(Operator.sum, "Operator", "", "v2d0-no-types")) - writer.write(toJson(Order.incr, "Order", "", "v2d0-no-types")) + writer.write(toJson(Order.shuffle, "Order", "", "v2d0-no-types")) writer.write(toJson(Pop.all, "Pop", "", "v2d0-no-types")) writer.write(toJson(org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.any, "Pick", "", "v2d0-no-types")) writer.write(toJson(org.apache.tinkerpop.gremlin.util.function.Lambda.function("{ it.get() }"), "Lambda", "", "v2d0-no-types")) @@ -2777,7 +2777,7 @@ The following `Bytecode` example represents the traversal of `g.V().hasLabel('pe ---- { "@type" : "g:Order", - "@value" : "incr" + "@value" : "shuffle" } ---- @@ -5138,7 +5138,7 @@ The following `Bytecode` example represents the traversal of `g.V().hasLabel('pe ---- { "@type" : "g:Order", - "@value" : "incr" + "@value" : "shuffle" } ---- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/dev/io/gryo.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/dev/io/gryo.asciidoc b/docs/src/dev/io/gryo.asciidoc index c824063..f327222 100644 --- a/docs/src/dev/io/gryo.asciidoc +++ b/docs/src/dev/io/gryo.asciidoc @@ -36,7 +36,7 @@ conf.setProperty(TinkerGraph.GREMLIN_TINKERGRAPH_DEFAULT_VERTEX_PROPERTY_CARDINA graph = TinkerGraph.open(conf) TinkerFactory.generateTheCrew(graph) g = graph.traversal() - + toGryo = { o, type, mapper, suffix = "" -> def fileToWriteTo = new File("io-output/test-case-data/gryo/" + type.toLowerCase().replace(" ","") + "-" + suffix + ".kryo") if (fileToWriteTo.exists()) fileToWriteTo.delete() @@ -75,7 +75,7 @@ toGryo(VertexProperty.Cardinality.list, "Cardinality", mapper, "v1d0") toGryo(Column.keys, "Column", mapper, "v1d0") toGryo(Direction.OUT, "Direction", mapper, "v1d0") toGryo(Operator.sum, "Operator", mapper, "v1d0") -toGryo(Order.incr, "Order", mapper, "v1d0") +toGryo(Order.shuffle, "Order", mapper, "v1d0") toGryo(Pop.all, "Pop", mapper, "v1d0") toGryo(org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.any, "Pick", mapper, "v1d0") toGryo(org.apache.tinkerpop.gremlin.util.function.Lambda.function("{ it.get() }"), "Lambda", mapper, "v1d0") http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/recipes/centrality.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/recipes/centrality.asciidoc b/docs/src/recipes/centrality.asciidoc index 1a3927e..8504589 100644 --- a/docs/src/recipes/centrality.asciidoc +++ b/docs/src/recipes/centrality.asciidoc @@ -34,7 +34,7 @@ g.V().group().by().by(inE().count()) <2> g.V().group().by().by(outE().count()) <3> g.V().project("v","degree").by().by(bothE().count()) <4> g.V().project("v","degree").by().by(bothE().count()). <5> - order().by(select("degree"), decr). + order().by(select("degree"), desc). limit(4) ---- @@ -158,9 +158,9 @@ give it the highest rank. Consider the following example using the Grateful Dead ---- graph.io(graphml()).readGraph('data/grateful-dead.xml') g.V().repeat(groupCount('m').by('name').out()).times(5).cap('m'). <1> - order(local).by(values, decr).limit(local, 10).next() <2> + order(local).by(values, desc).limit(local, 10).next() <2> g.V().repeat(groupCount('m').by('name').out().timeLimit(100)).times(5).cap('m'). <3> - order(local).by(values, decr).limit(local, 10).next() + order(local).by(values, desc).limit(local, 10).next() ---- <1> The traversal iterates through each vertex in the graph and for each one repeatedly group counts each vertex that http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/recipes/collections.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/recipes/collections.asciidoc b/docs/src/recipes/collections.asciidoc index d027376..7ee4b1b 100644 --- a/docs/src/recipes/collections.asciidoc +++ b/docs/src/recipes/collections.asciidoc @@ -97,7 +97,7 @@ g.V().union(limit(3).fold(),tail(3).fold()) <1> g.V().union(limit(3).fold(),tail(3).fold()). local(unfold(). <2> order(). - by(bothE().count(),decr). + by(bothE().count(),desc). limit(1). fold()) g.V().union(limit(3).fold(),tail(3).fold()). <3> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/recipes/recommendation.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/recipes/recommendation.asciidoc b/docs/src/recipes/recommendation.asciidoc index 9fefce2..aa4feb6 100644 --- a/docs/src/recipes/recommendation.asciidoc +++ b/docs/src/recipes/recommendation.asciidoc @@ -134,7 +134,7 @@ g.V().has('person','name','alice').as('her'). <1> out('bought').where(without('self')). <4> groupCount(). order(local). - by(values, decr) <5> + by(values, desc) <5> ---- <1> Find "alice" who is the person for whom the product recommendation is being made. @@ -183,7 +183,7 @@ g.V().has("person","name","alice").as("alice"). where(within("self")).count()). select(values). order(local). - by(decr).limit(local, 1) + by(desc).limit(local, 1) ---- With the maximum value available, it can be used to chose those "person" vertices that have the three products in @@ -199,7 +199,7 @@ g.V().has("person","name","alice").as("alice"). where(within("self")).count()).as("g"). select(values). order(local). - by(decr).limit(local, 1).as("m"). + by(desc).limit(local, 1).as("m"). select("g").unfold(). where(select(values).as("m")).select(keys) ---- @@ -217,7 +217,7 @@ g.V().has("person","name","alice").as("alice"). where(within("self")).count()).as("g"). select(values). order(local). - by(decr).limit(local, 1).as("m"). + by(desc).limit(local, 1).as("m"). select("g").unfold(). where(select(values).as("m")).select(keys). out("bought").where(without("self")) @@ -235,13 +235,13 @@ g.V().has("person","name","alice").as("alice"). where(within("self")).count()).as("g"). select(values). order(local). - by(decr).limit(local, 1).as("m"). + by(desc).limit(local, 1).as("m"). select("g").unfold(). where(select(values).as("m")).select(keys). out("bought").where(without("self")). groupCount(). order(local). - by(values, decr). + by(values, desc). by(select(keys).values("name")). unfold().select(keys).values("name") ---- @@ -257,7 +257,7 @@ g.V().has('person','name','alice').as('her'). out('bought').where(without('self')). groupCount(). order(local). - by(values, decr) + by(values, desc) ---- The above traversal performs a full ranking of items based on all the connected data. That could be a time consuming @@ -280,7 +280,7 @@ g.V().has('person','name','alice').as('her'). out('bought').where(without('self')).timeLimit(1000). groupCount(). order(local). - by(values, decr) + by(values, desc) ---- In using sampling methods, it is important to consider that the natural ordering of edges in the graph may not produce http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/recipes/style-guide.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/recipes/style-guide.asciidoc b/docs/src/recipes/style-guide.asciidoc index 6da682d..de2aa08 100644 --- a/docs/src/recipes/style-guide.asciidoc +++ b/docs/src/recipes/style-guide.asciidoc @@ -49,8 +49,8 @@ g.V().out('knows').out('created'). <1> select('java').unfold(). <3> in('created').hasLabel('person'). <4> order(). <5> - by(inE().count(),decr). <6> - by('age',incr). + by(inE().count(),desc). <6> + by('age',asc). dedup().limit(10).values('name') <7> ---- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/reference/gremlin-variants.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index cff14e1..8aa2435 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -214,7 +214,7 @@ These can be used analogously to how they are used in Gremlin-Java. [gremlin-python,modern] ---- -g.V().hasLabel('person').has('age',P.gt(30)).order().by('age',Order.decr).toList() +g.V().hasLabel('person').has('age',P.gt(30)).order().by('age',Order.desc).toList() ---- Moreover, by importing the `statics` of Gremlin-Python, the class prefixes can be omitted. @@ -226,7 +226,7 @@ With statics loaded its possible to represent the above traversal as below. [gremlin-python,modern] ---- -g.V().hasLabel('person').has('age',gt(30)).order().by('age',decr).toList() +g.V().hasLabel('person').has('age',gt(30)).order().by('age',desc).toList() ---- Finally, statics includes all the `__`-methods and thus, anonymous traversals like `__.out()` can be expressed as below. @@ -373,7 +373,7 @@ Gremlin has various tokens (e.g. `T`, `P`, `Order`, `Operator`, etc.) that are r These can be used analogously to how they are used in Gremlin-Java. [source,csharp] -g.V().HasLabel("person").Has("age",P.Gt(30)).Order().By("age",Order.decr).ToList() +g.V().HasLabel("person").Has("age",P.Gt(30)).Order().By("age",Order.desc).ToList() Moreover, the class prefixes can be omitted with a `using static`. @@ -386,7 +386,7 @@ using static Gremlin.Net.Process.Traversal.Order; Then it is possible to represent the above traversal as below. [source,csharp] -g.V().HasLabel("person").Has("age",Gt(30)).Order().By("age",decr).ToList() +g.V().HasLabel("person").Has("age",Gt(30)).Order().By("age",desc).ToList() Finally, with using static `__`, anonymous traversals like `__.Out()` can be expressed as below. That is, without the `__.`-prefix. @@ -532,7 +532,7 @@ Gremlin has various tokens (e.g. `t`, `P`, `order`, `direction`, etc.) that are objects. [source,javascript] -g.V().hasLabel('person').has('age', P.gt(30)).order().by('age', order.decr).toList() +g.V().hasLabel('person').has('age', P.gt(30)).order().by('age', order.desc).toList() These objects must be required manually from the `process` namespace: http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/reference/the-graph.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc index a3b2bd3..42b2215 100644 --- a/docs/src/reference/the-graph.asciidoc +++ b/docs/src/reference/the-graph.asciidoc @@ -133,7 +133,7 @@ g.V().as('a'). hasNot('endTime').as('c'). select('a','b','c').by('name').by(value).by('startTime') // determine the current location of each person g.V().has('name','gremlin').inE('uses'). - order().by('skill',incr).as('a'). + order().by('skill',asc).as('a'). outV().as('b'). select('a','b').by('skill').by('name') // rank the users of gremlin by their skill level ---- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/reference/the-traversal.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index 11f24e4..7da60b8 100644 --- a/docs/src/reference/the-traversal.asciidoc +++ b/docs/src/reference/the-traversal.asciidoc @@ -1147,10 +1147,10 @@ Note that the examples below use the <<the-crew-toy-graph,The Crew>> toy data se [gremlin-groovy,theCrew] ---- g.V().as('person'). - properties('location').order().by('startTime',incr).limit(2).value().as('location'). + properties('location').order().by('startTime',asc).limit(2).value().as('location'). select('person','location').by('name').by() <1> g.V().as('person'). - local(properties('location').order().by('startTime',incr).limit(2)).value().as('location'). + local(properties('location').order().by('startTime',asc).limit(2)).value().as('location'). select('person','location').by('name').by() <2> ---- @@ -1626,8 +1626,8 @@ When the objects of the traversal stream need to be sorted, `order()`-step (*map [gremlin-groovy,modern] ---- g.V().values('name').order() -g.V().values('name').order().by(decr) -g.V().hasLabel('person').order().by('age', incr).values('name') +g.V().values('name').order().by(desc) +g.V().hasLabel('person').order().by('age', asc).values('name') ---- One of the most traversed objects in a traversal is an `Element`. An element can have properties associated with it @@ -1637,8 +1637,8 @@ comparison of their properties. [gremlin-groovy,modern] ---- g.V().values('name') -g.V().order().by('name',incr).values('name') -g.V().order().by('name',decr).values('name') +g.V().order().by('name',asc).values('name') +g.V().order().by('name',desc).values('name') ---- The `order()`-step allows the user to provide an arbitrary number of comparators for primary, secondary, etc. sorting. @@ -1647,10 +1647,10 @@ based on the age of the person. [gremlin-groovy,modern] ---- -g.V().hasLabel('person').order().by(outE('created').count(), incr). - by('age', incr).values('name') -g.V().hasLabel('person').order().by(outE('created').count(), incr). - by('age', decr).values('name') +g.V().hasLabel('person').order().by(outE('created').count(), asc). + by('age', asc).values('name') +g.V().hasLabel('person').order().by(outE('created').count(), asc). + by('age', desc).values('name') ---- Randomizing the order of the traversers at a particular point in the traversal is possible with `Order.shuffle`. @@ -1666,10 +1666,10 @@ It is possible to use `order(local)` to order the current local object and not t [gremlin-groovy,modern] ---- -g.V().values('age').fold().order(local).by(decr) <1> -g.V().values('age').order(local).by(decr) <2> -g.V().groupCount().by(inE().count()).order(local).by(values, decr) <3> -g.V().groupCount().by(inE().count()).order(local).by(keys, incr) <4> +g.V().values('age').fold().order(local).by(desc) <1> +g.V().values('age').order(local).by(desc) <2> +g.V().groupCount().by(inE().count()).order(local).by(values, desc) <3> +g.V().groupCount().by(inE().count()).order(local).by(keys, asc) <4> ---- <1> The ages are gathered into a list and then that list is sorted in decreasing order. @@ -1679,11 +1679,16 @@ g.V().groupCount().by(inE().count()).order(local).by(keys, incr) <4> NOTE: The `values` and `keys` enums are from `Column` which is used to select "columns" from a `Map`, `Map.Entry`, or `Path`. +NOTE: Prior to version 3.3.4, ordering was defined by `Order.incr` for ascending order and `Order.decr` for descending +order. That approach is now deprecated with the preferred method shown in the examples which uses the more common +forms for query languages in `Order.asc` and Order.desc. + *Additional References* link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#order--++[`order()`], link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#order-org.apache.tinkerpop.gremlin.process.traversal.Scope-++[`order(Scope)`], -link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/Scope.html++[`Scope`] +link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/Scope.html++[`Scope`], +link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/Order.html++[`Order`] [[pagerank-step]] === PageRank Step @@ -1700,7 +1705,7 @@ g.V().hasLabel('person'). pageRank(). by(outE('knows')). by('friendRank'). - order().by('friendRank',decr).valueMap('name','friendRank') + order().by('friendRank',desc).valueMap('name','friendRank') ---- The <<explain-step,`explain()`>>-step can be used to understand how the traversal is compiled into multiple `GraphComputer` jobs. @@ -1712,7 +1717,7 @@ g.V().hasLabel('person'). pageRank(). by(outE('knows')). by('friendRank'). - order().by('friendRank',decr).valueMap('name','friendRank').explain() + order().by('friendRank',desc).valueMap('name','friendRank').explain() ---- *Additional References* @@ -1871,7 +1876,7 @@ g.V().out('created'). project('a','b'). by('name'). by(__.in('created').count()). - order().by(select('b'),decr). + order().by(select('b'),desc). select('a') g.V().has('name','marko'). project('out','in'). @@ -1974,7 +1979,7 @@ Finally, an example is provided using `PageRankVertexProgram` which doesn't use g = graph.traversal().withComputer() g.V().hasLabel('person'). program(PageRankVertexProgram.build().property('rank').create(graph)). - order().by('rank', incr). + order().by('rank', asc). valueMap('name', 'rank') ---- @@ -2304,11 +2309,11 @@ ranking. graph.io(graphml()).readGraph('data/grateful-dead.xml') g = graph.traversal() g.V().hasLabel('song').out('followedBy').groupCount().by('name'). - order(local).by(values,decr).limit(local, 5) + order(local).by(values,desc).limit(local, 5) g.V().hasLabel('song').out('followedBy').groupCount().by('name'). - order(local).by(values,decr).limit(local, 5).select(keys) + order(local).by(values,desc).limit(local, 5).select(keys) g.V().hasLabel('song').out('followedBy').groupCount().by('name'). - order(local).by(values,decr).limit(local, 5).select(keys).unfold() + order(local).by(values,desc).limit(local, 5).select(keys).unfold() ---- Similarly, for extracting the values from a path or map. @@ -2320,7 +2325,7 @@ g = graph.traversal() g.V().hasLabel('song').out('sungBy').groupCount().by('name') <1> g.V().hasLabel('song').out('sungBy').groupCount().by('name').select(values) <2> g.V().hasLabel('song').out('sungBy').groupCount().by('name').select(values).unfold(). - groupCount().order(local).by(values,decr).limit(local, 5) <3> + groupCount().order(local).by(values,desc).limit(local, 5) <3> ---- <1> Which artist sung how many songs? @@ -2632,10 +2637,10 @@ that can be used to time execution of a body of code. [gremlin-groovy,modern] ---- -g.V().repeat(both().groupCount('m')).times(16).cap('m').order(local).by(values,decr).next() -clock(1) {g.V().repeat(both().groupCount('m')).times(16).cap('m').order(local).by(values,decr).next()} -g.V().repeat(timeLimit(2).both().groupCount('m')).times(16).cap('m').order(local).by(values,decr).next() -clock(1) {g.V().repeat(timeLimit(2).both().groupCount('m')).times(16).cap('m').order(local).by(values,decr).next()} +g.V().repeat(both().groupCount('m')).times(16).cap('m').order(local).by(values,desc).next() +clock(1) {g.V().repeat(both().groupCount('m')).times(16).cap('m').order(local).by(values,desc).next()} +g.V().repeat(timeLimit(2).both().groupCount('m')).times(16).cap('m').order(local).by(values,desc).next() +clock(1) {g.V().repeat(timeLimit(2).both().groupCount('m')).times(16).cap('m').order(local).by(values,desc).next()} ---- In essence, the relative order is respected, even through the number of traversers at each vertex is not. The primary @@ -3087,7 +3092,7 @@ A few more examples of the use of `Scope` are provided below: ---- g.V().both().group().by(label).select('software').dedup(local) g.V().groupCount().by(label).select(values).min(local) -g.V().groupCount().by(label).order(local).by(values,decr) +g.V().groupCount().by(label).order(local).by(values,desc) g.V().fold().sample(local,2) ---- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/tutorials/gremlin-language-variants/index.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/tutorials/gremlin-language-variants/index.asciidoc b/docs/src/tutorials/gremlin-language-variants/index.asciidoc index db1a8f9..ebc988f 100644 --- a/docs/src/tutorials/gremlin-language-variants/index.asciidoc +++ b/docs/src/tutorials/gremlin-language-variants/index.asciidoc @@ -49,7 +49,7 @@ public class MyApplication { // assumes that args[1] and args[2] are range boundaries Iterator<Map<String,Double>> result = g.V().hasLabel("product"). - order().by("unitPrice", incr). + order().by("unitPrice", asc). range(Integer.valueOf(args[1]), Integer.valueOf(args[2])). valueMap("name", "unitPrice") http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/docs/src/upgrade/release-3.3.x.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/upgrade/release-3.3.x.asciidoc b/docs/src/upgrade/release-3.3.x.asciidoc index 79b7ef5..cb10fdb 100644 --- a/docs/src/upgrade/release-3.3.x.asciidoc +++ b/docs/src/upgrade/release-3.3.x.asciidoc @@ -21,7 +21,24 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima *Gremlin Symphony #40 in G Minor* -== TinkerPop 3.3.2 +== TinkerPop 3.3.4 + +*Release Date: NOT OFFICIALLY RELEASED YET* + +Please see the link:https://github.com/apache/tinkerpop/blob/3.3.4/CHANGELOG.asciidoc#release-3-3-4[changelog] for a complete list of all the modifications that are part of this release. + +=== Upgrading for Users + +==== Introducing Order.asc and Order.desc + +The `Order` enum originally introduced `incr` for ascending order and `decr` for descending order. It's not clear why +they were named this way when common querying parlance would call for `asc` and `desc` for those respective cases. Note +that `incr` and `decr` have not been removed - just deprecated and thus marked for future removal. Prefer `asc` and +`desc` going forward when writing Gremlin and look to update existing code using the deprecated values. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-1956[TINKERPOP-1956] + +== TinkerPop 3.3.3 *Release Date: NOT OFFICIALLY RELEASED YET* http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java index 0b88bba..9e89479 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java @@ -35,6 +35,7 @@ public enum Order implements Comparator<Object> { * Order in ascending fashion * * @since 3.0.0-incubating + * @deprecated As of release 3.3.4, replaced by {@link #asc}. */ incr { @Override @@ -54,6 +55,7 @@ public enum Order implements Comparator<Object> { * Order in descending fashion. * * @since 3.0.0-incubating + * @deprecated As of release 3.3.4, replaced by {@link #desc}. */ decr { @Override @@ -84,6 +86,44 @@ public enum Order implements Comparator<Object> { public Order reversed() { return shuffle; } + }, + + /** + * Order in ascending fashion + * + * @since 3.3.4 + */ + asc { + @Override + public int compare(final Object first, final Object second) { + return first instanceof Number && second instanceof Number + ? NumberHelper.compare((Number) first, (Number) second) + : Comparator.<Comparable>naturalOrder().compare((Comparable) first, (Comparable) second); + } + + @Override + public Order reversed() { + return decr; + } + }, + + /** + * Order in descending fashion. + * + * @since 3.3.4 + */ + desc { + @Override + public int compare(final Object first, final Object second) { + return first instanceof Number && second instanceof Number + ? NumberHelper.compare((Number) second, (Number) first) + : Comparator.<Comparable>reverseOrder().compare((Comparable) first, (Comparable) second); + } + + @Override + public Order reversed() { + return incr; + } }; private static final Random RANDOM = new Random(); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java index fa705f4..fa80e97 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java @@ -90,7 +90,7 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa @Override public void modulateBy(final Traversal.Admin<?, ?> traversal) { - this.modulateBy(traversal, Order.incr); + this.modulateBy(traversal, Order.asc); } @Override @@ -100,7 +100,7 @@ public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBa @Override public List<Pair<Traversal.Admin<S, C>, Comparator<C>>> getComparators() { - return this.comparators.isEmpty() ? Collections.singletonList(new Pair<>(new IdentityTraversal(), (Comparator) Order.incr)) : Collections.unmodifiableList(this.comparators); + return this.comparators.isEmpty() ? Collections.singletonList(new Pair<>(new IdentityTraversal(), (Comparator) Order.asc)) : Collections.unmodifiableList(this.comparators); } @Override http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java index 56f3404..95cb6db 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java @@ -72,7 +72,7 @@ public final class OrderLocalStep<S, C extends Comparable> extends MapStep<S, S> @Override public void modulateBy(final Traversal.Admin<?, ?> traversal) { - this.addComparator((Traversal.Admin<S, C>) traversal, (Comparator) Order.incr); + this.addComparator((Traversal.Admin<S, C>) traversal, (Comparator) Order.asc); } @Override @@ -82,7 +82,7 @@ public final class OrderLocalStep<S, C extends Comparable> extends MapStep<S, S> @Override public List<Pair<Traversal.Admin<S, C>, Comparator<C>>> getComparators() { - return this.comparators.isEmpty() ? Collections.singletonList(new Pair<>(new IdentityTraversal(), (Comparator) Order.incr)) : Collections.unmodifiableList(this.comparators); + return this.comparators.isEmpty() ? Collections.singletonList(new Pair<>(new IdentityTraversal(), (Comparator) Order.asc)) : Collections.unmodifiableList(this.comparators); } @Override http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java index bdb2e6d..984767f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java @@ -43,7 +43,7 @@ public final class ChainedComparator<S, C extends Comparable> implements Compara public ChainedComparator(final boolean traversers, final List<Pair<Traversal.Admin<S, C>, Comparator<C>>> comparators) { this.traversers = traversers; if (comparators.isEmpty()) - this.comparators.add(new Pair<>(new IdentityTraversal(), (Comparator) Order.incr)); + this.comparators.add(new Pair<>(new IdentityTraversal(), (Comparator) Order.asc)); else this.comparators.addAll(comparators); this.isShuffle = (Comparator) (this.comparators.get(this.comparators.size() - 1).getValue1()) == Order.shuffle; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MultiComparator.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MultiComparator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MultiComparator.java index d97d147..3adf1b8 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MultiComparator.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MultiComparator.java @@ -51,7 +51,7 @@ public final class MultiComparator<C> implements Comparator<C>, Serializable { @Override public int compare(final C objectA, final C objectB) { if (this.comparators.isEmpty()) { - return Order.incr.compare(objectA, objectB); + return Order.asc.compare(objectA, objectB); } else { for (int i = this.startIndex; i < this.comparators.size(); i++) { final int comparison = this.comparators.get(i).compare(this.getObject(objectA, i), this.getObject(objectB, i)); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/BytecodeTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/BytecodeTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/BytecodeTest.java index 7b1d810..1512d53 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/BytecodeTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/BytecodeTest.java @@ -44,9 +44,9 @@ public class BytecodeTest { @Test public void shouldHaveProperHashAndEquality() { final GraphTraversalSource g = EmptyGraph.instance().traversal(); - final Traversal.Admin traversal1 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.keys).order().by(Order.decr).asAdmin(); - final Traversal.Admin traversal2 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.keys).order().by(Order.decr).asAdmin(); - final Traversal.Admin traversal3 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.values).order().by(Order.decr).asAdmin(); + final Traversal.Admin traversal1 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.keys).order().by(Order.desc).asAdmin(); + final Traversal.Admin traversal2 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.keys).order().by(Order.desc).asAdmin(); + final Traversal.Admin traversal3 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.values).order().by(Order.desc).asAdmin(); assertEquals(traversal1, traversal2); assertNotEquals(traversal1, traversal3); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java index 01d93ea..a8124c6 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/OrderTest.java @@ -42,6 +42,21 @@ public class OrderTest { @Parameterized.Parameters(name = "{0}.test({1},{2})") public static Iterable<Object[]> data() throws ParseException { return new ArrayList<>(Arrays.asList(new Object[][]{ + {Order.asc, Arrays.asList("b", "a", "c", "d"), Arrays.asList("a", "b", "c", "d")}, + {Order.desc, Arrays.asList("b", "a", "c", "d"), Arrays.asList("d", "c", "b", "a")}, + {Order.asc, Arrays.asList(formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2020"), formatter.parse("1-Jan-2008")), + Arrays.asList(formatter.parse("1-Jan-2008"), formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2020"))}, + {Order.desc, Arrays.asList(formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2020"), formatter.parse("1-Jan-2008")), + Arrays.asList(formatter.parse("1-Jan-2020"), formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2008"))}, + {Order.desc, Arrays.asList(100L, 1L, -1L, 0L), Arrays.asList(100L, 1L, 0L, -1L)}, + {Order.asc, Arrays.asList(100.1f, 1.1f, -1.1f, 0.1f), Arrays.asList(-1.1f, 0.1f, 1.1f, 100.1f)}, + {Order.desc, Arrays.asList(100.1f, 1.1f, -1.1f, 0.1f), Arrays.asList(100.1f, 1.1f, 0.1f, -1.1f)}, + {Order.asc, Arrays.asList(100.1d, 1.1d, -1.1d, 0.1d), Arrays.asList(-1.1d, 0.1d, 1.1d, 100.1d)}, + {Order.desc, Arrays.asList(100.1d, 1.1d, -1.1d, 0.1d), Arrays.asList(100.1d, 1.1d, 0.1d, -1.1d)}, + {Order.asc, Arrays.asList(100L, 1L, -1L, 0L), Arrays.asList(-1L, 0L, 1L, 100L)}, + {Order.desc, Arrays.asList(100L, 1L, -1L, 0L), Arrays.asList(100L, 1L, 0L, -1L)}, + {Order.asc, Arrays.asList(100, 1, -1, 0), Arrays.asList(-1, 0, 1, 100)}, + {Order.desc, Arrays.asList(100, 1, -1, 0), Arrays.asList(100, 1, 0, -1)}, {Order.incr, Arrays.asList("b", "a", "c", "d"), Arrays.asList("a", "b", "c", "d")}, {Order.decr, Arrays.asList("b", "a", "c", "d"), Arrays.asList("d", "c", "b", "a")}, {Order.incr, Arrays.asList(formatter.parse("1-Jan-2018"), formatter.parse("1-Jan-2020"), formatter.parse("1-Jan-2008")), http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java index 82acad3..31457fc 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java @@ -45,7 +45,13 @@ public class OrderGlobalStepTest extends StepTest { __.order().by("age", Order.decr), __.order().by(outE().count(), Order.incr), __.order().by("age", Order.incr).by(outE().count(), Order.incr), - __.order().by(outE().count(), Order.incr).by("age", Order.incr) + __.order().by(outE().count(), Order.incr).by("age", Order.incr), + __.order().by(Order.desc), + __.order().by("age", Order.asc), + __.order().by("age", Order.desc), + __.order().by(outE().count(), Order.asc), + __.order().by("age", Order.asc).by(outE().count(), Order.asc), + __.order().by(outE().count(), Order.asc).by("age", Order.asc) ); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java index 8cc2e7e..5999793 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java @@ -47,7 +47,13 @@ public class OrderLocalStepTest extends StepTest { __.order(Scope.local).by("age", Order.decr), __.order(Scope.local).by(outE().count(), Order.incr), __.order(Scope.local).by("age", Order.incr).by(outE().count(), Order.incr), - __.order(Scope.local).by(outE().count(), Order.incr).by("age", Order.incr) + __.order(Scope.local).by(outE().count(), Order.incr).by("age", Order.incr), + __.order(Scope.local).by(Order.desc), + __.order(Scope.local).by("age", Order.asc), + __.order(Scope.local).by("age", Order.desc), + __.order(Scope.local).by(outE().count(), Order.asc), + __.order(Scope.local).by("age", Order.asc).by(outE().count(), Order.asc), + __.order(Scope.local).by(outE().count(), Order.asc).by("age", Order.asc) ); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java index 240ff1a..0669b08 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java @@ -201,7 +201,7 @@ public class PathRetractionStrategyTest { {__.V().select("a").map(select("b").repeat(select("c"))).select("a"), "[[a, b, c], [[a, c], [[a, c]]], []]", null}, {__.V().out("created").project("a", "b").by("name").by(__.in("created").count()).order().by(select("b")).select("a"), "[[[a]], []]", null}, - {__.order().by("weight", Order.decr).store("w").by("weight").filter(values("weight").as("cw"). + {__.order().by("weight", Order.desc).store("w").by("weight").filter(values("weight").as("cw"). select("w").by(limit(Scope.local, 1)).as("mw").where("cw", eq("mw"))).project("from", "to", "weight").by(__.outV()).by(__.inV()).by("weight"), "[[[cw, mw], []]]", null}, {__.V().limit(1).as("z").out().repeat(store("seen").out().where(without("seen"))).until(where(eq("z"))), http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java index b79d2c9..06309ea 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java @@ -63,9 +63,9 @@ public class LambdaRestrictionStrategyTest { {"order().by((a,b)->a.compareTo(b))", __.order().by((a, b) -> ((Integer) a).compareTo((Integer) b)), false}, {"order(local).by((a,b)->a.compareTo(b))", __.order(Scope.local).by((a, b) -> ((Integer) a).compareTo((Integer) b)), false}, {"__.choose(v->v.toString().equals(\"marko\"),__.out(),__.in())", __.choose(v -> v.toString().equals("marko"), __.out(), __.in()), false}, - {"order().by(label,decr)", __.order().by(T.label, Order.decr), true}, + {"order().by(label,desc)", __.order().by(T.label, Order.desc), true}, {"order(local).by(values)", __.order(Scope.local).by(values), true}, - {"order(local).by(values,decr)", __.order(Scope.local).by(values,Order.decr), true}, + {"order(local).by(values,desc)", __.order(Scope.local).by(values,Order.desc), true}, {"order(local).by(values,(a,b) -> a.compareTo(b))", __.order(Scope.local).by(values, (a, b) -> ((Double) a).compareTo((Double) b)), false}, // {"groupCount().by(label)", __.groupCount().by(T.label), true}, http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/MultiComparatorTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/MultiComparatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/MultiComparatorTest.java index de2a741..83520be 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/MultiComparatorTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/MultiComparatorTest.java @@ -39,20 +39,20 @@ public class MultiComparatorTest { @Test public void shouldHandleShuffleCorrectly() { - MultiComparator<Object> comparator = new MultiComparator<>(Arrays.asList(Order.incr, Order.decr, Order.shuffle)); + MultiComparator<Object> comparator = new MultiComparator<>(Arrays.asList(Order.asc, Order.desc, Order.shuffle)); assertTrue(comparator.isShuffle()); // because its a shuffle, the comparator simply returns 0 for (int i = 0; i < 100; i++) { assertEquals(0, comparator.compare(RANDOM.nextInt(), RANDOM.nextInt())); } // - comparator = new MultiComparator<>(Arrays.asList(Order.incr, Order.shuffle, Order.decr)); + comparator = new MultiComparator<>(Arrays.asList(Order.asc, Order.shuffle, Order.desc)); assertEquals(1, comparator.compare(1, 2)); assertEquals(-1, comparator.compare(2, 1)); assertEquals(0, comparator.compare(2, 2)); assertEquals(2, comparator.startIndex); assertFalse(comparator.isShuffle()); // - comparator = new MultiComparator<>(Arrays.asList(Order.incr, Order.shuffle, Order.decr, Order.shuffle, Order.incr)); + comparator = new MultiComparator<>(Arrays.asList(Order.asc, Order.shuffle, Order.desc, Order.shuffle, Order.asc)); assertEquals(-1, comparator.compare(1, 2)); assertEquals(1, comparator.compare(2, 1)); assertEquals(0, comparator.compare(2, 2)); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs ---------------------------------------------------------------------- diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs index 585c4f0..eadaa0e 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs @@ -72,6 +72,8 @@ namespace Gremlin.Net.Process.Traversal {"Order.Decr", "decr"}, {"Order.Incr", "incr"}, {"Order.Shuffle", "shuffle"}, + {"Order.Asc", "asc"}, + {"Order.Desc", "desc"}, {"Pick.Any", "any"}, {"Pick.None", "none"}, {"Pop.All", "all"}, http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs ---------------------------------------------------------------------- diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs index 2430114..9fce332 100644 --- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs +++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs @@ -36,15 +36,21 @@ namespace Gremlin.Net.Process.Traversal { } + public static Order Asc => new Order("asc"); + public static Order Decr => new Order("decr"); + public static Order Desc => new Order("desc"); + public static Order Incr => new Order("incr"); public static Order Shuffle => new Order("shuffle"); private static readonly IDictionary<string, Order> Properties = new Dictionary<string, Order> { + { "asc", Asc }, { "decr", Decr }, + { "desc", Desc }, { "incr", Incr }, { "shuffle", Shuffle }, }; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs ---------------------------------------------------------------------- diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs index 00541ad..b849769 100644 --- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs +++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs @@ -39,7 +39,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection var connection = _connectionFactory.CreateRemoteConnection(); var g = graph.Traversal().WithRemote(connection); - var orderedAges = g.V().Values<int>("age").Order().By(Order.Decr).ToList(); + var orderedAges = g.V().Values<int>("age").Order().By(Order.Desc).ToList(); Assert.Equal(new List<int> {35, 32, 29, 27}, orderedAges); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js index b214d8d..d39ccf0 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js @@ -260,7 +260,7 @@ module.exports = { graphSONVersion: toEnum('GraphSONVersion', 'V1_0 V2_0 V3_0'), gryoVersion: toEnum('GryoVersion', 'V1_0 V3_0'), operator: toEnum('Operator', 'addAll and assign div max min minus mult or sum sumLong'), - order: toEnum('Order', 'decr incr shuffle'), + order: toEnum('Order', 'asc decr desc incr shuffle'), pick: toEnum('Pick', 'any none'), pop: toEnum('Pop', 'all first last mixed'), scope: toEnum('Scope', 'global local'), http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js index 130a218..233488a 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js @@ -44,7 +44,7 @@ describe('Traversal', function () { it('should add steps with an enum value', function () { const g = new graph.Graph().traversal(); - const bytecode = g.V().order().by('age', t.order.decr).getBytecode(); + const bytecode = g.V().order().by('age', t.order.desc).getBytecode(); assert.ok(bytecode); assert.strictEqual(bytecode.sourceInstructions.length, 0); assert.strictEqual(bytecode.stepInstructions.length, 3); @@ -54,7 +54,7 @@ describe('Traversal', function () { assert.strictEqual(bytecode.stepInstructions[2][1], 'age'); assert.strictEqual(typeof bytecode.stepInstructions[2][2], 'object'); assert.strictEqual(bytecode.stepInstructions[2][2].typeName, 'Order'); - assert.strictEqual(bytecode.stepInstructions[2][2].elementName, 'decr'); + assert.strictEqual(bytecode.stepInstructions[2][2].elementName, 'desc'); }); }); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-python/src/main/jython/gremlin_python/process/traversal.py ---------------------------------------------------------------------- diff --git a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py index a820838..068c865 100644 --- a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py +++ b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py @@ -148,11 +148,13 @@ statics.add_static('or_', Operator.or_) statics.add_static('addAll', Operator.addAll) statics.add_static('sumLong', Operator.sumLong) -Order = Enum('Order', ' decr incr shuffle') +Order = Enum('Order', ' asc decr desc incr shuffle') statics.add_static('incr', Order.incr) statics.add_static('decr', Order.decr) statics.add_static('shuffle', Order.shuffle) +statics.add_static('asc', Order.asc) +statics.add_static('desc', Order.desc) Pick = Enum('Pick', ' any none') http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/features/branch/Local.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/branch/Local.feature b/gremlin-test/features/branch/Local.feature index 0abb1eb..3b7ab98 100644 --- a/gremlin-test/features/branch/Local.feature +++ b/gremlin-test/features/branch/Local.feature @@ -21,7 +21,7 @@ Feature: Step - local() Given the crew graph And the traversal of """ - g.V().local(__.properties("location").order().by(T.value, Order.incr).range(0, 2)).value() + g.V().local(__.properties("location").order().by(T.value, Order.asc).range(0, 2)).value() """ When iterated to list Then the result should be unordered http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/features/filter/Dedup.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/filter/Dedup.feature b/gremlin-test/features/filter/Dedup.feature index c502c96..501d02b 100644 --- a/gremlin-test/features/filter/Dedup.feature +++ b/gremlin-test/features/filter/Dedup.feature @@ -169,11 +169,11 @@ Feature: Step - dedup() | p[v[josh],v[lop],v[marko]] | | p[v[peter],v[lop],v[marko]] | - Scenario: g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup + Scenario: g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup Given the modern graph And the traversal of """ - g.V().outE().as("e").inV().as("v").select("e").order().by("weight", Order.incr).select("v").values("name").dedup() + g.V().outE().as("e").inV().as("v").select("e").order().by("weight", Order.asc).select("v").values("name").dedup() """ When iterated to list Then the result should be unordered http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/features/map/AddEdge.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/AddEdge.feature b/gremlin-test/features/map/AddEdge.feature index 69c24c2..028dceb 100644 --- a/gremlin-test/features/map/AddEdge.feature +++ b/gremlin-test/features/map/AddEdge.feature @@ -336,7 +336,7 @@ Feature: Step - addE() And the graph should return 1 for count of "g.V(v1).in(\"created\").has(\"name\",\"lop\")" And the graph should return 1 for count of "g.V(v1).outE(\"created\")" - Scenario: g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_decrX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX + Scenario: g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX Given the empty graph And the graph initializer of """ @@ -356,7 +356,7 @@ Feature: Step - addE() And using the parameter v2 defined as "v[vadas]" And the traversal of """ - g.addE(__.V().outE().label().groupCount().order(Scope.local).by(Column.values, Order.decr).select(Column.keys).unfold().limit(1)).from(__.V().has("name", "vadas")).to(__.V().has("name", "lop")) + g.addE(__.V().outE().label().groupCount().order(Scope.local).by(Column.values, Order.desc).select(Column.keys).unfold().limit(1)).from(__.V().has("name", "vadas")).to(__.V().has("name", "lop")) """ When iterated to list Then the result should have a count of 1 http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/features/map/Match.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/Match.feature b/gremlin-test/features/map/Match.feature index 55dffcf..c019cd0 100644 --- a/gremlin-test/features/map/Match.feature +++ b/gremlin-test/features/map/Match.feature @@ -320,11 +320,11 @@ Feature: Step - match() | m[{"a":"v[josh]","b":"v[lop]"}] | | m[{"a":"v[peter]","b":"v[lop]"}] | - Scenario: g_V_matchXa_outEXcreatedX_order_byXweight_decrX_limitX1X_inV_b__b_hasXlang_javaXX_selectXa_bX_byXnameX + Scenario: g_V_matchXa_outEXcreatedX_order_byXweight_descX_limitX1X_inV_b__b_hasXlang_javaXX_selectXa_bX_byXnameX Given the modern graph And the traversal of """ - g.V().match(__.as("a").outE("created").order().by("weight", Order.decr).limit(1).inV().as("b"), + g.V().match(__.as("a").outE("created").order().by("weight", Order.desc).limit(1).inV().as("b"), __.as("b").has("lang", "java")).select("a", "b").by("name") """ When iterated to list http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/features/map/Order.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/Order.feature b/gremlin-test/features/map/Order.feature index 33ae97a..f361878 100644 --- a/gremlin-test/features/map/Order.feature +++ b/gremlin-test/features/map/Order.feature @@ -67,6 +67,22 @@ Feature: Step - order() | ripple | | vadas | + Scenario: g_V_order_byXname_ascX_name + Given the modern graph + And the traversal of + """ + g.V().order().by("name", Order.asc).values("name") + """ + When iterated to list + Then the result should be ordered + | result | + | josh | + | lop | + | marko | + | peter | + | ripple | + | vadas | + Scenario: g_V_order_byXnameX_name Given the modern graph And the traversal of @@ -99,6 +115,22 @@ Feature: Step - order() | d[0.4].d | | d[0.2].d | + Scenario: g_V_outE_order_byXweight_descX_weight + Given the modern graph + And the traversal of + """ + g.V().outE().order().by("weight", Order.desc).values("weight") + """ + When iterated to list + Then the result should be ordered + | result | + | d[1.0].d | + | d[1.0].d | + | d[0.5].d | + | d[0.4].d | + | d[0.4].d | + | d[0.2].d | + Scenario: g_V_order_byXname_a1_b1X_byXname_b2_a2X_name Given the modern graph And using the parameter l1 defined as "c[a, b -> a.substring(1, 2).compareTo(b.substring(1, 2))]" @@ -131,11 +163,11 @@ Feature: Step - order() | m[{"a":"v[josh]","b":"v[ripple]"}] | | m[{"a":"v[josh]","b":"v[lop]"}] | - Scenario: g_V_both_hasLabelXpersonX_order_byXage_decrX_limitX5X_name + Scenario: g_V_both_hasLabelXpersonX_order_byXage_descX_limitX5X_name Given the modern graph And the traversal of """ - g.V().both().hasLabel("person").order().by("age", Order.decr).limit(5).values("name") + g.V().both().hasLabel("person").order().by("age", Order.desc).limit(5).values("name") """ When iterated to list Then the result should be ordered @@ -146,11 +178,11 @@ Feature: Step - order() | josh | | marko | - Scenario: g_V_properties_order_byXkey_decrX_key + Scenario: g_V_properties_order_byXkey_descX_key Given the modern graph And the traversal of """ - g.V().properties().order().by(T.key, Order.decr).key() + g.V().properties().order().by(T.key, Order.desc).key() """ When iterated to list Then the result should be ordered @@ -168,12 +200,12 @@ Feature: Step - order() | age | | age | - Scenario: g_V_hasLabelXpersonX_order_byXvalueXageX__decrX_name + Scenario: g_V_hasLabelXpersonX_order_byXvalueXageX_descX_name Given the modern graph And using the parameter l1 defined as "c[it.value('age')]" And the traversal of """ - g.V().hasLabel("person").order().by(l1, Order.decr).values("name") + g.V().hasLabel("person").order().by(l1, Order.desc).values("name") """ When iterated to list Then the result should be ordered @@ -194,11 +226,11 @@ Feature: Step - order() | result | | m[{"vadas":"d[0].i","peter":"d[0.2].d","josh":"d[1.4].d","marko":"d[1.9].d"}] | - Scenario: g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX + Scenario: g_V_localXbothE_weight_foldX_order_byXsumXlocalX_descX Given the modern graph And the traversal of """ - g.V().local(__.bothE().values("weight").fold()).order().by(__.sum(Scope.local), Order.decr) + g.V().local(__.bothE().values("weight").fold()).order().by(__.sum(Scope.local), Order.desc) """ When iterated to list Then the result should be ordered @@ -210,22 +242,22 @@ Feature: Step - order() | l[d[0.5].d] | | l[d[0.2].d] | - Scenario: g_V_group_byXlabelX_byXname_order_byXdecrX_foldX + Scenario: g_V_group_byXlabelX_byXname_order_byXdescX_foldX Given the modern graph And the traversal of """ - g.V().group().by(T.label).by(__.values("name").order().by(Order.decr).fold()) + g.V().group().by(T.label).by(__.values("name").order().by(Order.desc).fold()) """ When iterated to list Then the result should be ordered | result | | m[{"software":"l[ripple,lop]","person":"l[vadas,peter,marko,josh]"}] | - Scenario: g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_decrX + Scenario: g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_descX Given the modern graph And the traversal of """ - g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).unfold().order().by(Column.values, Order.decr) + g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).unfold().order().by(Column.values, Order.desc) """ When iterated to list Then the result should be ordered @@ -235,11 +267,11 @@ Feature: Step - order() | m[{"peter":"d[0.2].d"}] | | m[{"vadas":"d[0].i"}] | - Scenario: g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_decrX + Scenario: g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX Given the modern graph And the traversal of """ - g.V().as("v").map(__.bothE().values("weight").fold()).sum(Scope.local).as("s").select("v", "s").order().by(__.select("s"), Order.decr) + g.V().as("v").map(__.bothE().values("weight").fold()).sum(Scope.local).as("s").select("v", "s").order().by(__.select("s"), Order.desc) """ When iterated to list Then the result should be ordered @@ -262,11 +294,11 @@ Feature: Step - order() | result | | l[v[vadas],v[marko],v[josh],v[peter]] | - Scenario: g_V_both_hasLabelXpersonX_order_byXage_decrX_name + Scenario: g_V_both_hasLabelXpersonX_order_byXage_descX_name Given the modern graph And the traversal of """ - g.V().both().hasLabel("person").order().by("age", Order.decr).values("name") + g.V().both().hasLabel("person").order().by("age", Order.desc).values("name") """ When iterated to list Then the result should be ordered @@ -280,11 +312,11 @@ Feature: Step - order() | marko | | vadas | - Scenario: g_V_order_byXoutE_count__decrX + Scenario: g_V_order_byXoutE_count_descX Given the modern graph And the traversal of """ - g.V().order().by(__.outE().count(), Order.decr) + g.V().order().by(__.outE().count(), Order.desc) """ When iterated to list Then the result should be ordered @@ -310,13 +342,13 @@ Feature: Step - order() | v[josh] | | v[peter] | - Scenario: g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_decrX_byXkeys_incrX + Scenario: g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX Given the modern graph And using the parameter v1 defined as "v[marko]" And using the parameter l1 defined as "c[['1':it.get().value('age'),'2':it.get().value('age')*2,'3':it.get().value('age')*3,'4':it.get().value('age')]]" And the traversal of """ - g.V(v1).hasLabel("person").map(l1).order(Scope.local).by(Column.values, Order.decr).by(Column.keys, Order.incr) + g.V(v1).hasLabel("person").map(l1).order(Scope.local).by(Column.values, Order.desc).by(Column.keys, Order.asc) """ When iterated to list Then the result should be ordered http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/features/map/Project.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/Project.feature b/gremlin-test/features/map/Project.feature index cda2029..8974312 100644 --- a/gremlin-test/features/map/Project.feature +++ b/gremlin-test/features/map/Project.feature @@ -34,7 +34,7 @@ Feature: Step - project() | m[{"a":"d[2].l", "b":"d[32].i"}] | | m[{"a":"d[1].l", "b":"d[35].i"}] | - Scenario: g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__decrX_selectXaX + Scenario: g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__descX_selectXaX Given the modern graph And the traversal of """ @@ -43,7 +43,7 @@ Feature: Step - project() by("name"). by(__.in("created").count()). order(). - by(__.select("b"), Order.decr). + by(__.select("b"), Order.desc). select("a") """ When iterated to list http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/features/map/Select.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature index 713dd81..341a378 100644 --- a/gremlin-test/features/map/Select.feature +++ b/gremlin-test/features/map/Select.feature @@ -125,13 +125,13 @@ Feature: Step - select() | m[{"a": "lop", "b": "lop"}] | | m[{"a": "peter", "b": "peter"}] | - Scenario: g_V_hasXname_gremlinX_inEXusesX_order_byXskill_incrX_asXaX_outV_asXbX_selectXa_bX_byXskillX_byXnameX + Scenario: g_V_hasXname_gremlinX_inEXusesX_order_byXskill_ascX_asXaX_outV_asXbX_selectXa_bX_byXskillX_byXnameX Given the crew graph And the traversal of """ g.V().has("name", "gremlin"). inE("uses"). - order().by("skill", Order.incr).as("a"). + order().by("skill", Order.asc).as("a"). outV().as("b"). select("a", "b"). by("skill"). http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java index 5c6a1e5..75dd0f5 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java @@ -256,8 +256,8 @@ public abstract class ComplexTest extends AbstractGremlinProcessTest { by(select(keys).values("performances")). by(select(values)). order(). - by(select("z"), Order.decr). - by(select("y"), Order.incr). + by(select("z"), Order.desc). + by(select("y"), Order.asc). limit(5).store("m").select("x"); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java index faec45e..6f70bb1 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java @@ -225,7 +225,7 @@ public abstract class LocalTest extends AbstractGremlinProcessTest { @Override public Traversal<Vertex, String> get_g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value() { - return g.V().local(properties("location").order().by(T.value, Order.incr).range(0, 2)).value(); + return g.V().local(properties("location").order().by(T.value, Order.asc).range(0, 2)).value(); } @Override http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java index ef5086f..0877ddb 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java @@ -77,7 +77,7 @@ public abstract class DedupTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, Path> get_g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_dedupXa_bX_path(); - public abstract Traversal<Vertex, String> get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup(); + public abstract Traversal<Vertex, String> get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup(); public abstract Traversal<Vertex, String> get_g_V_both_both_dedup_byXoutE_countX_name(); @@ -253,8 +253,8 @@ public abstract class DedupTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) - public void g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup() { - final Traversal<Vertex, String> traversal = get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup(); + public void g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup() { + final Traversal<Vertex, String> traversal = get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup(); printTraversalForm(traversal); final List<String> names = traversal.toList(); assertEquals(4, names.size()); @@ -370,8 +370,8 @@ public abstract class DedupTest extends AbstractGremlinProcessTest { } @Override - public Traversal<Vertex, String> get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup() { - return g.V().outE().as("e").inV().as("v").select("e").order().by("weight", Order.incr).select("v").<String>values("name").dedup(); + public Traversal<Vertex, String> get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup() { + return g.V().outE().as("e").inV().as("v").select("e").order().by("weight", Order.asc).select("v").<String>values("name").dedup(); } @Override http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a937287d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java index d340297..54c4091 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java @@ -35,7 +35,7 @@ import org.junit.runner.RunWith; import java.util.Arrays; import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN; -import static org.apache.tinkerpop.gremlin.process.traversal.Order.decr; +import static org.apache.tinkerpop.gremlin.process.traversal.Order.desc; import static org.apache.tinkerpop.gremlin.process.traversal.Scope.local; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.V; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE; @@ -74,7 +74,7 @@ public abstract class AddEdgeTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, Edge> get_g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX(); - public abstract Traversal<Edge, Edge> get_g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_decrX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX(); + public abstract Traversal<Edge, Edge> get_g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX(); /////// @@ -281,8 +281,8 @@ public abstract class AddEdgeTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) - public void g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_decrX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX() { - final Traversal<Edge, Edge> traversal = get_g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_decrX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX(); + public void g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX() { + final Traversal<Edge, Edge> traversal = get_g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX(); printTraversalForm(traversal); final Edge edge = traversal.next(); assertFalse(traversal.hasNext()); @@ -346,8 +346,8 @@ public abstract class AddEdgeTest extends AbstractGremlinProcessTest { } @Override - public Traversal<Edge, Edge> get_g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_decrX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX() { - return g.addE(V().outE().label().groupCount().order(local).by(values, decr).select(keys).<String>unfold().limit(1)).from(V().has("name", "vadas")).to(V().has("name", "lop")); + public Traversal<Edge, Edge> get_g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX() { + return g.addE(V().outE().label().groupCount().order(local).by(values, desc).select(keys).<String>unfold().limit(1)).from(V().has("name", "vadas")).to(V().has("name", "lop")); } } }
