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 copies 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 Copy folders that do not contain files
30 */
31 public class CopyTask
32 extends AbstractSyncTask
33 {
34 private boolean overwrite = false;
35 private boolean preserveLastModified = true;
36
37 /***
38 * Enable/disable overwriting of up-to-date files.
39 */
40 public void setOverwrite(boolean overwrite)
41 {
42 this.overwrite = overwrite;
43 }
44
45 /***
46 * Enable/disable preserving last modified time of copied files.
47 */
48 public void setPreserveLastModified(boolean preserveLastModified)
49 {
50 this.preserveLastModified = preserveLastModified;
51 }
52
53 /***
54 * @return the curent value of overwrite
55 */
56 public boolean isOverwrite()
57 {
58 return overwrite;
59 }
60
61 /***
62 * @return the curent value of preserveLastModified
63 */
64 public boolean isPreserveLastModified()
65 {
66 return preserveLastModified;
67 }
68
69 /***
70 * Handles an out-of-date file.
71 */
72 protected void handleOutOfDateFile(final FileObject srcFile,
73 final FileObject destFile)
74 throws FileSystemException
75 {
76 log("Copying " + srcFile + " to " + destFile);
77 destFile.copyFrom(srcFile, Selectors.SELECT_SELF);
78 if (preserveLastModified &&
79 srcFile.getFileSystem().hasCapability(Capability.GET_LAST_MODIFIED) &&
80 destFile.getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FILE))
81 {
82 final long lastModTime = srcFile.getContent().getLastModifiedTime();
83 destFile.getContent().setLastModifiedTime(lastModTime);
84 }
85 }
86
87 /***
88 * Handles an up-to-date file.
89 */
90 protected void handleUpToDateFile(final FileObject srcFile,
91 final FileObject destFile)
92 throws FileSystemException
93 {
94 if (overwrite)
95 {
96
97 handleOutOfDateFile(srcFile, destFile);
98 }
99 }
100 }