1 25 package classycle.ant; 26 27 import java.util.ArrayList ; 28 import java.util.Iterator ; 29 import java.util.LinkedList ; 30 31 import org.apache.tools.ant.BuildException; 32 import org.apache.tools.ant.DirectoryScanner; 33 import org.apache.tools.ant.Task; 34 import org.apache.tools.ant.types.FileSet; 35 36 import classycle.util.AndStringPattern; 37 import classycle.util.NotStringPattern; 38 import classycle.util.StringPattern; 39 import classycle.util.TrueStringPattern; 40 import classycle.util.WildCardPattern; 41 42 47 public abstract class ClassycleTask extends Task 48 { 49 private boolean _mergeInnerClasses; 50 private StringPattern _includingClasses = new TrueStringPattern(); 51 private StringPattern _excludingClasses = new TrueStringPattern(); 52 private StringPattern _reflectionPattern; 53 private LinkedList _fileSets = new LinkedList (); 54 55 public void setMergeInnerClasses(boolean mergeInnerClasses) 56 { 57 _mergeInnerClasses = mergeInnerClasses; 58 } 59 60 public void setIncludingClasses(String patternList) 61 { 62 _includingClasses = WildCardPattern.createFromsPatterns(patternList, ", "); 63 } 64 65 public void setExcludingClasses(String patternList) 66 { 67 _excludingClasses = new NotStringPattern( 68 WildCardPattern.createFromsPatterns(patternList, ", ")); 69 } 70 71 public void setReflectionPattern(String patternList) 72 { 73 if ("".equals(patternList)) 74 { 75 _reflectionPattern = new TrueStringPattern(); 76 } else 77 { 78 _reflectionPattern 79 = WildCardPattern.createFromsPatterns(patternList, ", "); 80 } 81 } 82 83 public void addConfiguredFileset(FileSet set) 84 { 85 _fileSets.add(set); 86 } 87 88 public void execute() throws BuildException 89 { 90 super.execute(); 91 92 if (_fileSets.size() == 0) 93 { 94 throw new BuildException("at least one file set is required"); 95 } 96 } 97 98 protected String [] getClassFileNames() 99 { 100 ArrayList fileNames = new ArrayList (); 101 String fileSeparator = System.getProperty("file.separator"); 102 for (Iterator i = _fileSets.iterator(); i.hasNext();) 103 { 104 FileSet set = (FileSet) i.next(); 105 DirectoryScanner scanner = set.getDirectoryScanner(getProject()); 106 String path = scanner.getBasedir().getAbsolutePath(); 107 String [] localFiles = scanner.getIncludedFiles(); 108 for (int j = 0; j < localFiles.length; j++) 109 { 110 fileNames.add(path + fileSeparator + localFiles[j]); 111 } 112 } 113 String [] classFiles = new String [fileNames.size()]; 114 return (String []) fileNames.toArray(classFiles); 115 } 116 117 protected StringPattern getPattern() 118 { 119 AndStringPattern pattern = new AndStringPattern(); 120 pattern.appendPattern(_includingClasses); 121 pattern.appendPattern(_excludingClasses); 122 return pattern; 123 } 124 125 protected StringPattern getReflectionPattern() 126 { 127 return _reflectionPattern; 128 } 129 130 protected boolean isMergeInnerClasses() 131 { 132 return _mergeInnerClasses; 133 } 134 135 136 } 137 | Popular Tags |