package org.hadatac.console.models; import java.util.ArrayList; import java.util.Iterator; public class TreeNode { private String name; private ArrayList<TreeNode> children; public TreeNode(String n) { name = n; children = new ArrayList<TreeNode>(); } public ArrayList<TreeNode> getChildren() { return children; } public String getName() { return name; } public TreeNode hasValue(String s) { if (name.equals(s)) { return this; } else { for (TreeNode child : children) { TreeNode tempNode = child.hasValue(s); if (tempNode != null) { return tempNode; } } return null; } } public void addChild(String s) { TreeNode newTreeNode = new TreeNode(s); children.add(newTreeNode); } public void addChild(TreeNode n) { children.add(n); } public void replaceChild(TreeNode child, TreeNode replacement) { if (children.contains(child)){ children.remove(child); children.add(replacement); } else { System.out.println("TreeNode.java - replaceChild : Specified Child Not Contained in TreeNode Children: \n" + this.toJson(0) + "\n"); } } public String toJson(int level) { String ind = ""; String json_children = ""; for (int i=0; i < level; i++) { ind = ind + " "; } if (children.size() == 0) { return(ind + "{ \"name\": \"" + name + "\" , \"size\": 10 }"); } json_children = "\n" + ind + " \"children\": [\n"; boolean firstTime = true; Iterator<TreeNode> nodeIterator = children.iterator(); while (nodeIterator.hasNext()) { if (!firstTime) { json_children = json_children + ",\n"; } else { json_children = json_children + "\n"; } json_children = json_children + nodeIterator.next().toJson(level + 1); firstTime = false; } json_children = json_children + ind + "]\n"; return (ind + "{\n" + ind + " \"name\": \"" + name + "\" ," + json_children + ind + "}"); } }