1 25 package classycle.dependency; 26 27 import java.io.PrintWriter ; 28 import java.util.Map ; 29 30 import classycle.Analyser; 31 import classycle.graph.AtomicVertex; 32 33 39 public class DependencyChecker 40 { 41 private final Analyser _analyser; 42 private final ResultRenderer _renderer; 43 private final DependencyProcessor _processor; 44 45 56 public DependencyChecker(Analyser analyser, 57 String dependencyDefinition, Map properties, 58 ResultRenderer renderer) 59 { 60 _analyser = analyser; 61 _renderer = renderer; 62 DependencyProperties dp = new DependencyProperties(properties); 63 _processor = new DependencyProcessor(dependencyDefinition, dp, renderer); 64 } 65 66 71 public boolean check(PrintWriter writer) 72 { 73 boolean ok = true; 74 AtomicVertex[] graph = _analyser.getClassGraph(); 75 while (_processor.hasMoreStatements()) 76 { 77 Result result = _processor.executeNextStatement(graph); 78 if (result.isOk() == false) 79 { 80 ok = false; 81 } 82 writer.print(_renderer.render(result)); 83 } 84 return ok; 85 } 86 87 91 public static void main(String [] args) 92 { 93 DependencyCheckerCommandLine commandLine 94 = new DependencyCheckerCommandLine(args); 95 if (!commandLine.isValid()) { 96 System.out.println("Usage: java -cp classycle.jar " 97 + "classycle.DependencyChecker " 98 + commandLine.getUsage()); 99 System.exit(1); 100 } 101 102 Analyser analyser = new Analyser(commandLine.getClassFiles(), 103 commandLine.getPattern(), 104 commandLine.getReflectionPattern(), 105 commandLine.isMergeInnerClasses()); 106 DependencyChecker dependencyChecker 107 = new DependencyChecker(analyser, 108 commandLine.getDependencyDefinition(), 109 System.getProperties(), 110 commandLine.getRenderer()); 111 PrintWriter printWriter = new PrintWriter (System.out); 112 boolean ok = dependencyChecker.check(printWriter); 113 printWriter.flush(); 114 System.exit(ok ? 0 : 1); 115 } 116 } 117 | Popular Tags |