Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1278 0ce35b637 -> dc27a2a56
added toString(), equals(), and hashCode() to ByteCode and Instruction. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dc27a2a5 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dc27a2a5 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dc27a2a5 Branch: refs/heads/TINKERPOP-1278 Commit: dc27a2a56089017ad566fa0eed9bc1cd9bef1c65 Parents: 0ce35b6 Author: Marko A. Rodriguez <[email protected]> Authored: Sat Jul 2 11:28:46 2016 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Sat Jul 2 11:28:46 2016 -0600 ---------------------------------------------------------------------- .../gremlin/process/traversal/ByteCode.java | 67 ++++++++++++++++++++ .../structure/TinkerGraphPlayTest.java | 15 +---- 2 files changed, 68 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc27a2a5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/ByteCode.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/ByteCode.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/ByteCode.java index 61a50e4..53753d6 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/ByteCode.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/ByteCode.java @@ -19,8 +19,11 @@ package org.apache.tinkerpop.gremlin.process.traversal; +import org.apache.tinkerpop.gremlin.process.traversal.util.TranslatorHelper; + import java.io.Serializable; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -54,6 +57,33 @@ public final class ByteCode implements Cloneable, Serializable { return Collections.unmodifiableList(this.stepInstructions); } + @Override + public String toString() { + final StringBuilder builder = new StringBuilder("["); + for (final Instruction instruction : this.sourceInstructions) { + builder.append(instruction).append(",\n"); + } + for (final Instruction instruction : this.stepInstructions) { + builder.append(instruction).append(",\n"); + } + if (builder.length() > 2) + builder.delete(builder.length() - 2,builder.length()); + builder.append("]"); + return builder.toString(); + } + + @Override + public boolean equals(final Object object) { + return object instanceof ByteCode && + this.sourceInstructions.equals(((ByteCode) object).sourceInstructions) && + this.stepInstructions.equals(((ByteCode) object).sourceInstructions); + } + + @Override + public int hashCode() { + return this.sourceInstructions.hashCode() + this.stepInstructions.hashCode(); + } + @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException") public ByteCode clone() { try { @@ -84,5 +114,42 @@ public final class ByteCode implements Cloneable, Serializable { return this.arguments; } + @Override + public String toString() { + return "[\"" + this.operator + "\"," + stringifyArguments() + "]"; + } + + @Override + public boolean equals(final Object object) { + return object instanceof Instruction && + this.operator.equals(((Instruction) object).operator) && + Arrays.equals(this.arguments, ((Instruction) object).arguments); + } + + @Override + public int hashCode() { + return this.operator.hashCode() + Arrays.hashCode(this.arguments); + } + + private String stringifyArguments() { + final List<Object> objects = TranslatorHelper.flattenArguments(this.arguments); + final StringBuilder builder = new StringBuilder("["); + for (final Object object : objects) { + if (object instanceof Traversal) + builder.append(((Traversal) object).asAdmin().getByteCode()); + else if (object instanceof String) + builder.append("\"").append(object).append("\""); + else + builder.append(object); + builder.append(","); + } + if (!objects.isEmpty()) + builder.deleteCharAt(builder.length() - 1); + builder.append("]"); + + return builder.toString(); + + } + } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc27a2a5/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java ---------------------------------------------------------------------- diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java index 7097b1c..96d11e3 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java @@ -52,7 +52,6 @@ import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.union; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.valueMap; -import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values; /** * @author Stephen Mallette (http://stephen.genoprime.com) @@ -65,19 +64,7 @@ public class TinkerGraphPlayTest { public void testPlay8() throws Exception { Graph graph = TinkerFactory.createModern(); GraphTraversalSource g = graph.traversal().withComputer();//GraphTraversalSource.computer()); - //System.out.println(g.V().outE("knows").identity().inV().count().is(P.eq(5)).explain()); - //System.out.println(g.V().hasLabel("person").fold().order(Scope.local).by("age").toList()); - //System.out.println(g.V().repeat(out()).times(2).profile("m").explain()); - final Traversal<?, ?> traversal = g.V().hasLabel("person").<Number>project("a", "b").by(__.outE().count()).by("age"); - System.out.println(traversal.explain()); - //System.out.println(g.V().hasLabel("person").pageRank().by("rank").by(bothE()).values("rank").profile("m").explain()); - //System.out.println(traversal.asAdmin().clone().toString()); - // final Traversal<?,?> clone = traversal.asAdmin().clone(); - // clone.asAdmin().applyStrategies(); - // System.out.println(clone); - System.out.println(traversal.asAdmin().toList()); - //System.out.println(traversal.asAdmin().getSideEffects().get("m") + " "); - //System.out.println(g.V().pageRank().order().by(PageRankVertexProgram.PAGE_RANK).valueMap().toList()); + System.out.println(g.V().as("a").out().repeat(both("created")).times(10).as("b").values("name").dedup().select("a", "b").by("name").asAdmin().getByteCode()); } @Test
