1 package csdl.jblanket.ant; 2 3 import java.util.ArrayList ; 4 import java.util.Date ; 5 import java.util.Iterator ; 6 import java.util.List ; 7 8 import org.apache.tools.ant.BuildException; 9 import org.apache.tools.ant.DirectoryScanner; 10 import org.apache.tools.ant.types.FileSet; 11 12 133 public class JBlanketModifierTask extends JBlanketTask { 134 135 136 private String testGrammar; 137 138 139 protected String untestableFile; 140 141 protected String excludedFile; 142 143 144 private ArrayList fileSets; 145 146 private ArrayList packagePrefixes; 147 148 151 public JBlanketModifierTask() { 152 super(); 153 154 this.testGrammar = null; 155 156 this.untestableFile = null; 157 this.excludedFile = null; 158 159 this.fileSets = new ArrayList (); 160 this.packagePrefixes = new ArrayList (); 161 } 162 163 168 public void addFileSet(FileSet fileSet) { 169 this.fileSets.add(fileSet); 170 } 171 172 177 public void addPackagePrefix(PackagePrefix packagePrefix) { 178 this.packagePrefixes.add(packagePrefix); 179 } 180 181 189 public void setTestgrammar(String testGrammar) { 190 this.testGrammar = testGrammar; 191 } 192 193 198 public void setUntestablefile(String untestableFile) { 199 this.untestableFile = untestableFile; 200 } 201 202 208 public void setExcludedfile(String excludedFile) { 209 this.excludedFile = excludedFile; 210 } 211 212 220 private String arrayToString(String [] array, String message) { 221 222 StringBuffer delimitedString = new StringBuffer (); 223 224 for (int i = 0; i < array.length; i++) { 225 226 if (i > 0) { 227 delimitedString.append(";"); 228 } 229 230 delimitedString.append(array[i]); 231 232 if (super.verbose) { 233 System.out.println(message + ": " + array[i]); 234 } 235 } 236 237 return delimitedString.toString(); 238 } 239 240 247 private String listToString(List list, String message) { 248 249 StringBuffer delimitedString = new StringBuffer (); 250 251 for (Iterator i = list.iterator(); i.hasNext(); ) { 252 253 if (delimitedString.length() != 0) { 254 delimitedString.append(";"); 255 } 256 257 String next = ((PackagePrefix) i.next()).getName(); 258 delimitedString.append(next); 259 260 if (super.verbose) { 261 System.out.println(message + ": " + next); 262 } 263 } 264 265 return delimitedString.toString(); 266 } 267 268 271 public void execute() { 272 273 Date startTime = new Date (); 274 275 if (!super.enable) { 277 278 if (super.verbose) { 279 System.out.println("JBlanket disabled; no files modified."); 280 } 281 282 return; 283 } 284 285 for (Iterator i = this.fileSets.iterator(); i.hasNext(); ) { 287 288 ArrayList args = new ArrayList (); 290 291 FileSet fileSet = (FileSet) i.next(); 293 DirectoryScanner scanner = fileSet.getDirectoryScanner(getProject()); 294 args.add("-classDir"); 295 args.add(scanner.getBasedir().getAbsolutePath()); 296 297 args.add("-include"); 299 args.add(arrayToString(scanner.getIncludedFiles(), "modifying")); 300 301 args.add("-exclude"); 303 args.add(arrayToString(scanner.getExcludedFiles(), "excluding")); 304 305 args.add("-verbose"); 307 args.add(new Boolean (super.verbose)); 308 309 args.add("-testGrammar"); 311 args.add(this.testGrammar); 312 313 if (super.excludeOneLineMethods) { 315 args.add("-excludeOneLineMethods"); 316 args.add(new Boolean (super.excludeOneLineMethods)); 317 if (super.oneLineFile != null) { 318 args.add("-oneLineFile"); 319 args.add(super.oneLineFile); 320 } 321 } 322 323 if (super.excludeConstructors) { 325 args.add("-excludeConstructors"); 326 args.add(new Boolean (super.excludeConstructors)); 327 if (super.constructorFile != null) { 328 args.add("-constructorFile"); 329 args.add(super.constructorFile); 330 } 331 } 332 333 if (super.totalFile != null) { 335 args.add("-totalFile"); 336 args.add(super.totalFile); 337 } 338 339 if (this.untestableFile != null) { 341 args.add("-untestableFile"); 342 args.add(this.untestableFile); 343 } 344 345 if (super.excludeIndividualMethods) { 347 args.add("-excludeIndividualMethods"); 348 args.add(new Boolean (super.excludeIndividualMethods)); 349 } 350 351 if (this.excludedFile != null) { 353 args.add("-excludedFile"); 354 args.add(this.excludedFile); 355 } 356 357 if (this.packagePrefixes.size() != 0) { 359 args.add("-packagePrefix"); 360 args.add(listToString(packagePrefixes, "package prefixes")); 361 } 362 363 try { 366 csdl.jblanket.modifier.Modifier.main(args); 367 } 368 catch (Exception e) { 369 e.printStackTrace(); 370 throw new BuildException("Error in JBlanket."); 371 } 372 catch (Throwable t) { 373 t.printStackTrace(); 374 throw new BuildException("Unsuccessful modification of files"); 375 } 376 } 377 378 Date endTime = new Date (); 379 long elapsedTime = (endTime.getTime() - startTime.getTime()) / 1000; 380 System.out.println("JBlanket modify task completed " + "(" + elapsedTime + " secs.)"); 381 } 382 } 383 | Popular Tags |