/** * */ package querqy; import java.io.PrintWriter; import java.util.Arrays; import querqy.model.AbstractNodeVisitor; import querqy.model.BooleanQuery; import querqy.model.DisjunctionMaxQuery; import querqy.model.Node; import querqy.model.Query; import querqy.model.RawQuery; import querqy.model.Term; /** * @author René Kriegler, @renekrie * */ public class PrettyPrinter extends AbstractNodeVisitor<Node> { int depth = 0; final int indendStep; final PrintWriter writer; public PrettyPrinter(PrintWriter writer, int indendStep) { this.indendStep = indendStep; this.writer = writer; } @Override public Node visit(Query query) { String indend = makeIndend(); writer.println(indend + "Q ("); depth++; super.visit(query); depth--; writer.println(indend + ")"); return null; } @Override public Node visit(BooleanQuery booleanQuery) { String indend = makeIndend(); writer.print(indend); writer.println(booleanQuery.getOccur() + "BQ: ("); depth++; super.visit(booleanQuery); depth--; writer.println(indend + ")"); return null; }; @Override public Node visit(DisjunctionMaxQuery disjunctionMaxQuery) { String indend = makeIndend(); writer.print(indend); writer.println(disjunctionMaxQuery.getOccur() + "DMQ: ("); depth++; super.visit(disjunctionMaxQuery); depth--; writer.println(indend + ")"); return null; }; @Override public Node visit(Term term) { String indend = makeIndend(); writer.print(indend); writer.println(term); return null; }; String makeIndend() { char[] buf = new char[depth * indendStep]; Arrays.fill(buf, ' '); return new String(buf); } @Override public Node visit(RawQuery rawQuery) { String indend = makeIndend(); writer.print(indend); writer.println(rawQuery); return null; } }