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 2016/06/30 17:33:48 UTC
[19/50] [abbrv] tinkerpop git commit: TraversalExplanation now how
prettyPrint(), prettyPrint(int maxLineLength),
and toString(). Console will detect a TraversalExplaination and use
prettyPrint(TerminalFactory.get().getWidth()). If the TerminalFactory is
TraversalExplanation now how prettyPrint(), prettyPrint(int maxLineLength), and toString(). Console will detect a TraversalExplaination and use prettyPrint(TerminalFactory.get().getWidth()). If the TerminalFactory is 'bad' then a default reasonable value is use -- people say some Java versions give -1 for getWidth().
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/21a533d4
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/21a533d4
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/21a533d4
Branch: refs/heads/TINKERPOP-1274
Commit: 21a533d4f11e1d8b614230b1073ed0e0603ccaa3
Parents: a4771b6
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jun 16 12:49:33 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jun 16 12:49:33 2016 -0600
----------------------------------------------------------------------
.../tinkerpop/gremlin/console/Console.groovy | 12 ++++++---
.../traversal/util/TraversalExplanation.java | 28 +++++++++++++-------
.../util/TraversalExplanationTest.java | 23 ++++++++++++----
3 files changed, 46 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21a533d4/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
----------------------------------------------------------------------
diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
index 5108948..3d748eb 100644
--- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
+++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.console
+import jline.TerminalFactory
import org.apache.commons.cli.Option
import org.apache.tinkerpop.gremlin.console.commands.GremlinSetCommand
import org.apache.tinkerpop.gremlin.console.commands.InstallCommand
@@ -29,6 +30,7 @@ import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn
import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader
import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin
import jline.console.history.FileHistory
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation
import org.apache.tinkerpop.gremlin.util.Gremlin
import org.apache.tinkerpop.gremlin.util.iterator.ArrayIterator
import org.codehaus.groovy.tools.shell.AnsiDetector
@@ -113,8 +115,8 @@ class Console {
groovy = new GremlinGroovysh(mediator)
- def commandsToRemove = groovy.getRegistry().commands().findAll{it instanceof SetCommand}
- commandsToRemove.each {groovy.getRegistry().remove(it)}
+ def commandsToRemove = groovy.getRegistry().commands().findAll { it instanceof SetCommand }
+ commandsToRemove.each { groovy.getRegistry().remove(it) }
groovy.register(new GremlinSetCommand(groovy))
groovy.register(new UninstallCommand(groovy, mediator))
groovy.register(new InstallCommand(groovy, mediator))
@@ -209,7 +211,7 @@ class Console {
io.out.println(buildResultPrompt() + ((null == object) ? NULL : object.toString()))
counter++;
}
- if(this.tempIterator.hasNext())
+ if (this.tempIterator.hasNext())
io.out.println(ELLIPSIS);
this.tempIterator = Collections.emptyIterator();
return null
@@ -249,6 +251,10 @@ class Console {
this.tempIterator = Collections.emptyIterator();
return null
}
+ } else if (result instanceof TraversalExplanation) {
+ final int width = TerminalFactory.get().getWidth() - 25
+ io.out.println(buildResultPrompt() + result.prettyPrint(width < 10 ? 100 : width))
+ return null
} else {
io.out.println(buildResultPrompt() + ((null == result) ? NULL : result.toString()))
return null
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21a533d4/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
index 675291d..2baccdb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
@@ -78,14 +78,21 @@ public class TraversalExplanation implements Serializable {
return this.traversal;
}
+ @Override
+ public String toString() {
+ return this.prettyPrint(Integer.MAX_VALUE);
+ }
+
+ public String prettyPrint() {
+ return this.prettyPrint(100);
+ }
+
/**
* A pretty-print representation of the traversal explanation.
*
* @return a {@link String} representation of the traversal explanation
*/
- @Override
- public String toString() {
- final int maxLineLength = 75;
+ public String prettyPrint(final int maxLineLength) {
final String originalTraversal = "Original Traversal";
final String finalTraversal = "Final Traversal";
final int maxStrategyColumnLength = this.strategyTraversals.stream()
@@ -95,10 +102,13 @@ public class TraversalExplanation implements Serializable {
.max(Comparator.naturalOrder())
.orElse(15);
final int newLineIndent = maxStrategyColumnLength + 10;
- int maxTraversalColumnLength = Stream.concat(Stream.of(Pair.with(null, this.traversal)), this.strategyTraversals.stream())
+ final int maxTraversalColumn = maxLineLength - newLineIndent;
+ if (maxTraversalColumn < 1)
+ throw new IllegalArgumentException("The maximum line length is too small to present the " + TraversalExplanation.class.getSimpleName() + ": " + maxLineLength);
+ int largestTraversalColumn = Stream.concat(Stream.of(Pair.with(null, this.traversal)), this.strategyTraversals.stream())
.map(Pair::getValue1)
.map(Object::toString)
- .map(s -> wordWrap(s, maxLineLength, newLineIndent))
+ .map(s -> wordWrap(s, maxTraversalColumn, newLineIndent))
.flatMap(s -> Stream.of(s.split("\n")))
.map(String::trim)
.map(s -> s.trim().startsWith("[") ? s : " " + s) // 3 indent on new lines
@@ -107,7 +117,7 @@ public class TraversalExplanation implements Serializable {
.get();
final StringBuilder builder = new StringBuilder("Traversal Explanation\n");
- for (int i = 0; i < (maxStrategyColumnLength + 7 + maxTraversalColumnLength); i++) {
+ for (int i = 0; i < (maxStrategyColumnLength + 7 + largestTraversalColumn); i++) {
builder.append("=");
}
builder.append("\n");
@@ -115,7 +125,7 @@ public class TraversalExplanation implements Serializable {
for (int i = 0; i < maxStrategyColumnLength - originalTraversal.length() + 7; i++) {
builder.append(" ");
}
- builder.append(wordWrap(this.traversal.toString(), maxLineLength, newLineIndent));
+ builder.append(wordWrap(this.traversal.toString(), maxTraversalColumn, newLineIndent));
builder.append("\n\n");
for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pairs : this.strategyTraversals) {
builder.append(pairs.getValue0());
@@ -127,7 +137,7 @@ public class TraversalExplanation implements Serializable {
for (int i = 0; i < 3; i++) {
builder.append(" ");
}
- builder.append(wordWrap(pairs.getValue1().toString(), maxLineLength, newLineIndent)).append("\n");
+ builder.append(wordWrap(pairs.getValue1().toString(), maxTraversalColumn, newLineIndent)).append("\n");
}
builder.append("\n");
builder.append(finalTraversal);
@@ -136,7 +146,7 @@ public class TraversalExplanation implements Serializable {
}
builder.append(wordWrap((this.strategyTraversals.size() > 0 ?
this.strategyTraversals.get(this.strategyTraversals.size() - 1).getValue1().toString() :
- this.traversal.toString()), maxLineLength, newLineIndent));
+ this.traversal.toString()), maxTraversalColumn, newLineIndent));
return builder.toString();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21a533d4/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java
index 57841e4..3350a87 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java
@@ -49,12 +49,12 @@ public class TraversalExplanationTest {
@Test
public void shouldWordWrapCorrectly() {
GraphTraversal<?, ?> traversal = __.V().out().out();
- String toString = traversal.explain().toString();
+ String toString = traversal.explain().prettyPrint();
assertFalse(toString.contains("VertexStep(OUT,vertex),\n"));
//System.out.println(toString);
///
traversal = __.V().out().out().out().out();
- toString = traversal.explain().toString();
+ toString = traversal.explain().prettyPrint();
assertTrue(toString.contains("VertexStep(OUT,vertex),\n"));
//System.out.println(toString);
///
@@ -64,8 +64,8 @@ public class TraversalExplanationTest {
traversal.out();
}
traversal.asAdmin().setStrategies(TraversalStrategies.GlobalCache.getStrategies(Graph.class));
- toString = traversal.explain().toString();
- if (i < 4)
+ toString = traversal.explain().prettyPrint();
+ if (i < 3)
assertFalse(toString.contains("VertexStep(OUT,vertex),\n"));
else {
assertFalse(Stream.of(toString.split("\n"))
@@ -116,6 +116,19 @@ public class TraversalExplanationTest {
found++;
}
assertEquals(4, found);
- // System.out.println(traversal.explain());
+ //
+ found = 0;
+ for (final String line : traversal.explain().prettyPrint().split("]\n")) { // need to split cause of word wrap
+ //System.out.println(line + "\n\n");
+ if (line.contains("IncidentToAdjacentStrategy") && line.contains("[VertexStep(IN,vertex)"))
+ found++;
+ if (line.contains("IncidentToAdjacentStrategy") && line.contains("[VertexStep(OUT,vertex)"))
+ found++;
+ if (line.contains("AdjacentToIncidentStrategy") && line.contains("[VertexStep(BOTH,edge)"))
+ found++;
+ if (line.contains("RangeByIsCountStrategy") && line.contains("RangeGlobalStep(0,3)"))
+ found++;
+ }
+ assertEquals(4, found);
}
}