That was a nice one! That one should definitely exist as well - if it does not already exist (?) maybe I'll implement that if time permits.

Regarding getting it into antcontrib instead - that was my intention from the beginning, guess I chose the wrong mailing list? Apologies...

/Martin


jan.mate...@rzf.fin-nrw.de wrote:
Ok, but these property names are fixed. What about
  <property name="dir" value="someValue"/>
  <iterate ...>

The file informations could also retrieved via <basename> and <dirname>. Together with <antcontrib:var 
name="..." unset="true"/> these properties could be eliminated during each loop.

Your task is more comfortable to use if you need the file information. But I think it should be 
more generic and support resource collections. Maybe only file resources. The use of a 
<sequential> container is also more performant than reusing <ant> or <antcall>.
    <iterate>
        <!-- Resource Collection to iterate -->
        <path ... />
        <!-- Use java.io.File methods -->
        <param name="parent" method="getParent()"/>
        <param name="name" method="getName()"/>
        <!-- Use org.apache.tools.ant.types.resources.FileResource -->
        <param name="size" method="getSize()"/>
        <sequential>
            <echo>
                The size of file '@{name}' in directory '@{parent}' is @{size} 
Bytes.
            </echo>
        <sequential>
    </iterate>


http://svn.apache.org/repos/asf/ant/core/trunk/src/main/org/apache/tools/ant/types/resources/FileResource.java
http://svn.apache.org/repos/asf/ant/core/trunk/src/main/org/apache/tools/ant/types/resources/FileProvider.java



Jan

-----Ursprüngliche Nachricht-----
Von: Martin Holst Swende [mailto:martin.holst_swe...@msc.se] Gesendet: Donnerstag, 18. Dezember 2008 12:45
An: Ant Developers List
Betreff: Re: AW: New iterating task

Yes, it does.

However, the foreach-task, to my understanding, cannot as easily be used in the examples I provided, since it does not provide parametrized file-information (basedir, path, name and extension). Otherwise, it is very similar.

/Martin

jan.mate...@rzf.fin-nrw.de wrote:
Sound very like <antcontrib:foreach> ...

Jan
-----Ursprüngliche Nachricht-----
Von: Martin Holst Swende [mailto:martin.holst_swe...@msc.se] Gesendet: Donnerstag, 18. Dezember 2008 10:16
An: Ant Developers List
Betreff: New iterating task

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


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org

--
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



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



--
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

Reply via email to