package net.ion.craken.node.crud.util; import net.ion.craken.node.ReadNode; import net.ion.craken.node.ReadSession; import net.ion.craken.node.crud.tree.Fqn; public class TreeUtil { public static String printTree(ReadSession session, boolean details) { StringBuilder sb = new StringBuilder(); sb.append("\n\n"); // walk tree sb.append("+ ").append(Fqn.SEPARATOR); if (details) sb.append(" ").append(session.root().toMap()); sb.append("\n"); addChildren(session.root(), 1, sb, details); return sb.toString(); } private static void addChildren(ReadNode node, int depth, StringBuilder sb, boolean details) { for (ReadNode child : node.children().toList()) { for (int i = 0; i < depth; i++) sb.append(" "); // indentations sb.append("+ "); sb.append(child.fqn().getLastElementAsString()).append(Fqn.SEPARATOR); if (details) sb.append(" ").append(child.toMap()); sb.append("\n"); addChildren(child, depth + 1, sb, details); } } }