KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > aspectwerkz > compiler > Utility


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.aspectwerkz.compiler;
5
6 import org.apache.tools.ant.BuildLogger;
7 import org.apache.tools.ant.DefaultLogger;
8 import org.apache.tools.ant.Project;
9 import org.apache.tools.ant.taskdefs.Copy;
10 import org.apache.tools.ant.taskdefs.Delete;
11 import org.apache.tools.ant.types.FileSet;
12 import org.apache.tools.ant.types.selectors.FilenameSelector;
13
14 import java.io.File JavaDoc;
15
16 /**
17  * Utility class providing file manipulation facilities. <p/>This implementation uses Ant task programmaticaly.
18  *
19  * @author <a HREF="mailto:alex@gnilux.com">Alexandre Vasseur </a>
20  */

21 public class Utility {
22   /**
23    * Ant project
24    */

25   private Project project;
26
27   /**
28    * Ant logger
29    */

30   private BuildLogger logger;
31
32   private boolean verbose = false;
33
34   /**
35    * Constructs a new project and attach simple logger
36    */

37   public Utility() {
38     project = new Project();
39     logger = new DefaultLogger();
40     logger.setMessageOutputLevel(0);
41     logger.setOutputPrintStream(System.out);
42     logger.setErrorPrintStream(System.err);
43     project.addBuildListener(logger);
44   }
45
46   /**
47    * Set verbosity
48    */

49   public void setVerbose(boolean verbose) {
50     if (verbose) {
51       logger.setMessageOutputLevel(2);
52       verbose = true;
53     } else {
54       logger.setMessageOutputLevel(-1);
55       verbose = false;
56     }
57   }
58
59   /**
60    * Delete recursively a directory and the directory itself
61    */

62   public void deleteDir(File JavaDoc dir) {
63     Delete task = new Delete();
64     task.setProject(project);
65     task.setTaskName("delete");
66     FilenameSelector fns = new FilenameSelector();
67     fns.setName("**/*");
68     FileSet fs = new FileSet();
69     fs.setDir(dir);
70     fs.addFilename(fns);
71     task.addFileset(fs);
72     task.setIncludeEmptyDirs(true);
73     task.perform();
74     dir.delete();
75   }
76
77   /**
78    * Copy a file or directory recursively
79    */

80   public void backupFile(File JavaDoc source, File JavaDoc dest) {
81     Copy task = new Copy();
82     task.setProject(project);
83     task.setTaskName("backup");
84     task.setVerbose(verbose);
85
86     //@todo haltOnError
87
//copyTask.setFailOnError(haltOnError);
88
if (source.isDirectory()) {
89       FilenameSelector fns = new FilenameSelector();
90       fns.setName("**/*");
91       FileSet fs = new FileSet();
92       fs.setDir(source);
93       fs.addFilename(fns);
94       task.addFileset(fs);
95       task.setTodir(dest);
96       task.setIncludeEmptyDirs(true);
97     } else {
98       task.setFile(source);
99       task.setTofile(dest);
100     }
101     task.setOverwrite(true);
102     task.setPreserveLastModified(true);
103     task.execute();
104   }
105
106   public void log(String JavaDoc msg) {
107     project.log(msg);
108   }
109 }
Popular Tags