1 25 package classycle; 26 27 import classycle.util.AndStringPattern; 28 import classycle.util.NotStringPattern; 29 import classycle.util.StringPattern; 30 import classycle.util.StringPatternSequence; 31 import classycle.util.TrueStringPattern; 32 import classycle.util.WildCardPattern; 33 34 37 public abstract class CommandLine 38 { 39 private static final String MERGE_INNER_CLASSES = "-mergeInnerClasses"; 40 private static final String INCLUDING_CLASSES = "-includingClasses="; 41 private static final String EXCLUDING_CLASSES = "-excludingClasses="; 42 private static final String REFLECTION_PATTERN = "-reflectionPattern="; 43 44 private boolean _mergeInnerClasses; 45 protected boolean _valid = true; 46 protected StringPatternSequence _pattern = new AndStringPattern(); 47 protected StringPattern _reflectionPattern; 48 protected String [] _classFiles; 49 50 public CommandLine(String [] args) 51 { 52 int index = 0; 53 for (;index < args.length && args[index].charAt(0) == '-'; index++) 54 { 55 handleOption(args[index]); 56 } 57 _classFiles = new String [args.length - index]; 58 System.arraycopy(args, index, _classFiles, 0, _classFiles.length); 59 if (_classFiles.length == 0) 60 { 61 _valid = false; 62 } 63 } 64 65 protected void handleOption(String argument) 66 { 67 if (argument.startsWith(MERGE_INNER_CLASSES)) 68 { 69 _mergeInnerClasses = true; 70 } else if (argument.startsWith(INCLUDING_CLASSES)) 71 { 72 String patterns = argument.substring(INCLUDING_CLASSES.length()); 73 _pattern.appendPattern(WildCardPattern.createFromsPatterns(patterns, ",")); 74 } else if (argument.startsWith(EXCLUDING_CLASSES)) 75 { 76 String patterns = argument.substring(EXCLUDING_CLASSES.length()); 77 StringPattern p = WildCardPattern.createFromsPatterns(patterns, ","); 78 _pattern.appendPattern(new NotStringPattern(p)); 79 } else if (argument.startsWith(REFLECTION_PATTERN)) 80 { 81 String patterns = argument.substring(REFLECTION_PATTERN.length()); 82 if (patterns.length() == 0) 83 { 84 _reflectionPattern = new TrueStringPattern(); 85 } else { 86 _reflectionPattern = WildCardPattern.createFromsPatterns(patterns, ","); 87 } 88 } else 89 { 90 _valid = false; 91 } 92 } 93 94 98 public String [] getClassFiles() 99 { 100 return _classFiles; 101 } 102 103 110 public StringPattern getPattern() 111 { 112 return _pattern; 113 } 114 115 119 public StringPattern getReflectionPattern() 120 { 121 return _reflectionPattern; 122 } 123 124 128 public boolean isValid() 129 { 130 return _valid; 131 } 132 133 137 public boolean isMergeInnerClasses() 138 { 139 return _mergeInnerClasses; 140 } 141 142 143 144 public String getUsage() 145 { 146 return "[" + MERGE_INNER_CLASSES + "] " 147 + "[" + INCLUDING_CLASSES + "<pattern1>,<pattern2>,...] " 148 + "[" + EXCLUDING_CLASSES + "<pattern1>,<pattern2>,...] " 149 + "[" + REFLECTION_PATTERN + "<pattern1>,<pattern2>,...] " 150 + "<class files, zip/jar/war/ear files, or folders>"; 151 } 152 153 154 } 155
| Popular Tags
|