Author: imario Date: Sat Jan 29 07:29:06 2005 New Revision: 149047 URL: http://svn.apache.org/viewcvs?view=rev&rev=149047 Log: PR: 32356 Submitted by: Anthony Goubard
srcdirisbase optional Ant copy task attribute Modified: jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java jakarta/commons/sandbox/vfs/trunk/xdocs/anttasks.xml Modified: jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java?view=diff&rev=149047&p1=jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java&r1=149046&p2=jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java&r2=149047 ============================================================================== --- jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java (original) +++ jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java Sat Jan 29 07:29:06 2005 @@ -40,7 +40,7 @@ * <li>Up-to-date destination file. * * @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a> - * @version $Revision: 1.13 $ $Date: 2004/12/03 20:33:51 $ + * @version $Revision: 1.13 $ $Date$ * @todo Deal with case where dest file maps to a child of one of the source files * @todo Deal with case where dest file already exists and is incorrect type (not file, not a folder) * @todo Use visitors @@ -56,6 +56,7 @@ private String destFileUrl; private String destDirUrl; private String srcDirUrl; + private boolean srcDirIsBase; private String filesList; /** @@ -93,6 +94,14 @@ } /** + * Sets whether the source directory should be consider as the base directory. + */ + public void setSrcDirIsBase(final boolean srcDirIsBase) + { + this.srcDirIsBase = srcDirIsBase; + } + + /** * Sets the files to includes */ public void setIncludes(final String filesList) @@ -197,6 +206,11 @@ destFolder.createFolder(); // Locate the source files, and make sure they exist + FileName srcDirName = null; + if (srcDirUrl !=null ) + { + srcDirName = resolveFile(srcDirUrl).getName(); + } final ArrayList srcs = new ArrayList(); for (int i = 0; i < srcFiles.size(); i++) { @@ -225,7 +239,16 @@ if (rootFile.getType() == FileType.FILE) { // Build the destination file name - final FileObject destFile = destFolder.resolveFile(rootName.getBaseName(), NameScope.DESCENDENT); + String relName = null; + if (srcDirName == null || !srcDirIsBase) + { + relName = rootName.getBaseName(); + } + else + { + relName = srcDirName.getRelativeName(rootName); + } + final FileObject destFile = destFolder.resolveFile(relName, NameScope.DESCENDENT); // Do the copy handleFile(destFiles, rootFile, destFile); @@ -233,13 +256,23 @@ else { // Find matching files - final FileObject[] files = rootFile.findFiles(Selectors.SELECT_FILES); + // If srcDirIsBase is true, select also the sub-directories + final FileObject[] files = rootFile.findFiles(srcDirIsBase ? Selectors.SELECT_ALL : Selectors.SELECT_FILES); + for (int j = 0; j < files.length; j++) { final FileObject srcFile = files[j]; // Build the destination file name - String relName = rootName.getRelativeName(srcFile.getName()); + String relName = null; + if (srcDirName == null || !srcDirIsBase) + { + relName = rootName.getRelativeName(srcFile.getName()); + } + else + { + relName = srcDirName.getRelativeName(srcFile.getName()); + } final FileObject destFile = destFolder.resolveFile(relName, NameScope.DESCENDENT); Modified: jakarta/commons/sandbox/vfs/trunk/xdocs/anttasks.xml Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/vfs/trunk/xdocs/anttasks.xml?view=diff&rev=149047&p1=jakarta/commons/sandbox/vfs/trunk/xdocs/anttasks.xml&r1=149046&p2=jakarta/commons/sandbox/vfs/trunk/xdocs/anttasks.xml&r2=149047 ============================================================================== --- jakarta/commons/sandbox/vfs/trunk/xdocs/anttasks.xml (original) +++ jakarta/commons/sandbox/vfs/trunk/xdocs/anttasks.xml Sat Jan 29 07:29:06 2005 @@ -132,6 +132,14 @@ </td> </tr> <tr> + <td>srcdirisbase</td> + <td>Set whether the source directory should be used as base directory. + If set to true, the subdirectories of the specified directories will be copied as well.</td> + <td>No, default is + <code>false</code>. + </td> + </tr> + <tr> <td>src</td> <td>A source file or folder to copy. Copies all descendents of a folder.</td> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]