1 package csdl.jblanket.app.tree; 2 3 import csdl.jblanket.methodset.MethodInfo; 4 import csdl.jblanket.methodset.MethodSet; 5 6 import java.io.IOException ; 7 import java.io.OutputStream ; 8 import java.util.ArrayList ; 9 import java.util.Date ; 10 import java.util.List ; 11 import java.util.StringTokenizer ; 12 13 import javax.swing.tree.DefaultMutableTreeNode ; 14 import javax.swing.tree.DefaultTreeModel ; 15 import javax.swing.tree.TreePath ; 16 17 25 public class TreeWriter { 26 27 28 private DefaultTreeModel tree; 29 30 private MethodSet methodSet; 31 32 37 public TreeWriter(DefaultTreeModel tree) { 38 39 this.tree = tree; 40 this.methodSet = new MethodSet(); 41 } 42 43 49 public void store(OutputStream ostream) throws IOException { 50 51 fillMethodSet((DefaultMutableTreeNode ) tree.getRoot()); 52 this.methodSet.store(ostream, "", new Date ()); 53 } 54 55 61 private void fillMethodSet(DefaultMutableTreeNode node) { 62 63 if (node.isLeaf()) { 64 65 MethodNode methodNode = (MethodNode) node.getUserObject(); 66 if (methodNode.isIndividualExclude()) { 67 68 TreePath path = new TreePath (tree.getPathToRoot(node)); 70 71 StringBuffer classBuffer = new StringBuffer ();; 72 for (int i = 1; i < path.getPathCount() - 1; i++) { 73 Node nextNode = 74 (Node) ((DefaultMutableTreeNode ) path.getPathComponent(i)).getUserObject(); 75 classBuffer.append(nextNode.toString()); 76 77 if (i < path.getPathCount() - 2) { 79 classBuffer.append("."); 80 } 81 } 82 83 int paramIndex = methodNode.toString().indexOf("("); 85 String methodName = methodNode.toString().substring(0, paramIndex); 86 String params = methodNode.toString().substring(paramIndex + 1, 88 methodNode.toString().length() - 1); 89 List paramList = new ArrayList (); 90 StringTokenizer tokens = new StringTokenizer (params, ","); 91 while (tokens.hasMoreTokens()) { 92 paramList.add(tokens.nextToken().trim()); 93 } 94 this.methodSet.add(new MethodInfo(classBuffer.toString(), methodName, paramList)); 96 } 97 } 98 else { 99 for (int childIndex = 0; childIndex < tree.getChildCount(node); childIndex++) { 100 fillMethodSet((DefaultMutableTreeNode ) tree.getChild(node, childIndex)); 101 } 102 } 103 } 104 } | Popular Tags |