Index: src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java =================================================================== RCS file: /home/cvspublic/ant/src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java,v retrieving revision 1.6 diff -u -r1.6 Image.java --- src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java 19 Jul 2003 11:20:18 -0000 1.6 +++ src/main/org/apache/tools/ant/taskdefs/optional/image/Image.java 18 Sep 2003 11:38:57 -0000 @@ -56,6 +56,7 @@ import com.sun.media.jai.codec.FileSeekableStream; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.MatchingTask; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.optional.image.Draw; @@ -63,6 +64,9 @@ import org.apache.tools.ant.types.optional.image.Rotate; import org.apache.tools.ant.types.optional.image.Scale; import org.apache.tools.ant.types.optional.image.TransformOperation; +import org.apache.tools.ant.types.Mapper; +import org.apache.tools.ant.util.FileNameMapper; +import org.apache.tools.ant.util.IdentityMapper; import javax.media.jai.JAI; import javax.media.jai.PlanarImage; @@ -101,6 +105,23 @@ protected File srcDir = null; protected File destDir = null; + protected Mapper mapperElement = null; + + /** + * Defines the mapper to map source to destination files. + * @return a mapper to be configured + * @exception BuildException if more than one mapper is defined + */ + public Mapper createMapper() throws BuildException { + if (mapperElement != null) { + throw new BuildException("Cannot define more than one mapper", + getLocation()); + } + mapperElement = new Mapper(getProject()); + return mapperElement; + } + + /** * Adds a set of files to be deleted. */ @@ -197,58 +218,94 @@ * specified. * @param file The file to be processed */ - public void processFile(File file) { - try { - log("Processing File: " + file.getAbsolutePath()); - FileSeekableStream input = new FileSeekableStream(file); - PlanarImage image = JAI.create("stream", input); - for (int i = 0; i < instructions.size(); i++) { - Object instr = instructions.elementAt(i); - if (instr instanceof TransformOperation) { - image = ((TransformOperation) instr).executeTransformOperation(image); - } else { - log("Not a TransformOperation: " + instr); - } - } - input.close(); + public int processDir(final File srcDir, final String srcNames[], final File dstDir, final FileNameMapper mapper){ - if (str_encoding.toLowerCase().equals("jpg")) { - str_encoding = "JPEG"; - } else if (str_encoding.toLowerCase().equals("tif")) { - str_encoding = "TIFF"; - } + int writeCount = 0; - if (destDir == null) { - destDir = srcDir; - } + for(int i=0; i0){ + log("Processed " + writeCount + (writeCount==1?" image.":" images.")); } - } catch (Exception err) { err.printStackTrace(); throw new BuildException(err.getMessage()); @@ -332,8 +379,14 @@ throw new BuildException("Specify the destDir, or the srcDir."); } + // ensure encoding is sensible + str_encoding = str_encoding.toUpperCase(); + if (str_encoding.equals("JPG")) { + str_encoding = "JPEG"; + } else if (str_encoding.equals("TIF")) { + str_encoding = "TIFF"; + } } -} - +} \ No newline at end of file Index: src/testcases/org/apache/tools/ant/taskdefs/optional/image/ImageTest.java =================================================================== RCS file: /home/cvspublic/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/image/ImageTest.java,v retrieving revision 1.4 diff -u -r1.4 ImageTest.java --- src/testcases/org/apache/tools/ant/taskdefs/optional/image/ImageTest.java 25 Jun 2003 11:11:52 -0000 1.4 +++ src/testcases/org/apache/tools/ant/taskdefs/optional/image/ImageTest.java 18 Sep 2003 11:39:00 -0000 @@ -92,11 +92,11 @@ } public void testEchoToLog() { - expectLogContaining("testEchoToLog", "Processing File"); + expectLogContaining("testEchoToLog", "Writing File:"); } public void testSimpleScale(){ - expectLogContaining("testSimpleScale", "Processing File"); + expectLogContaining("testSimpleScale", "Writing File:"); File f = createRelativeFile( "/dest/" + LARGEIMAGE ); assertTrue( "Did not create "+f.getAbsolutePath(), @@ -105,7 +105,7 @@ } public void testOverwriteTrue() { - expectLogContaining("testSimpleScale", "Processing File"); + expectLogContaining("testSimpleScale", "Writing File:"); File f = createRelativeFile( "/dest/" + LARGEIMAGE ); long lastModified = f.lastModified(); if (Os.isFamily("dos")) { @@ -114,17 +114,17 @@ } catch (InterruptedException e) {} } - expectLogContaining("testOverwriteTrue", "Processing File"); + expectLogContaining("testOverwriteTrue", "Writing File:"); f = createRelativeFile( "/dest/" + LARGEIMAGE ); long overwrittenLastModified = f.lastModified(); assertTrue("File was not overwritten.",lastModified < overwrittenLastModified); } public void testOverwriteFalse() { - expectLogContaining("testSimpleScale", "Processing File"); + expectLogContaining("testSimpleScale", "Writing File:"); File f = createRelativeFile( "/dest/" + LARGEIMAGE ); long lastModified = f.lastModified(); - expectLogContaining("testOverwriteFalse", "Processing File"); + expectLogContaining("testOverwriteFalse", "Writing File:"); f = createRelativeFile( "/dest/" + LARGEIMAGE ); long overwrittenLastModified = f.lastModified(); assertTrue("File was overwritten.",lastModified == overwrittenLastModified); @@ -139,7 +139,6 @@ assertTrue("Run time exception should say 'Unable to process image stream'. :" + re.toString(),re.toString().indexOf("Unable to process image stream") > -1); } } - protected File createRelativeFile( String filename ) {