You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/06/29 00:53:23 UTC

tinkerpop git commit: more tedium work -- half-commit .. about 1/2 way done with StepTranslator.

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 7000fbcbc -> 4feecbd60


more tedium work -- half-commit .. about 1/2 way done with StepTranslator.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/4feecbd6
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/4feecbd6
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/4feecbd6

Branch: refs/heads/TINKERPOP-1278
Commit: 4feecbd60bf98255a1bf6872dc70ed67b17730ac
Parents: 7000fbc
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jun 28 18:53:19 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jun 28 18:53:19 2016 -0600

----------------------------------------------------------------------
 .../traversal/dsl/graph/StepTranslator.java     | 154 +++++++++++++++++--
 .../process/traversal/dsl/graph/Symbols.java    |  21 +++
 2 files changed, 166 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4feecbd6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/StepTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/StepTranslator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/StepTranslator.java
index 7fbc084..9b52144 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/StepTranslator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/StepTranslator.java
@@ -19,25 +19,48 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
+import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.ColumnTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConnectiveStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WherePredicateStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.DedupLocalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeOtherVertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupCountStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStepV3d0;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.IdStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.LabelStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaFlatMapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaMapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.LoopsStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinLocalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderLocalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathStep;
@@ -53,17 +76,22 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumLocalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalFlatMapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AddPropertyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep;
 import org.apache.tinkerpop.gremlin.structure.Column;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.PropertyType;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
