|
|
@@ -58,9 +58,6 @@ |
|
|
|
* <li>srcDir: </li> |
|
|
|
* <li>replace: </li> |
|
|
|
* </ul> |
|
|
|
* |
|
|
|
* @author dIon Gillard <a href="mailto:dion@multitask.com.au">dion@multitask.com.au</a> |
|
|
|
* @version 1.2 |
|
|
|
*/ |
|
|
|
|
|
|
|
package org.apache.tools.ant.taskdefs.optional; |
|
|
@@ -69,10 +66,13 @@ import java.io.*; |
|
|
|
import java.util.*; |
|
|
|
import org.apache.tools.ant.*; |
|
|
|
import org.apache.tools.ant.taskdefs.*; |
|
|
|
import org.apache.tools.ant.types.Mapper; |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* @author dion |
|
|
|
* @author dIon Gillard <a href="mailto:dion@multitask.com.au">dion@multitask.com.au</a> |
|
|
|
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> |
|
|
|
* @version 1.2 |
|
|
|
*/ |
|
|
|
public class RenameExtensions extends MatchingTask { |
|
|
|
|
|
|
@@ -81,10 +81,14 @@ public class RenameExtensions extends MatchingTask { |
|
|
|
private boolean replace = false; |
|
|
|
private File srcDir; |
|
|
|
|
|
|
|
private Mapper.MapperType globType; |
|
|
|
|
|
|
|
|
|
|
|
/** Creates new RenameExtensions */ |
|
|
|
public RenameExtensions() { |
|
|
|
super(); |
|
|
|
globType = new Mapper.MapperType(); |
|
|
|
globType.setValue("glob"); |
|
|
|
} |
|
|
|
|
|
|
|
/** store fromExtension **/ |
|
|
@@ -108,8 +112,8 @@ public class RenameExtensions extends MatchingTask { |
|
|
|
/** |
|
|
|
* Set the source dir to find the files to be renamed. |
|
|
|
*/ |
|
|
|
public void setSrcDir(String srcDirName) { |
|
|
|
srcDir = project.resolveFile(srcDirName); |
|
|
|
public void setSrcDir(File srcDir) { |
|
|
|
this.srcDir = srcDir; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@@ -123,50 +127,35 @@ public class RenameExtensions extends MatchingTask { |
|
|
|
"attributes must be set!" ); |
|
|
|
} |
|
|
|
|
|
|
|
// scan source and dest dirs to build up rename list |
|
|
|
DirectoryScanner ds = getDirectoryScanner(srcDir); |
|
|
|
|
|
|
|
String[] files = ds.getIncludedFiles(); |
|
|
|
|
|
|
|
Hashtable renameList = scanDir(srcDir, files); |
|
|
|
|
|
|
|
Enumeration e = renameList.keys(); |
|
|
|
File fromFile = null; |
|
|
|
File toFile = null; |
|
|
|
while (e.hasMoreElements()) { |
|
|
|
fromFile = (File)e.nextElement(); |
|
|
|
toFile = (File)renameList.get(fromFile); |
|
|
|
if (toFile.exists() && replace) toFile.delete(); |
|
|
|
if (!fromFile.renameTo(toFile)) { |
|
|
|
throw new BuildException( "Rename from: '" + fromFile + "' to '" + |
|
|
|
toFile + "' failed." ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
private Hashtable scanDir(File srcDir, String[] files) { |
|
|
|
Hashtable list = new Hashtable(); |
|
|
|
for (int i = 0; i < files.length; i++) { |
|
|
|
File srcFile = new File(srcDir, files[i]); |
|
|
|
String filename = files[i]; |
|
|
|
// if it's a file that ends in the fromExtension, copy to the rename list |
|
|
|
if (filename.toLowerCase().endsWith(fromExtension)) { |
|
|
|
File destFile = |
|
|
|
new File( srcDir, |
|
|
|
filename.substring(0, filename.lastIndexOf(fromExtension)) + |
|
|
|
toExtension ); |
|
|
|
|
|
|
|
if (replace || !destFile.exists()) { |
|
|
|
list.put(srcFile, destFile); |
|
|
|
} else { |
|
|
|
log( "Rejecting file: '" + srcFile + "' for rename as " + |
|
|
|
"replace is false and file exists", Project.MSG_VERBOSE ); |
|
|
|
} |
|
|
|
} else { |
|
|
|
log( "File '"+ filename + "' doesn't match fromExtension: '" + |
|
|
|
fromExtension + "'", Project.MSG_VERBOSE ); |
|
|
|
} |
|
|
|
} |
|
|
|
return list; |
|
|
|
log("DEPRECATED - The renameext task is deprecated. Use move instead.", |
|
|
|
Project.MSG_WARN); |
|
|
|
log("Replace this with:", Project.MSG_INFO); |
|
|
|
log("<move todir=\""+srcDir+"\" overwrite=\""+replace+"\">", |
|
|
|
Project.MSG_INFO); |
|
|
|
log(" <fileset dir=\""+srcDir+"\" />", Project.MSG_INFO); |
|
|
|
log(" <mapper type=\"glob\"", Project.MSG_INFO); |
|
|
|
log(" from=\"*"+fromExtension+"\"", Project.MSG_INFO); |
|
|
|
log(" to=\"*"+toExtension+"\" />", Project.MSG_INFO); |
|
|
|
log("</move>", Project.MSG_INFO); |
|
|
|
log("using the same patterns on <fileset> as you\'ve used here", |
|
|
|
Project.MSG_INFO); |
|
|
|
|
|
|
|
Move move = (Move)project.createTask("move"); |
|
|
|
move.setOwningTarget(target); |
|
|
|
move.setTaskName(getTaskName()); |
|
|
|
move.setLocation(getLocation()); |
|
|
|
move.setTodir(srcDir); |
|
|
|
move.setOverwrite(replace); |
|
|
|
|
|
|
|
fileset.setDir(srcDir); |
|
|
|
move.addFileset(fileset); |
|
|
|
|
|
|
|
Mapper me = move.createMapper(); |
|
|
|
me.setType(globType); |
|
|
|
me.setFrom("*"+fromExtension); |
|
|
|
me.setTo("*"+toExtension); |
|
|
|
|
|
|
|
move.execute(); |
|
|
|
} |
|
|
|
|
|
|
|
} |