View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.vfs2.tasks;
18  
19  import org.apache.commons.vfs2.Capability;
20  import org.apache.commons.vfs2.FileObject;
21  import org.apache.commons.vfs2.FileSystemException;
22  import org.apache.commons.vfs2.Selectors;
23  
24  /**
25   * An Ant task that moves matching files.
26   * <p>
27   * TODO - Delete matching folders.
28   * </p>
29   */
30  public class MoveTask extends CopyTask {
31      private boolean tryRename;
32  
33      /**
34       * Enable/disable move/rename of file (if possible).
35       *
36       * @param tryRename true if the file should be renamed.
37       */
38      public void setTryRename(final boolean tryRename) {
39          this.tryRename = tryRename;
40      }
41  
42      /**
43       * Handles a single source file.
44       */
45      @Override
46      protected void handleOutOfDateFile(final FileObjectect.html#FileObject">FileObject srcFile, final FileObject destFile) throws FileSystemException {
47          if (!tryRename || !srcFile.canRenameTo(destFile)) {
48              super.handleOutOfDateFile(srcFile, destFile);
49  
50              log("Deleting " + srcFile.getPublicURIString());
51              srcFile.delete(Selectors.SELECT_SELF);
52          } else {
53              log("Rename " + srcFile.getPublicURIString() + " to " + destFile.getPublicURIString());
54              srcFile.moveTo(destFile);
55              if (!isPreserveLastModified()
56                      && destFile.getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FILE)) {
57                  destFile.getContent().setLastModifiedTime(System.currentTimeMillis());
58              }
59          }
60      }
61  }