+import java.util.Optional;
 import java.util.function.BiFunction;
 import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.function.Supplier;
 
 /**
@@ -79,10 +107,14 @@ public final class StepTranslator implements Translator {
     public void addStep(final Traversal.Admin<?, ?> traversal, final String stepName, final Object... arguments) {
         switch (stepName) {
             case Symbols.map:
-                traversal.addStep(arguments[0] instanceof Traversal ? new TraversalMapStep<>(traversal, (Traversal) arguments[0]) : new LambdaMapStep<>(traversal, (Function) arguments[0]));
+                traversal.addStep(arguments[0] instanceof Traversal ?
+                        new TraversalMapStep<>(traversal, (Traversal) arguments[0]) :
+                        new LambdaMapStep<>(traversal, (Function) arguments[0]));
                 return;
             case Symbols.flatMap:
-                traversal.addStep(arguments[0] instanceof Traversal ? new TraversalFlatMapStep<>(traversal, (Traversal) arguments[0]) : new LambdaFlatMapStep<>(traversal, (Function) arguments[0]));
+                traversal.addStep(arguments[0] instanceof Traversal ?
+                        new TraversalFlatMapStep<>(traversal, (Traversal) arguments[0]) :
+                        new LambdaFlatMapStep<>(traversal, (Function) arguments[0]));
                 return;
             case Symbols.id:
                 traversal.addStep(new IdStep<>(traversal));
@@ -100,7 +132,12 @@ public final class StepTranslator implements Translator {
                 traversal.addStep(new GraphStep<>(traversal, Vertex.class, false, arguments));
                 return;
             case Symbols.to:
-                traversal.addStep(new VertexStep<>(traversal, Vertex.class, (Direction) arguments[0], (String[]) arguments[1]));
+                if (1 == arguments.length)
+                    ((AddEdgeStep) traversal.getEndStep()).addTo(arguments[0] instanceof Vertex ?
+                            (Vertex) arguments[0] :
+                            __.select((String) arguments[0]));
+                else
+                    traversal.addStep(new VertexStep<>(traversal, Vertex.class, (Direction) arguments[0], (String[]) arguments[1]));
                 return;
             case Symbols.out:
                 traversal.addStep(new VertexStep<>(traversal, Vertex.class, Direction.OUT, (String[]) arguments[0]));
@@ -139,7 +176,9 @@ public final class StepTranslator implements Translator {
                 traversal.addStep(new EdgeOtherVertexStep(traversal));
                 return;
             case Symbols.order:
-                traversal.addStep(arguments.length == 0 || Scope.global == arguments[0] ? new OrderGlobalStep<>(traversal) : new OrderLocalStep<>(traversal));
+                traversal.addStep(arguments.length == 0 || Scope.global == arguments[0] ?
+                        new OrderGlobalStep<>(traversal) :
+                        new OrderLocalStep<>(traversal));
                 return;
             case Symbols.properties:
                 traversal.addStep(new PropertiesStep<>(traversal, PropertyType.PROPERTY, (String[]) arguments));
@@ -148,10 +187,14 @@ public final class StepTranslator implements Translator {
                 traversal.addStep(new PropertiesStep<>(traversal, PropertyType.VALUE, (String[]) arguments));
                 return;
             case Symbols.propertyMap:
-                traversal.addStep(arguments[0] instanceof Boolean ? new PropertyMapStep<>(traversal, (boolean) arguments[0], PropertyType.PROPERTY, (String[]) arguments[1]) : new PropertyMapStep<>(traversal, false, PropertyType.PROPERTY, (String[]) arguments[0]));
+                traversal.addStep(arguments[0] instanceof Boolean ?
+                        new PropertyMapStep<>(traversal, (boolean) arguments[0], PropertyType.PROPERTY, (String[]) arguments[1]) :
+                        new PropertyMapStep<>(traversal, false, PropertyType.PROPERTY, (String[]) arguments[0]));
                 return;
             case Symbols.valueMap:
-                traversal.addStep(arguments[0] instanceof Boolean ? new PropertyMapStep<>(traversal, (boolean) arguments[0], PropertyType.VALUE, (String[]) arguments[1]) : new PropertyMapStep<>(traversal, false, PropertyType.VALUE, (String[]) arguments[0]));
+                traversal.addStep(arguments[0] instanceof Boolean ?
+                        new PropertyMapStep<>(traversal, (boolean) arguments[0], PropertyType.VALUE, (String[]) arguments[1]) :
+                        new PropertyMapStep<>(traversal, false, PropertyType.VALUE, (String[]) arguments[0]));
                 return;
             case Symbols.select:
                 if (arguments[0] instanceof Column)
@@ -204,12 +247,105 @@ public final class StepTranslator implements Translator {
                 return;
             case Symbols.unfold:
                 traversal.addStep(new UnfoldStep<>(traversal));
+                return;
             case Symbols.fold:
-                traversal.addStep(0 == arguments.length ? new FoldStep<>(traversal) : new FoldStep<>(traversal, (Supplier) arguments[0], (BiFunction) arguments[1]));
+                traversal.addStep(0 == arguments.length ?
+                        new FoldStep<>(traversal) :
+                        new FoldStep<>(traversal, (Supplier) arguments[0], (BiFunction) arguments[1]));
+                return;
             case Symbols.count:
-                traversal.addStep(0 == arguments.length || Scope.global == arguments[0] ? new CountGlobalStep<>(traversal) : new CountLocalStep<>(traversal));
+                traversal.addStep(0 == arguments.length || Scope.global == arguments[0] ?
+                        new CountGlobalStep<>(traversal) :
+                        new CountLocalStep<>(traversal));
+                return;
             case Symbols.sum:
-                traversal.addStep(0 == arguments.length || Scope.global == arguments[0] ? new SumGlobalStep<>(traversal) : new SumLocalStep<>(traversal));
+                traversal.addStep(0 == arguments.length || Scope.global == arguments[0] ?
+                        new SumGlobalStep<>(traversal) :
+                        new SumLocalStep<>(traversal));
+                return;
+            case Symbols.max:
+                traversal.addStep(0 == arguments.length || Scope.global == arguments[0] ?
+                        new MaxGlobalStep<>(traversal) :
+                        new MaxLocalStep<>(traversal));
+                return;
+            case Symbols.min:
+                traversal.addStep(0 == arguments.length || Scope.global == arguments[0] ?
+                        new MinGlobalStep<>(traversal) :
+                        new MinLocalStep<>(traversal));
+                return;
+            case Symbols.mean:
+                traversal.addStep(0 == arguments.length || Scope.global == arguments[0] ?
+                        new MeanGlobalStep<>(traversal) :
+                        new MeanLocalStep<>(traversal));
+                return;
+            case Symbols.group:
+                traversal.addStep(new GroupStep<>(traversal));
+                return;
+            case Symbols.groupV3d0:
+                traversal.addStep(new GroupStepV3d0<>(traversal));
+                return;
+            case Symbols.groupCount:
+                traversal.addStep(new GroupCountStep<>(traversal));
+                return;
+            case Symbols.tree:
+                traversal.addStep(new TreeStep<>(traversal));
+                return;
+            case Symbols.addV:
+                traversal.addStep(1 == arguments.length ?
+                        new AddVertexStep<>(traversal, (String) arguments[0]) :
+                        new AddVertexStep<>(traversal, null));
+                if (arguments.length > 1) {
+                    for (int i = 0; i < arguments.length; i = i + 2) {
+                        traversal.addStep(new AddPropertyStep<>(traversal, null, arguments[i], arguments[i + 1]));
+                    }
+                }
+                return;
+            case Symbols.addE:
+                if (1 == arguments.length)
+                    traversal.addStep(new AddEdgeStep<>(traversal, (String) arguments[0]));
+                return;
+            case Symbols.from:
+                ((AddEdgeStep) traversal.getEndStep()).addFrom(arguments[0] instanceof Vertex ?
+                        (Vertex) arguments[0] :
+                        __.select((String) arguments[0]));
+                return;
+            case Symbols.filter:
+                traversal.addStep(arguments[0] instanceof Traversal ?
+                        new TraversalFilterStep<>(traversal, (Traversal) arguments[0]) :
+                        new LambdaFilterStep<>(traversal, (Predicate) arguments[0]));
+                return;
+            case Symbols.or:
+                traversal.addStep(new OrStep<>(traversal, (Traversal[]) arguments));
+                return;
+            case Symbols.and:
+                traversal.addStep(new AndStep<>(traversal, (Traversal[]) arguments));
+                return;
+            case Symbols.inject:
+                traversal.addStep(new InjectStep<>(traversal, arguments));
+                return;
+            case Symbols.dedup:
+                traversal.addStep(arguments[0] instanceof String[] ?
+                        new DedupGlobalStep<>(traversal, (String[]) arguments[0]) :
+                        arguments[0] == Scope.global ?
+                                new DedupGlobalStep<>(traversal, (String[]) arguments[1]) :
+                                new DedupLocalStep<>(traversal));
+                return;
+            case Symbols.where:
+                traversal.addStep(arguments[0] instanceof Traversal ?
+                        new WhereTraversalStep<>(traversal, (Traversal) arguments[0]) :
+                        arguments[0] instanceof String ?
+                                new WherePredicateStep<>(traversal, Optional.of((String) arguments[0]), (P) arguments[1]) :
+                                new WherePredicateStep<>(traversal, Optional.empty(), (P) arguments[0]));
+                return;
+            case Symbols.is:
+                traversal.addStep(new IsStep<>(traversal, arguments[0] instanceof P ? (P) arguments[0] : P.eq(arguments[0])));
+                return;
+            case Symbols.not:
+                traversal.addStep(new NotStep<>(traversal, (Traversal) arguments[0]));
+                return;
+            case Symbols.coin:
+                traversal.addStep(new CoinStep<>(traversal, (Double) arguments[0]));
+                return;
             default:
                 throw new IllegalArgumentException("The provided step name is not supported by " + StepTranslator.class.getSimpleName() + ": " + stepName);
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4feecbd6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/Symbols.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/Symbols.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/Symbols.java
index 45b97a0..8ef5896 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/Symbols.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/Symbols.java
@@ -70,4 +70,25 @@ public final class Symbols {
     public static final String fold = "fold";
     public static final String count = "count";
     public static final String sum = "sum";
+    public static final String max = "max";
+    public static final String min = "min";
+    public static final String mean = "mean";
+    public static final String group = "group";
+    @Deprecated
+    public static final String groupV3d0 = "groupV3d0";
+    public static final String groupCount = "groupCount";
+    public static final String tree = "tree";
+    public static final String addV = "addV";
+    public static final String addE = "addE";
+    public static final String from = "from";
+    public static final String filter = "filter";
+    public static final String or = "or";
+    public static final String and = "and";
+    public static final String inject = "inject";
+    public static final String dedup = "dedup";
+    public static final String where = "where";
+    public static final String has = "has";
+    public static final String is = "is";
+    public static final String not = "not";
+    public static final String coin = "coin";
 }