You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/10/13 16:38:04 UTC
[11/13] tinkerpop git commit: Reusing the Expression on each map() as
recommended by @twilmes. Also,
added a new test project()-based test case that demonstrates that math() works
for map key scopes.
Reusing the Expression on each map() as recommended by @twilmes. Also, added a new test project()-based test case that demonstrates that math() works for map key scopes.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/73b712d2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/73b712d2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/73b712d2
Branch: refs/heads/TINKERPOP-1799
Commit: 73b712d20b9cd63dd46245a42d88e0e120ed790c
Parents: e966422
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Oct 5 13:06:03 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Oct 5 13:06:03 2017 -0600
----------------------------------------------------------------------
.../process/traversal/step/map/MathStep.java | 15 ++++++++-------
.../process/traversal/step/map/MathTest.java | 18 ++++++++++++++++++
2 files changed, 26 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/73b712d2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java
index a10ec5e..b34c3ca 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java
@@ -48,6 +48,7 @@ public final class MathStep<S> extends MapStep<S, Double> implements ByModulatin
private static final String CURRENT = "_";
private final String equation;
private final Set<String> variables;
+ private final Expression expression;
private TraversalRing<S, Number> traversalRing = new TraversalRing<>();
private Set<String> keepLabels;
@@ -55,7 +56,10 @@ public final class MathStep<S> extends MapStep<S, Double> implements ByModulatin
super(traversal);
this.equation = equation;
this.variables = MathStep.getVariables(this.equation);
-
+ this.expression = new ExpressionBuilder(this.equation)
+ .variables(this.variables)
+ .implicitMultiplication(false)
+ .build();
}
@Override
@@ -65,18 +69,15 @@ public final class MathStep<S> extends MapStep<S, Double> implements ByModulatin
@Override
protected Double map(final Traverser.Admin<S> traverser) {
- final Expression expression = new ExpressionBuilder(this.equation)
- .variables(this.variables)
- .implicitMultiplication(false)
- .build();
+ final Expression localExpression = new Expression(this.expression);
for (final String var : this.variables) {
- expression.setVariable(var,
+ localExpression.setVariable(var,
var.equals(CURRENT) ?
TraversalUtil.applyNullable(traverser, this.traversalRing.next()).doubleValue() :
TraversalUtil.applyNullable((S) this.getNullableScopeValue(Pop.last, var, traverser), this.traversalRing.next()).doubleValue());
}
this.traversalRing.reset();
- return expression.evaluate();
+ return localExpression.evaluate();
}
@Override
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/73b712d2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java
index 9858d28..20d8392 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java
@@ -33,7 +33,10 @@ import java.util.function.BiFunction;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.Operator.sum;
+import static org.apache.tinkerpop.gremlin.process.traversal.Order.decr;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.math;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.sack;
import static org.junit.Assert.assertEquals;
@@ -51,6 +54,8 @@ public abstract class MathTest extends AbstractGremlinProcessTest {
public abstract Traversal<Integer, Double> get_g_withSackX1X_injectX1X_repeatXsackXsumX_byXconstantX1XXX_timesX5X_emit_mathXsin__X_byXsackX();
+ public abstract Traversal<Vertex, String> get_g_V_projectXa_b_cX_byXbothE_weight_sumX_byXbothE_countX_byXnameX_order_byXmathXa_div_bX_decrX_selectXcX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_asXaX_outXknowsX_asXbX_mathXa_plus_bX_byXageX() {
@@ -87,6 +92,14 @@ public abstract class MathTest extends AbstractGremlinProcessTest {
assertEquals(-0.27941549819892586d, traversal.next(), 0.01d);
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_projectXa_b_cX_byXbothE_weight_sumX_byXbothE_countX_byXnameX_order_byXmathXa_div_bX_decrX_selectXcX() {
+ final Traversal<Vertex, String> traversal = get_g_V_projectXa_b_cX_byXbothE_weight_sumX_byXbothE_countX_byXnameX_order_byXmathXa_div_bX_decrX_selectXcX();
+ printTraversalForm(traversal);
+ checkResults(Arrays.asList("ripple", "josh", "marko", "vadas", "lop", "peter"), traversal);
+ }
+
public static class Traversals extends MathTest {
@Override
@@ -108,5 +121,10 @@ public abstract class MathTest extends AbstractGremlinProcessTest {
public Traversal<Integer, Double> get_g_withSackX1X_injectX1X_repeatXsackXsumX_byXconstantX1XXX_timesX5X_emit_mathXsin__X_byXsackX() {
return g.withSack(1).inject(1).repeat(__.sack((BiFunction) sum).by(__.constant(1))).times(10).emit().math("sin _").by(sack());
}
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_projectXa_b_cX_byXbothE_weight_sumX_byXbothE_countX_byXnameX_order_byXmathXa_div_bX_decrX_selectXcX() {
+ return g.V().project("a", "b", "c").by(bothE().values("weight").sum()).by(bothE().count()).by("name").order().by(math("a / b"), decr).select("c");
+ }
}
}
\ No newline at end of file