SPARQL builder and CQL-to-SPARQL converter SUP-652
[cql-java-moved-to-github.git] / src / main / java / org / z3950 / zing / cql / utils / PrettyPrinter.java
diff --git a/src/main/java/org/z3950/zing/cql/utils/PrettyPrinter.java b/src/main/java/org/z3950/zing/cql/utils/PrettyPrinter.java
new file mode 100644 (file)
index 0000000..8ed9bfc
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 1995-2014, Index Data
+ * All rights reserved.
+ * See the file LICENSE for details.
+ */
+
+package org.z3950.zing.cql.utils;
+
+/**
+ *
+ * @author jakub
+ */
+public class PrettyPrinter {
+  private final static String INDENT = "  ";
+  private final StringBuilder sb;
+  private final int level;
+  
+  public PrettyPrinter() {
+    sb = new StringBuilder();
+    level = 0;
+  }
+  
+  private PrettyPrinter(StringBuilder sb, int level) {
+    this.sb = sb;
+    this.level = level;
+  }
+  
+  public PrettyPrinter put(String append) {
+    sb.append(append);
+    return this;
+  }
+  
+  public PrettyPrinter endl() {
+    sb.append('\n');
+    return this;
+  }
+  
+  public PrettyPrinter startl(String append) {
+    indent(level);
+    return put(append);
+  }
+  
+  public PrettyPrinter putl(String line) {
+    return startl(line).endl();
+  }
+  
+  public PrettyPrinter levelUp() {
+    //create new instance with a higher levelUp, backed by the same builder
+    return new PrettyPrinter(sb, level+1);
+  }
+  
+  public PrettyPrinter indent(int level) {
+    while (level-- > 0) {
+      sb.append(INDENT);
+    }
+    return this;
+  }
+
+  @Override
+  public String toString() {
+    return sb.toString();
+  }
+  
+}