KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > io > DeleteJob


1 /*
2  * (c) Rob Gordon 2005.
3  */

4 package org.oddjob.io;
5
6 import java.io.File JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.io.Serializable JavaDoc;
9
10 import org.apache.commons.io.FileUtils;
11 import org.apache.log4j.Logger;
12
13
14 /**
15  * @oddjob.description Delete a file or directory, or files
16  * and directories.
17  * <p>
18  * Unless the force property is set, this job will cause an
19  * exception if an attempt is made to delete a non empty directory.
20  *
21  * @oddjob.example
22  *
23  * &lt;delete files="work/*" force="true"/&gt;
24  *
25  * @author Rob Gordon
26  */

27 public class DeleteJob implements Runnable JavaDoc, Serializable JavaDoc {
28     private static final long serialVersionUID = 20060117;
29
30     private static final Logger logger = Logger.getLogger(DeleteJob.class);
31     
32     /**
33      * @oddjob.property
34      * @oddjob.description A name, can be any text.
35      * @oddjob.required No.
36      */

37     private String JavaDoc name;
38     
39     /**
40      * @oddjob.property
41      * @oddjob.description The file, directory, or files and directories
42      * to delete.
43      * @oddjob.required Yes.
44      */

45     private File JavaDoc[] files;
46     
47     /**
48      * @oddjob.property
49      * @oddjob.description Forceably delete non empty directories.
50      * @oddjob.required No, defaults to false.
51      */

52     private boolean force;
53     
54     /**
55      * Get the name.
56      *
57      * @return The name.
58      */

59     public String JavaDoc getName() {
60         return name;
61     }
62     
63     /**
64      * Set the name
65      *
66      * @param name The name.
67      */

68     public void setName(String JavaDoc name) {
69         this.name = name;
70     }
71     
72     /**
73      * Get the files.
74      *
75      * @return The files.
76      */

77     public File JavaDoc[] getFiles() {
78         return files;
79     }
80     
81     /**
82      * Set the files.
83      *
84      * @param The files.
85      */

86     public void setFiles(File JavaDoc[] files) {
87         this.files = files;
88     }
89
90     /**
91      * Geter for force property.
92      *
93      * @return The force property.
94      */

95     public boolean getForce() {
96         return force;
97     }
98     
99     /**
100      * Setter for force property.
101      *
102      * @param force The force property.
103      */

104     public void setForce(boolean force) {
105         this.force = force;
106     }
107     
108     /*
109      * (non-Javadoc)
110      * @see java.lang.Runnable#run()
111      */

112     public void run() {
113         if (files == null) {
114             throw new IllegalStateException JavaDoc("Files must be specified.");
115         }
116         File JavaDoc[] toDelete = Files.expand(files);
117         Files.verifyWrite(toDelete);
118
119         int fileCount = 0;
120         int dirCount = 0;
121         for (int i = 0; i < toDelete.length; ++i) {
122             if (toDelete[i].isDirectory()) {
123                 ++dirCount;
124             }
125             else {
126                 ++fileCount;
127             }
128             if (force) {
129                 try {
130                     FileUtils.forceDelete(toDelete[i]);
131                 } catch (IOException JavaDoc e) {
132                     throw new RuntimeException JavaDoc(e);
133                 }
134             }
135             else {
136                 if (!toDelete[i].delete()) {
137                     throw new RuntimeException JavaDoc("Failed to delete " + toDelete[i]);
138                 }
139             }
140             logger.debug("Deleted " + toDelete[i]);
141         }
142         logger.info("Deleted " + fileCount + " files, "
143                 + dirCount + " directories.");
144     }
145     
146     /*
147      * (non-Javadoc)
148      * @see java.lang.Object#toString()
149      */

150     public String JavaDoc toString() {
151         if (name == null) {
152             return "Delete Files and Directories";
153         }
154         else {
155             return name;
156         }
157     }
158 }
159
Popular Tags