Hi all,
I have a little utility-task that I wrote because I did not find any
better alternative - but maybe I missed something obvious. So I thought
I would contribute it, if there is any interest.
Anyway, it is a kind of file iterator meant to be used on tasks that are
not written to handle multiple files. Also a few other uses, such as
manipulating and/or preserve paths and filenames in the process . Here
is how I use it :
<taskdef resource="antutilstasks" classpath="jar/antutils.jar" />
<target name="testiterate">
<iterate target="myecho">
<fileset dir="." includes="**\*.java" />
<param name="test" value="Works fine" />
</iterate>
</target>
<target name="myecho">
<echo>
Dir : ${dir}
Path : ${path}
Filename:${filename}
Extension:${extension}
Extra-param: ${test}
</echo>
</target>
What it does is, for each entry in the fileset, it calls the target
(myecho), and sets these properties : dir, path, filename, extension and
any supplied extra parameters. It just lists files, so far.
The fully qualified path is created in this manner :
dir + path + filename + "." + extension
One way of using it is if I have a dir-structure, say a photoalbum,
where thumbnails have already been generated in the same structure. If I
want to copy all thumbnails, but keep their directory structure, normal
file-copy will not suffice (since it will copy all to same directory).
But I can do this :
<target name="copythumbs">
<iterate target="mycopy">
<fileset dir="photos" includes="**\*_thumb.jpeg" />
</iterate>
</target>
<target name="mycopy">
<copy file="${dir}${path}${filename}.${extension}"
todir="thumbs/${path}"/>
</target>
The todir will retain path, and copy files into e.g
"thumbs/2008/01/21/img01_thumb.jpg" .
And if I have a task that scales images, I could set it up like this :
<target name="createthumbs">
<iterate target="mythumbgenerator">
<fileset dir="photos" includes="**\*.jpeg" />
<param name="size" value="100x100" />
</iterate>
</target>
<target name="mythumbgenerator">
<rescale file="${dir}${path}${filename}.${extension}"
outfile="thumbs/${path}${filename}_thumb.${extension}" size="${size}"/>
</target>
This way, I can iterate a task not built for it (in this case "rescale")
and be pretty flexible with the input parameters to that task.
So, have I re-invented the wheel?
Regards,
Martin Holst Swende
--
Martin Holst Swende ................. MSC Konsult AB
tel: +46(0)70 9519098 ............... Vasagatan 52
martin.holst_swe...@msc.se .......... 111 20 Stockholm
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org