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/06/07 21:13:16 UTC
[4/4] tinkerpop git commit: TINKERPOP-1686 Display metrics
annotations if present
TINKERPOP-1686 Display metrics annotations if present
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8dd0a942
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8dd0a942
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8dd0a942
Branch: refs/heads/TINKERPOP-1686
Commit: 8dd0a942077da0f1de08efed3778ddc8730ac4ce
Parents: 938f5fe
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 7 17:12:37 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 7 17:12:37 2017 -0400
----------------------------------------------------------------------
.../traversal/util/DefaultTraversalMetrics.java | 46 +++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8dd0a942/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
index 219bf6b..f67bf5f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
@@ -27,6 +27,7 @@ import org.javatuples.Pair;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -216,7 +217,7 @@ public final class DefaultTraversalMetrics implements TraversalMetrics, Serializ
// Grab the values
final Long itemCount = m.getCount(ELEMENT_COUNT_ID);
final Long traverserCount = m.getCount(TRAVERSER_COUNT_ID);
- Double percentDur = (Double) m.getAnnotation(PERCENT_DURATION_KEY);
+ final Double percentDur = (Double) m.getAnnotation(PERCENT_DURATION_KEY);
// Build the row string
@@ -240,7 +241,50 @@ public final class DefaultTraversalMetrics implements TraversalMetrics, Serializ
sb.append(String.format(" %8.2f", percentDur));
}
+ // process any annotations
+ final Map<String,Object> annotations = m.getAnnotations();
+ if (!annotations.isEmpty()) {
+ // ignore the PERCENT_DURATION_KEY as that is a TinkerPop annotation that is displayed by default
+ annotations.entrySet().stream().filter(kv -> !kv.getKey().equals(PERCENT_DURATION_KEY)).forEach(kv -> {
+ final String prefix = " |-";
+ final String separator = "=";
+ final String k = prefix + StringUtils.abbreviate(kv.getKey(), 32);
+ final int valueIndentLen = separator.length() + k.length() + indent;
+ final int leftover = 110 - valueIndentLen;
+
+ final String[] splitValues = splitOnSize(kv.getValue().toString(), leftover);
+ for (int ix = 0; ix < splitValues.length; ix++) {
+ // the first lines gets the annotation prefix. the rest are indented to the separator
+ if (ix == 0) {
+ sb.append(String.format("%n%s", k + separator + splitValues[ix]));
+ } else {
+ sb.append(String.format("%n%s", padLeft(splitValues[ix], valueIndentLen - 1)));
+ }
+ }
+ });
+ }
+
appendMetrics(m.getNested(), sb, indent + 1);
}
}
+
+ private static String[] splitOnSize(final String text, final int size) {
+ final String[] ret = new String[(text.length() + size - 1) / size];
+
+ int counter = 0;
+ for (int start = 0; start < text.length(); start += size) {
+ ret[counter] = text.substring(start, Math.min(text.length(), start + size));
+ counter++;
+ }
+
+ return ret;
+ }
+
+ private static String padLeft(final String text, final int amountToPad) {
+ String newText = text;
+ for (int ix = 0; ix < amountToPad; ix++) {
+ newText = " " + newText;
+ }
+ return newText;
+ }
}