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";
}