Minor change, modified dumpTree to graphicaly show a tree

This commit is contained in:
andrea
2015-06-21 15:36:41 +02:00
parent 867d78b650
commit 3deb903f3c
@@ -44,7 +44,7 @@ public class SubscriptionsStore {
}
public static interface IVisitor<T> {
void visit(TreeNode node);
void visit(TreeNode node, int deep);
T getResult();
}
@@ -53,13 +53,22 @@ public class SubscriptionsStore {
String s = "";
public void visit(TreeNode node) {
public void visit(TreeNode node, int deep) {
String subScriptionsStr = "";
String indentTabs = indentTabs(deep);
for (Subscription sub : node.m_subscriptions) {
subScriptionsStr += sub.toString();
subScriptionsStr += indentTabs + sub.toString() + "\n";
}
s += node.getToken() == null ? "" : node.getToken().toString();
s += subScriptionsStr + "\n";
s += "\n" + (node.m_subscriptions.isEmpty() ? indentTabs : "") + subScriptionsStr /*+ "\n"*/;
}
private String indentTabs(int deep) {
String s = "";
for (int i=0; i < deep; i++) {
s += "\t";
}
return s;
}
public String getResult() {
@@ -71,7 +80,7 @@ public class SubscriptionsStore {
private List<Subscription> m_allSubscriptions = new ArrayList<Subscription>();
public void visit(TreeNode node) {
public void visit(TreeNode node, int deep) {
m_allSubscriptions.addAll(node.subscriptions());
}
@@ -111,7 +120,7 @@ public class SubscriptionsStore {
}
private TreeNode findMatchingNode(String topic) {
List<Token> tokens = new ArrayList<Token>();
List<Token> tokens = new ArrayList<>();
try {
tokens = parseTopic(topic);
} catch (ParseException ex) {
@@ -169,7 +178,7 @@ public class SubscriptionsStore {
*/
public void clearAllSubscriptions() {
SubscriptionTreeCollector subsCollector = new SubscriptionTreeCollector();
bfsVisit(subscriptions, subsCollector);
bfsVisit(subscriptions, subsCollector, 0);
List<Subscription> allSubscriptions = subsCollector.getResult();
for (Subscription subscription : allSubscriptions) {
@@ -232,17 +241,17 @@ public class SubscriptionsStore {
public String dumpTree() {
DumpTreeVisitor visitor = new DumpTreeVisitor();
bfsVisit(subscriptions, visitor);
bfsVisit(subscriptions, visitor, 0);
return visitor.getResult();
}
private void bfsVisit(TreeNode node, IVisitor visitor) {
private void bfsVisit(TreeNode node, IVisitor visitor, int deep) {
if (node == null) {
return;
}
visitor.visit(node);
visitor.visit(node, deep);
for (TreeNode child : node.m_children) {
bfsVisit(child, visitor);
bfsVisit(child, visitor, ++deep);
}
}