1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.tasks;
18
19 import org.apache.commons.vfs.Capability;
20 import org.apache.commons.vfs.FileObject;
21 import org.apache.commons.vfs.FileSystemException;
22 import org.apache.commons.vfs.Selectors;
23
24 /***
25 * An Ant task that moves matching files.
26 *
27 * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
28 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
29 * @todo Delete matching folders
30 */
31 public class MoveTask
32 extends CopyTask
33 {
34 private boolean tryRename = false;
35
36 /***
37 * Enable/disable move/rename of file (if possible)
38 */
39 public void setTryRename(boolean tryRename)
40 {
41 this.tryRename = tryRename;
42 }
43
44 /***
45 * Handles a single source file.
46 */
47 protected void handleOutOfDateFile(final FileObject srcFile,
48 final FileObject destFile)
49 throws FileSystemException
50 {
51 if (!tryRename || !srcFile.canRenameTo(destFile))
52 {
53 super.handleOutOfDateFile(srcFile, destFile);
54
55 log("Deleting " + srcFile);
56 srcFile.delete(Selectors.SELECT_SELF);
57 }
58 else
59 {
60 log("Rename " + srcFile + " to " + destFile);
61 srcFile.moveTo(destFile);
62 if (!isPreserveLastModified() &&
63 destFile.getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FILE))
64 {
65 destFile.getContent().setLastModifiedTime(System.currentTimeMillis());
66 }
67 }
68 }
69 }