1 25 package classycle; 26 27 import java.util.ArrayList ; 28 import java.util.HashMap ; 29 import java.util.Iterator ; 30 31 import classycle.graph.AtomicVertex; 32 import classycle.graph.GraphProcessor; 33 import classycle.graph.Vertex; 34 35 41 public class PackageProcessor extends GraphProcessor 42 { 43 private final HashMap _packageVertices = new HashMap (); 44 private AtomicVertex[] _packageGraph; 45 46 50 public AtomicVertex[] getGraph() 51 { 52 return _packageGraph; 53 } 54 55 protected void initializeProcessing(Vertex[] graph) 56 { 57 _packageVertices.clear(); 58 } 59 60 protected void processBefore(Vertex vertex) 61 { 62 } 63 64 protected void processArc(Vertex tail, Vertex head) 65 { 66 PackageVertex tailPackage = getPackageVertex(tail); 67 PackageVertex headPackage = getPackageVertex(head); 68 tailPackage.addOutgoingArcTo(headPackage); 69 } 70 71 private PackageVertex getPackageVertex(Vertex vertex) 72 { 73 ClassAttributes classAttributes = (ClassAttributes) vertex.getAttributes(); 74 String className = (classAttributes).getName(); 75 int index = className.lastIndexOf('.'); 76 String packageName = index < 0 ? "(default package)" 77 : className.substring(0, index); 78 PackageVertex result = (PackageVertex) _packageVertices.get(packageName); 79 if (result == null) 80 { 81 result = new PackageVertex(packageName); 82 if (vertex instanceof AtomicVertex 83 && ((AtomicVertex) vertex).isGraphVertex()) 84 { 85 result.reset(); 87 } 88 _packageVertices.put(packageName, result); 89 } 90 result.addClass(classAttributes); 91 return result; 92 } 93 94 protected void processAfter(Vertex vertex) 95 { 96 } 97 98 protected void finishProcessing(Vertex[] graph) 99 { 100 Iterator vertices = _packageVertices.values().iterator(); 101 ArrayList list = new ArrayList (); 102 103 while (vertices.hasNext()) 104 { 105 AtomicVertex vertex = (AtomicVertex) vertices.next(); 106 if (vertex.isGraphVertex()) 107 { 108 list.add(vertex); 109 } 110 } 111 _packageGraph = (AtomicVertex[]) list.toArray(new AtomicVertex[list.size()]); 112 } 113 114 } 115 | Popular Tags |