Programmatically create a fileset and reference

View: New views
13 Messages — Rating Filter:   Alert me  

Programmatically create a fileset and reference

by Jeremy Weber :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi All,

I have created dozen of custom tasks before, but find myself struggling
with this one. I wish to create a task that does the following:

1.  Accepts a file attribute to represent the absolute path of a file
contains comma separated absolute paths.
    a.  this file name will be read in, parsed and each file found will
be added to a fileset object, which in term is added to a resources object.
2.  Accepts a id property
    a.  this id will be the id of the resource created in step 1a.

So essentially I want...

    <csvtofileset file="csv.file.name" id="some.id.name">

I am unclear on how to add the fileset i create in my code to the
project.  Additionally I am unsure of how to assign this an 'id' that I
can reference elsewhere.  Basically what I want to be able to do is
create a collection of files on the fly which I can reference on the
fly.   Essentially in the following snippet, the resources element would
be replaced by my new task element

<project name="test" basedir="." default="test">

   <!-- old -->
    <resources id="fsd">
         <fileset file="c:\temp\db2_test\db2jcc.jar" />  
         <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />  
     </resources>
    <!-- old -->

    <!-- new -->
           <csvtofileset file="csv.file.name" id="fsd">
    <!-- new -->

   <target name="test">
          <copy toDir="c:\temp\ failonerror="true">
             <resources refid="fsd"/>
          </copy>
   </target>
</project>


Any help at all would be appreciated.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Scot P. Floess :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Have you considered using a macrodef and elements?

Maybe something like:

<macrodef name="my-macro">
   <attribute name="id"/>
    <element name="includes"/>
   
    <sequential>
       <path id="@{id}">
          <includes/>
       </path>
    </sequential>
</macrodef>

Then you can supply whatever you want in <includes> as long as it
adheres to <path> allowances....

Jeremy Weber wrote:

> Hi All,
>
> I have created dozen of custom tasks before, but find myself
> struggling with this one. I wish to create a task that does the
> following:
>
> 1.  Accepts a file attribute to represent the absolute path of a file
> contains comma separated absolute paths.
>    a.  this file name will be read in, parsed and each file found will
> be added to a fileset object, which in term is added to a resources
> object.
> 2.  Accepts a id property
>    a.  this id will be the id of the resource created in step 1a.
>
> So essentially I want...
>
>    <csvtofileset file="csv.file.name" id="some.id.name">
>
> I am unclear on how to add the fileset i create in my code to the
> project.  Additionally I am unsure of how to assign this an 'id' that
> I can reference elsewhere.  Basically what I want to be able to do is
> create a collection of files on the fly which I can reference on the
> fly.   Essentially in the following snippet, the resources element
> would be replaced by my new task element
>
> <project name="test" basedir="." default="test">
>
>   <!-- old -->
>    <resources id="fsd">
>         <fileset file="c:\temp\db2_test\db2jcc.jar" />          
> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />      
> </resources>
>    <!-- old -->
>
>    <!-- new -->
>           <csvtofileset file="csv.file.name" id="fsd">
>    <!-- new -->
>
>   <target name="test">
>          <copy toDir="c:\temp\ failonerror="true">
>             <resources refid="fsd"/>
>          </copy>
>   </target>
> </project>
>
>
> Any help at all would be appreciated.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@...
> For additional commands, e-mail: user-help@...
>
>

--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Jeremy Weber-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Not sure that accomplishes what I need to do.  The problem I wish to
solve is this:

I have a property that equates to this:

<property name="jdbc.jar" value="C:\Documents and
Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>

The value of this property is variable.

I then have a couple of tasks that perform the following:

     <!-- use filelist to copy the files to a temp dir so we can build a
fileset -->
      <copy toDir=".tmp_cp" overwrite="true"  failonerror="false">
         <filelist files="${jdbc.jar}" />
         <flattenmapper/>
      </copy>

    <!-- create a referencable path object to be used in sql task -->
      <path id="sql.cp">
         <fileset dir=".tmp_cp"/>
      </path>*
*
This all works great (although not so straight forward), until there is
a space in one of the paths in jdbc.jar property.  If you have another
approach I'd be willing to try but I dont think your suggest will work
for this.
*


*

Scot P. Floess wrote:

> Have you considered using a macrodef and elements?
>
> Maybe something like:
>
> <macrodef name="my-macro">
>   <attribute name="id"/>
>    <element name="includes"/>
>      <sequential>
>       <path id="@{id}">
>          <includes/>
>       </path>
>    </sequential>
> </macrodef>
>
> Then you can supply whatever you want in <includes> as long as it
> adheres to <path> allowances....
>
> Jeremy Weber wrote:
>> Hi All,
>>
>> I have created dozen of custom tasks before, but find myself
>> struggling with this one. I wish to create a task that does the
>> following:
>>
>> 1.  Accepts a file attribute to represent the absolute path of a file
>> contains comma separated absolute paths.
>>    a.  this file name will be read in, parsed and each file found
>> will be added to a fileset object, which in term is added to a
>> resources object.
>> 2.  Accepts a id property
>>    a.  this id will be the id of the resource created in step 1a.
>>
>> So essentially I want...
>>
>>    <csvtofileset file="csv.file.name" id="some.id.name">
>>
>> I am unclear on how to add the fileset i create in my code to the
>> project.  Additionally I am unsure of how to assign this an 'id' that
>> I can reference elsewhere.  Basically what I want to be able to do is
>> create a collection of files on the fly which I can reference on the
>> fly.   Essentially in the following snippet, the resources element
>> would be replaced by my new task element
>>
>> <project name="test" basedir="." default="test">
>>
>>   <!-- old -->
>>    <resources id="fsd">
>>         <fileset file="c:\temp\db2_test\db2jcc.jar" />          
>> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />      
>> </resources>
>>    <!-- old -->
>>
>>    <!-- new -->
>>           <csvtofileset file="csv.file.name" id="fsd">
>>    <!-- new -->
>>
>>   <target name="test">
>>          <copy toDir="c:\temp\ failonerror="true">
>>             <resources refid="fsd"/>
>>          </copy>
>>   </target>
>> </project>
>>
>>
>> Any help at all would be appreciated.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@...
>> For additional commands, e-mail: user-help@...
>>
>>
>

--
Jeremy Weber
Quality Assurance Manager
Active Endpoints, Inc.
(203)929-9400
jeremy.weber@...
http://www.active-endpoints.com
"Smart SOA Orchestration Powered by ActiveBPEL"


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Scot P. Floess :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

OK I think I see the problem.  It breaks down due to the space?

Have you looked at Ant Contrib?

They have a <for> task that may help you.  It uses delimiters - in this
case you can define the delimiter as a comma.  You might also want to
define in a macrodef (sorry I am a huge huge fan of macrodefs)...

<macrodef name="copy-files" description = "Will copy files contained in
@{property} to dir @{to-dir} storing all the files in ref id @{id}">
    <attribute name="property"  description="Property that contains all
files to copy"/>
    <attribute name="id" description="Path id reference once files copied"/>
    <attribute name="to-dir" description="Directory to copy files"/>
    <attribute name="delim" default="," description = "Delimiter used in
@{property}"/>

    <sequence>
       <mkdir dir="@{to-dir}"/>

       <for list="${@{property}}" param="toCopy" delimiter="@{delim}">
          <sequential>
             <copy file = "@{toCopy}"  toDir="@{to-dir}"/>
          </sequential>
       </for>

       <path id="@{id}">
          <fileset dir="@{to-dir}"/>
       </path>
    </sequence>
</macrodef>

Keep in mind, I just whipped this out ;)

To use:

<property name="jdbc.jar" value="C:\Documents and
Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>

<copy-files property="jdbc.jar" id = "copied.files" to-dir =
"new-directory"/>

Note that property attribute simply lists the property name...not using
the dollar notation as that is taken care of in the <for> task via
${@{property}}

HTH,

Flossy


Jeremy Weber wrote:

> Not sure that accomplishes what I need to do.  The problem I wish to
> solve is this:
>
> I have a property that equates to this:
>
> <property name="jdbc.jar" value="C:\Documents and
> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>
> The value of this property is variable.
>
> I then have a couple of tasks that perform the following:
>
>     <!-- use filelist to copy the files to a temp dir so we can build
> a fileset -->
>      <copy toDir=".tmp_cp" overwrite="true"  failonerror="false">
>         <filelist files="${jdbc.jar}" />
>         <flattenmapper/>
>      </copy>
>
>    <!-- create a referencable path object to be used in sql task -->
>      <path id="sql.cp">
>         <fileset dir=".tmp_cp"/>
>      </path>*
> *
> This all works great (although not so straight forward), until there
> is a space in one of the paths in jdbc.jar property.  If you have
> another approach I'd be willing to try but I dont think your suggest
> will work for this.
> *
>
>
> *
>
> Scot P. Floess wrote:
>> Have you considered using a macrodef and elements?
>>
>> Maybe something like:
>>
>> <macrodef name="my-macro">
>>   <attribute name="id"/>
>>    <element name="includes"/>
>>      <sequential>
>>       <path id="@{id}">
>>          <includes/>
>>       </path>
>>    </sequential>
>> </macrodef>
>>
>> Then you can supply whatever you want in <includes> as long as it
>> adheres to <path> allowances....
>>
>> Jeremy Weber wrote:
>>> Hi All,
>>>
>>> I have created dozen of custom tasks before, but find myself
>>> struggling with this one. I wish to create a task that does the
>>> following:
>>>
>>> 1.  Accepts a file attribute to represent the absolute path of a
>>> file contains comma separated absolute paths.
>>>    a.  this file name will be read in, parsed and each file found
>>> will be added to a fileset object, which in term is added to a
>>> resources object.
>>> 2.  Accepts a id property
>>>    a.  this id will be the id of the resource created in step 1a.
>>>
>>> So essentially I want...
>>>
>>>    <csvtofileset file="csv.file.name" id="some.id.name">
>>>
>>> I am unclear on how to add the fileset i create in my code to the
>>> project.  Additionally I am unsure of how to assign this an 'id'
>>> that I can reference elsewhere.  Basically what I want to be able to
>>> do is create a collection of files on the fly which I can reference
>>> on the fly.   Essentially in the following snippet, the resources
>>> element would be replaced by my new task element
>>>
>>> <project name="test" basedir="." default="test">
>>>
>>>   <!-- old -->
>>>    <resources id="fsd">
>>>         <fileset file="c:\temp\db2_test\db2jcc.jar" />          
>>> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />      
>>> </resources>
>>>    <!-- old -->
>>>
>>>    <!-- new -->
>>>           <csvtofileset file="csv.file.name" id="fsd">
>>>    <!-- new -->
>>>
>>>   <target name="test">
>>>          <copy toDir="c:\temp\ failonerror="true">
>>>             <resources refid="fsd"/>
>>>          </copy>
>>>   </target>
>>> </project>
>>>
>>>
>>> Any help at all would be appreciated.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@...
>>> For additional commands, e-mail: user-help@...
>>>
>>>
>>
>

--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Jeremy Weber-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sure does, filelist accepts a set of files delimited by a space...  So
when a path has a space it doesnt behave.  Have used ant-contrib plenty
of times in the past, buts that not an option.  The kicker is this isnt
a normal ant environment, but actually all the build files, etc are in a
jar when they are executed.  Although I havent tried ant-contrib, this
environment causes problems with similiar tasks ant-call, ant, etc.

Scot P. Floess wrote:

> OK I think I see the problem.  It breaks down due to the space?
>
> Have you looked at Ant Contrib?
>
> They have a <for> task that may help you.  It uses delimiters - in
> this case you can define the delimiter as a comma.  You might also
> want to define in a macrodef (sorry I am a huge huge fan of macrodefs)...
>
> <macrodef name="copy-files" description = "Will copy files contained
> in @{property} to dir @{to-dir} storing all the files in ref id @{id}">
>    <attribute name="property"  description="Property that contains all
> files to copy"/>
>    <attribute name="id" description="Path id reference once files
> copied"/>
>    <attribute name="to-dir" description="Directory to copy files"/>
>    <attribute name="delim" default="," description = "Delimiter used
> in @{property}"/>
>
>    <sequence>
>       <mkdir dir="@{to-dir}"/>
>
>       <for list="${@{property}}" param="toCopy" delimiter="@{delim}">
>          <sequential>
>             <copy file = "@{toCopy}"  toDir="@{to-dir}"/>
>          </sequential>
>       </for>
>
>       <path id="@{id}">
>          <fileset dir="@{to-dir}"/>
>       </path>
>    </sequence>
> </macrodef>
>
> Keep in mind, I just whipped this out ;)
>
> To use:
>
> <property name="jdbc.jar" value="C:\Documents and
> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>
> <copy-files property="jdbc.jar" id = "copied.files" to-dir =
> "new-directory"/>
>
> Note that property attribute simply lists the property name...not
> using the dollar notation as that is taken care of in the <for> task
> via ${@{property}}
>
> HTH,
>
> Flossy
>
>
> Jeremy Weber wrote:
>> Not sure that accomplishes what I need to do.  The problem I wish to
>> solve is this:
>>
>> I have a property that equates to this:
>>
>> <property name="jdbc.jar" value="C:\Documents and
>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>
>> The value of this property is variable.
>>
>> I then have a couple of tasks that perform the following:
>>
>>     <!-- use filelist to copy the files to a temp dir so we can build
>> a fileset -->
>>      <copy toDir=".tmp_cp" overwrite="true"  failonerror="false">
>>         <filelist files="${jdbc.jar}" />
>>         <flattenmapper/>
>>      </copy>
>>
>>    <!-- create a referencable path object to be used in sql task -->
>>      <path id="sql.cp">
>>         <fileset dir=".tmp_cp"/>
>>      </path>*
>> *
>> This all works great (although not so straight forward), until there
>> is a space in one of the paths in jdbc.jar property.  If you have
>> another approach I'd be willing to try but I dont think your suggest
>> will work for this.
>> *
>>
>>
>> *
>>
>> Scot P. Floess wrote:
>>> Have you considered using a macrodef and elements?
>>>
>>> Maybe something like:
>>>
>>> <macrodef name="my-macro">
>>>   <attribute name="id"/>
>>>    <element name="includes"/>
>>>      <sequential>
>>>       <path id="@{id}">
>>>          <includes/>
>>>       </path>
>>>    </sequential>
>>> </macrodef>
>>>
>>> Then you can supply whatever you want in <includes> as long as it
>>> adheres to <path> allowances....
>>>
>>> Jeremy Weber wrote:
>>>> Hi All,
>>>>
>>>> I have created dozen of custom tasks before, but find myself
>>>> struggling with this one. I wish to create a task that does the
>>>> following:
>>>>
>>>> 1.  Accepts a file attribute to represent the absolute path of a
>>>> file contains comma separated absolute paths.
>>>>    a.  this file name will be read in, parsed and each file found
>>>> will be added to a fileset object, which in term is added to a
>>>> resources object.
>>>> 2.  Accepts a id property
>>>>    a.  this id will be the id of the resource created in step 1a.
>>>>
>>>> So essentially I want...
>>>>
>>>>    <csvtofileset file="csv.file.name" id="some.id.name">
>>>>
>>>> I am unclear on how to add the fileset i create in my code to the
>>>> project.  Additionally I am unsure of how to assign this an 'id'
>>>> that I can reference elsewhere.  Basically what I want to be able
>>>> to do is create a collection of files on the fly which I can
>>>> reference on the fly.   Essentially in the following snippet, the
>>>> resources element would be replaced by my new task element
>>>>
>>>> <project name="test" basedir="." default="test">
>>>>
>>>>   <!-- old -->
>>>>    <resources id="fsd">
>>>>         <fileset file="c:\temp\db2_test\db2jcc.jar" />          
>>>> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />      
>>>> </resources>
>>>>    <!-- old -->
>>>>
>>>>    <!-- new -->
>>>>           <csvtofileset file="csv.file.name" id="fsd">
>>>>    <!-- new -->
>>>>
>>>>   <target name="test">
>>>>          <copy toDir="c:\temp\ failonerror="true">
>>>>             <resources refid="fsd"/>
>>>>          </copy>
>>>>   </target>
>>>> </project>
>>>>
>>>>
>>>> Any help at all would be appreciated.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@...
>>>> For additional commands, e-mail: user-help@...
>>>>
>>>>
>>>
>>
>

--
Jeremy Weber
Quality Assurance Manager
Active Endpoints, Inc.
(203)929-9400
jeremy.weber@...
http://www.active-endpoints.com
"Smart SOA Orchestration Powered by ActiveBPEL"


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Scot P. Floess :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I see...

Have you considered using escape characters where the spaces are in the
property?

So, curious, you are using build.xml's in a jar file?

Or, do you extract from the jar file and then use those files?

Jeremy Weber wrote:

> Sure does, filelist accepts a set of files delimited by a space...  So
> when a path has a space it doesnt behave.  Have used ant-contrib
> plenty of times in the past, buts that not an option.  The kicker is
> this isnt a normal ant environment, but actually all the build files,
> etc are in a jar when they are executed.  Although I havent tried
> ant-contrib, this environment causes problems with similiar tasks
> ant-call, ant, etc.
>
> Scot P. Floess wrote:
>> OK I think I see the problem.  It breaks down due to the space?
>>
>> Have you looked at Ant Contrib?
>>
>> They have a <for> task that may help you.  It uses delimiters - in
>> this case you can define the delimiter as a comma.  You might also
>> want to define in a macrodef (sorry I am a huge huge fan of
>> macrodefs)...
>>
>> <macrodef name="copy-files" description = "Will copy files contained
>> in @{property} to dir @{to-dir} storing all the files in ref id @{id}">
>>    <attribute name="property"  description="Property that contains
>> all files to copy"/>
>>    <attribute name="id" description="Path id reference once files
>> copied"/>
>>    <attribute name="to-dir" description="Directory to copy files"/>
>>    <attribute name="delim" default="," description = "Delimiter used
>> in @{property}"/>
>>
>>    <sequence>
>>       <mkdir dir="@{to-dir}"/>
>>
>>       <for list="${@{property}}" param="toCopy" delimiter="@{delim}">
>>          <sequential>
>>             <copy file = "@{toCopy}"  toDir="@{to-dir}"/>
>>          </sequential>
>>       </for>
>>
>>       <path id="@{id}">
>>          <fileset dir="@{to-dir}"/>
>>       </path>
>>    </sequence>
>> </macrodef>
>>
>> Keep in mind, I just whipped this out ;)
>>
>> To use:
>>
>> <property name="jdbc.jar" value="C:\Documents and
>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>
>> <copy-files property="jdbc.jar" id = "copied.files" to-dir =
>> "new-directory"/>
>>
>> Note that property attribute simply lists the property name...not
>> using the dollar notation as that is taken care of in the <for> task
>> via ${@{property}}
>>
>> HTH,
>>
>> Flossy
>>
>>
>> Jeremy Weber wrote:
>>> Not sure that accomplishes what I need to do.  The problem I wish to
>>> solve is this:
>>>
>>> I have a property that equates to this:
>>>
>>> <property name="jdbc.jar" value="C:\Documents and
>>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>>
>>> The value of this property is variable.
>>>
>>> I then have a couple of tasks that perform the following:
>>>
>>>     <!-- use filelist to copy the files to a temp dir so we can
>>> build a fileset -->
>>>      <copy toDir=".tmp_cp" overwrite="true"  failonerror="false">
>>>         <filelist files="${jdbc.jar}" />
>>>         <flattenmapper/>
>>>      </copy>
>>>
>>>    <!-- create a referencable path object to be used in sql task -->
>>>      <path id="sql.cp">
>>>         <fileset dir=".tmp_cp"/>
>>>      </path>*
>>> *
>>> This all works great (although not so straight forward), until there
>>> is a space in one of the paths in jdbc.jar property.  If you have
>>> another approach I'd be willing to try but I dont think your suggest
>>> will work for this.
>>> *
>>>
>>>
>>> *
>>>
>>> Scot P. Floess wrote:
>>>> Have you considered using a macrodef and elements?
>>>>
>>>> Maybe something like:
>>>>
>>>> <macrodef name="my-macro">
>>>>   <attribute name="id"/>
>>>>    <element name="includes"/>
>>>>      <sequential>
>>>>       <path id="@{id}">
>>>>          <includes/>
>>>>       </path>
>>>>    </sequential>
>>>> </macrodef>
>>>>
>>>> Then you can supply whatever you want in <includes> as long as it
>>>> adheres to <path> allowances....
>>>>
>>>> Jeremy Weber wrote:
>>>>> Hi All,
>>>>>
>>>>> I have created dozen of custom tasks before, but find myself
>>>>> struggling with this one. I wish to create a task that does the
>>>>> following:
>>>>>
>>>>> 1.  Accepts a file attribute to represent the absolute path of a
>>>>> file contains comma separated absolute paths.
>>>>>    a.  this file name will be read in, parsed and each file found
>>>>> will be added to a fileset object, which in term is added to a
>>>>> resources object.
>>>>> 2.  Accepts a id property
>>>>>    a.  this id will be the id of the resource created in step 1a.
>>>>>
>>>>> So essentially I want...
>>>>>
>>>>>    <csvtofileset file="csv.file.name" id="some.id.name">
>>>>>
>>>>> I am unclear on how to add the fileset i create in my code to the
>>>>> project.  Additionally I am unsure of how to assign this an 'id'
>>>>> that I can reference elsewhere.  Basically what I want to be able
>>>>> to do is create a collection of files on the fly which I can
>>>>> reference on the fly.   Essentially in the following snippet, the
>>>>> resources element would be replaced by my new task element
>>>>>
>>>>> <project name="test" basedir="." default="test">
>>>>>
>>>>>   <!-- old -->
>>>>>    <resources id="fsd">
>>>>>         <fileset file="c:\temp\db2_test\db2jcc.jar" />          
>>>>> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />      
>>>>> </resources>
>>>>>    <!-- old -->
>>>>>
>>>>>    <!-- new -->
>>>>>           <csvtofileset file="csv.file.name" id="fsd">
>>>>>    <!-- new -->
>>>>>
>>>>>   <target name="test">
>>>>>          <copy toDir="c:\temp\ failonerror="true">
>>>>>             <resources refid="fsd"/>
>>>>>          </copy>
>>>>>   </target>
>>>>> </project>
>>>>>
>>>>>
>>>>> Any help at all would be appreciated.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-unsubscribe@...
>>>>> For additional commands, e-mail: user-help@...
>>>>>
>>>>>
>>>>
>>>
>>
>

--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Jeremy Weber-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I guess I could try convert the value of the property, but I'd rather not.

Yes, all build artifacts are actually in a jar file.  Its basically, a
customized version of http://antinstaller.sourceforge.net/.

I am still thinking that creating my own custom task would be helpful,
just cant figure out how to added a fileset to the project class.
 
Scot P. Floess wrote:

> I see...
>
> Have you considered using escape characters where the spaces are in
> the property?
>
> So, curious, you are using build.xml's in a jar file?
>
> Or, do you extract from the jar file and then use those files?
>
> Jeremy Weber wrote:
>> Sure does, filelist accepts a set of files delimited by a space...  
>> So when a path has a space it doesnt behave.  Have used ant-contrib
>> plenty of times in the past, buts that not an option.  The kicker is
>> this isnt a normal ant environment, but actually all the build files,
>> etc are in a jar when they are executed.  Although I havent tried
>> ant-contrib, this environment causes problems with similiar tasks
>> ant-call, ant, etc.
>>
>> Scot P. Floess wrote:
>>> OK I think I see the problem.  It breaks down due to the space?
>>>
>>> Have you looked at Ant Contrib?
>>>
>>> They have a <for> task that may help you.  It uses delimiters - in
>>> this case you can define the delimiter as a comma.  You might also
>>> want to define in a macrodef (sorry I am a huge huge fan of
>>> macrodefs)...
>>>
>>> <macrodef name="copy-files" description = "Will copy files contained
>>> in @{property} to dir @{to-dir} storing all the files in ref id @{id}">
>>>    <attribute name="property"  description="Property that contains
>>> all files to copy"/>
>>>    <attribute name="id" description="Path id reference once files
>>> copied"/>
>>>    <attribute name="to-dir" description="Directory to copy files"/>
>>>    <attribute name="delim" default="," description = "Delimiter used
>>> in @{property}"/>
>>>
>>>    <sequence>
>>>       <mkdir dir="@{to-dir}"/>
>>>
>>>       <for list="${@{property}}" param="toCopy" delimiter="@{delim}">
>>>          <sequential>
>>>             <copy file = "@{toCopy}"  toDir="@{to-dir}"/>
>>>          </sequential>
>>>       </for>
>>>
>>>       <path id="@{id}">
>>>          <fileset dir="@{to-dir}"/>
>>>       </path>
>>>    </sequence>
>>> </macrodef>
>>>
>>> Keep in mind, I just whipped this out ;)
>>>
>>> To use:
>>>
>>> <property name="jdbc.jar" value="C:\Documents and
>>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>>
>>> <copy-files property="jdbc.jar" id = "copied.files" to-dir =
>>> "new-directory"/>
>>>
>>> Note that property attribute simply lists the property name...not
>>> using the dollar notation as that is taken care of in the <for> task
>>> via ${@{property}}
>>>
>>> HTH,
>>>
>>> Flossy
>>>
>>>
>>> Jeremy Weber wrote:
>>>> Not sure that accomplishes what I need to do.  The problem I wish
>>>> to solve is this:
>>>>
>>>> I have a property that equates to this:
>>>>
>>>> <property name="jdbc.jar" value="C:\Documents and
>>>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>>>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>>>
>>>> The value of this property is variable.
>>>>
>>>> I then have a couple of tasks that perform the following:
>>>>
>>>>     <!-- use filelist to copy the files to a temp dir so we can
>>>> build a fileset -->
>>>>      <copy toDir=".tmp_cp" overwrite="true"  failonerror="false">
>>>>         <filelist files="${jdbc.jar}" />
>>>>         <flattenmapper/>
>>>>      </copy>
>>>>
>>>>    <!-- create a referencable path object to be used in sql task -->
>>>>      <path id="sql.cp">
>>>>         <fileset dir=".tmp_cp"/>
>>>>      </path>*
>>>> *
>>>> This all works great (although not so straight forward), until
>>>> there is a space in one of the paths in jdbc.jar property.  If you
>>>> have another approach I'd be willing to try but I dont think your
>>>> suggest will work for this.
>>>> *
>>>>
>>>>
>>>> *
>>>>
>>>> Scot P. Floess wrote:
>>>>> Have you considered using a macrodef and elements?
>>>>>
>>>>> Maybe something like:
>>>>>
>>>>> <macrodef name="my-macro">
>>>>>   <attribute name="id"/>
>>>>>    <element name="includes"/>
>>>>>      <sequential>
>>>>>       <path id="@{id}">
>>>>>          <includes/>
>>>>>       </path>
>>>>>    </sequential>
>>>>> </macrodef>
>>>>>
>>>>> Then you can supply whatever you want in <includes> as long as it
>>>>> adheres to <path> allowances....
>>>>>
>>>>> Jeremy Weber wrote:
>>>>>> Hi All,
>>>>>>
>>>>>> I have created dozen of custom tasks before, but find myself
>>>>>> struggling with this one. I wish to create a task that does the
>>>>>> following:
>>>>>>
>>>>>> 1.  Accepts a file attribute to represent the absolute path of a
>>>>>> file contains comma separated absolute paths.
>>>>>>    a.  this file name will be read in, parsed and each file found
>>>>>> will be added to a fileset object, which in term is added to a
>>>>>> resources object.
>>>>>> 2.  Accepts a id property
>>>>>>    a.  this id will be the id of the resource created in step 1a.
>>>>>>
>>>>>> So essentially I want...
>>>>>>
>>>>>>    <csvtofileset file="csv.file.name" id="some.id.name">
>>>>>>
>>>>>> I am unclear on how to add the fileset i create in my code to the
>>>>>> project.  Additionally I am unsure of how to assign this an 'id'
>>>>>> that I can reference elsewhere.  Basically what I want to be able
>>>>>> to do is create a collection of files on the fly which I can
>>>>>> reference on the fly.   Essentially in the following snippet, the
>>>>>> resources element would be replaced by my new task element
>>>>>>
>>>>>> <project name="test" basedir="." default="test">
>>>>>>
>>>>>>   <!-- old -->
>>>>>>    <resources id="fsd">
>>>>>>         <fileset file="c:\temp\db2_test\db2jcc.jar" />          
>>>>>> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />      
>>>>>> </resources>
>>>>>>    <!-- old -->
>>>>>>
>>>>>>    <!-- new -->
>>>>>>           <csvtofileset file="csv.file.name" id="fsd">
>>>>>>    <!-- new -->
>>>>>>
>>>>>>   <target name="test">
>>>>>>          <copy toDir="c:\temp\ failonerror="true">
>>>>>>             <resources refid="fsd"/>
>>>>>>          </copy>
>>>>>>   </target>
>>>>>> </project>
>>>>>>
>>>>>>
>>>>>> Any help at all would be appreciated.
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>>
>>>>>> To unsubscribe, e-mail: user-unsubscribe@...
>>>>>> For additional commands, e-mail: user-help@...
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

--
Jeremy Weber
Quality Assurance Manager
Active Endpoints, Inc.
(203)929-9400
jeremy.weber@...
http://www.active-endpoints.com
"Smart SOA Orchestration Powered by ActiveBPEL"


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Scot P. Floess :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I just (really quickly) looked at the link.  That's pretty darn cool.  I
hadn't heard of that project :)

So, are you unpacking the jar file first?

I thought Ant dealt with the Windows file system (and spaces)
correctly?  I don't run Windows at all so this is all an assumption on
my part ;)

Jeremy Weber wrote:

> I guess I could try convert the value of the property, but I'd rather
> not.
> Yes, all build artifacts are actually in a jar file.  Its basically, a
> customized version of http://antinstaller.sourceforge.net/.
> I am still thinking that creating my own custom task would be helpful,
> just cant figure out how to added a fileset to the project class.
>
> Scot P. Floess wrote:
>> I see...
>>
>> Have you considered using escape characters where the spaces are in
>> the property?
>>
>> So, curious, you are using build.xml's in a jar file?
>>
>> Or, do you extract from the jar file and then use those files?
>>
>> Jeremy Weber wrote:
>>> Sure does, filelist accepts a set of files delimited by a space...  
>>> So when a path has a space it doesnt behave.  Have used ant-contrib
>>> plenty of times in the past, buts that not an option.  The kicker is
>>> this isnt a normal ant environment, but actually all the build
>>> files, etc are in a jar when they are executed.  Although I havent
>>> tried ant-contrib, this environment causes problems with similiar
>>> tasks ant-call, ant, etc.
>>>
>>> Scot P. Floess wrote:
>>>> OK I think I see the problem.  It breaks down due to the space?
>>>>
>>>> Have you looked at Ant Contrib?
>>>>
>>>> They have a <for> task that may help you.  It uses delimiters - in
>>>> this case you can define the delimiter as a comma.  You might also
>>>> want to define in a macrodef (sorry I am a huge huge fan of
>>>> macrodefs)...
>>>>
>>>> <macrodef name="copy-files" description = "Will copy files
>>>> contained in @{property} to dir @{to-dir} storing all the files in
>>>> ref id @{id}">
>>>>    <attribute name="property"  description="Property that contains
>>>> all files to copy"/>
>>>>    <attribute name="id" description="Path id reference once files
>>>> copied"/>
>>>>    <attribute name="to-dir" description="Directory to copy files"/>
>>>>    <attribute name="delim" default="," description = "Delimiter
>>>> used in @{property}"/>
>>>>
>>>>    <sequence>
>>>>       <mkdir dir="@{to-dir}"/>
>>>>
>>>>       <for list="${@{property}}" param="toCopy" delimiter="@{delim}">
>>>>          <sequential>
>>>>             <copy file = "@{toCopy}"  toDir="@{to-dir}"/>
>>>>          </sequential>
>>>>       </for>
>>>>
>>>>       <path id="@{id}">
>>>>          <fileset dir="@{to-dir}"/>
>>>>       </path>
>>>>    </sequence>
>>>> </macrodef>
>>>>
>>>> Keep in mind, I just whipped this out ;)
>>>>
>>>> To use:
>>>>
>>>> <property name="jdbc.jar" value="C:\Documents and
>>>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>>>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>>>
>>>> <copy-files property="jdbc.jar" id = "copied.files" to-dir =
>>>> "new-directory"/>
>>>>
>>>> Note that property attribute simply lists the property name...not
>>>> using the dollar notation as that is taken care of in the <for>
>>>> task via ${@{property}}
>>>>
>>>> HTH,
>>>>
>>>> Flossy
>>>>
>>>>
>>>> Jeremy Weber wrote:
>>>>> Not sure that accomplishes what I need to do.  The problem I wish
>>>>> to solve is this:
>>>>>
>>>>> I have a property that equates to this:
>>>>>
>>>>> <property name="jdbc.jar" value="C:\Documents and
>>>>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>>>>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>>>>
>>>>> The value of this property is variable.
>>>>>
>>>>> I then have a couple of tasks that perform the following:
>>>>>
>>>>>     <!-- use filelist to copy the files to a temp dir so we can
>>>>> build a fileset -->
>>>>>      <copy toDir=".tmp_cp" overwrite="true"  failonerror="false">
>>>>>         <filelist files="${jdbc.jar}" />
>>>>>         <flattenmapper/>
>>>>>      </copy>
>>>>>
>>>>>    <!-- create a referencable path object to be used in sql task -->
>>>>>      <path id="sql.cp">
>>>>>         <fileset dir=".tmp_cp"/>
>>>>>      </path>*
>>>>> *
>>>>> This all works great (although not so straight forward), until
>>>>> there is a space in one of the paths in jdbc.jar property.  If you
>>>>> have another approach I'd be willing to try but I dont think your
>>>>> suggest will work for this.
>>>>> *
>>>>>
>>>>>
>>>>> *
>>>>>
>>>>> Scot P. Floess wrote:
>>>>>> Have you considered using a macrodef and elements?
>>>>>>
>>>>>> Maybe something like:
>>>>>>
>>>>>> <macrodef name="my-macro">
>>>>>>   <attribute name="id"/>
>>>>>>    <element name="includes"/>
>>>>>>      <sequential>
>>>>>>       <path id="@{id}">
>>>>>>          <includes/>
>>>>>>       </path>
>>>>>>    </sequential>
>>>>>> </macrodef>
>>>>>>
>>>>>> Then you can supply whatever you want in <includes> as long as it
>>>>>> adheres to <path> allowances....
>>>>>>
>>>>>> Jeremy Weber wrote:
>>>>>>> Hi All,
>>>>>>>
>>>>>>> I have created dozen of custom tasks before, but find myself
>>>>>>> struggling with this one. I wish to create a task that does the
>>>>>>> following:
>>>>>>>
>>>>>>> 1.  Accepts a file attribute to represent the absolute path of a
>>>>>>> file contains comma separated absolute paths.
>>>>>>>    a.  this file name will be read in, parsed and each file
>>>>>>> found will be added to a fileset object, which in term is added
>>>>>>> to a resources object.
>>>>>>> 2.  Accepts a id property
>>>>>>>    a.  this id will be the id of the resource created in step 1a.
>>>>>>>
>>>>>>> So essentially I want...
>>>>>>>
>>>>>>>    <csvtofileset file="csv.file.name" id="some.id.name">
>>>>>>>
>>>>>>> I am unclear on how to add the fileset i create in my code to
>>>>>>> the project.  Additionally I am unsure of how to assign this an
>>>>>>> 'id' that I can reference elsewhere.  Basically what I want to
>>>>>>> be able to do is create a collection of files on the fly which I
>>>>>>> can reference on the fly.   Essentially in the following
>>>>>>> snippet, the resources element would be replaced by my new task
>>>>>>> element
>>>>>>>
>>>>>>> <project name="test" basedir="." default="test">
>>>>>>>
>>>>>>>   <!-- old -->
>>>>>>>    <resources id="fsd">
>>>>>>>         <fileset file="c:\temp\db2_test\db2jcc.jar" />          
>>>>>>> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />      
>>>>>>> </resources>
>>>>>>>    <!-- old -->
>>>>>>>
>>>>>>>    <!-- new -->
>>>>>>>           <csvtofileset file="csv.file.name" id="fsd">
>>>>>>>    <!-- new -->
>>>>>>>
>>>>>>>   <target name="test">
>>>>>>>          <copy toDir="c:\temp\ failonerror="true">
>>>>>>>             <resources refid="fsd"/>
>>>>>>>          </copy>
>>>>>>>   </target>
>>>>>>> </project>
>>>>>>>
>>>>>>>
>>>>>>> Any help at all would be appreciated.
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>>
>>>>>>> To unsubscribe, e-mail: user-unsubscribe@...
>>>>>>> For additional commands, e-mail: user-help@...
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

--
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@...
For additional commands, e-mail: user-help@...


Re: Programmatically create a fileset and reference

by Jeremy Weber-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Yeah, I have tweaked it a bit to support some stuff it didnt out of the
box, it seems to work okay.  Everything stays in the jar file but its
executable.

I think they real problem is filelist, and that it delimits by spaces.  
Probably a bug there.  I am going to see if I can patch the filelist
class to accept a delimiter.

Scot P. Floess wrote:

> I just (really quickly) looked at the link.  That's pretty darn cool.  
> I hadn't heard of that project :)
>
> So, are you unpacking the jar file first?
>
> I thought Ant dealt with the Windows file system (and spaces)
> correctly?  I don't run Windows at all so this is all an assumption on
> my part ;)
>
> Jeremy Weber wrote:
>> I guess I could try convert the value of the property, but I'd rather
>> not.
>> Yes, all build artifacts are actually in a jar file.  Its basically,
>> a customized version of http://antinstaller.sourceforge.net/.
>> I am still thinking that creating my own custom task would be
>> helpful, just cant figure out how to added a fileset to the project
>> class.
>>
>> Scot P. Floess wrote:
>>> I see...
>>>
>>> Have you considered using escape characters where the spaces are in
>>> the property?
>>>
>>> So, curious, you are using build.xml's in a jar file?
>>>
>>> Or, do you extract from the jar file and then use those files?
>>>
>>> Jeremy Weber wrote:
>>>> Sure does, filelist accepts a set of files delimited by a space...  
>>>> So when a path has a space it doesnt behave.  Have used ant-contrib
>>>> plenty of times in the past, buts that not an option.  The kicker
>>>> is this isnt a normal ant environment, but actually all the build
>>>> files, etc are in a jar when they are executed.  Although I havent
>>>> tried ant-contrib, this environment causes problems with similiar
>>>> tasks ant-call, ant, etc.
>>>>
>>>> Scot P. Floess wrote:
>>>>> OK I think I see the problem.  It breaks down due to the space?
>>>>>
>>>>> Have you looked at Ant Contrib?
>>>>>
>>>>> They have a <for> task that may help you.  It uses delimiters - in
>>>>> this case you can define the delimiter as a comma.  You might also
>>>>> want to define in a macrodef (sorry I am a huge huge fan of
>>>>> macrodefs)...
>>>>>
>>>>> <macrodef name="copy-files" description = "Will copy files
>>>>> contained in @{property} to dir @{to-dir} storing all the files in
>>>>> ref id @{id}">
>>>>>    <attribute name="property"  description="Property that contains
>>>>> all files to copy"/>
>>>>>    <attribute name="id" description="Path id reference once files
>>>>> copied"/>
>>>>>    <attribute name="to-dir" description="Directory to copy files"/>
>>>>>    <attribute name="delim" default="," description = "Delimiter
>>>>> used in @{property}"/>
>>>>>
>>>>>    <sequence>
>>>>>       <mkdir dir="@{to-dir}"/>
>>>>>
>>>>>       <for list="${@{property}}" param="toCopy" delimiter="@{delim}">
>>>>>          <sequential>
>>>>>             <copy file = "@{toCopy}"  toDir="@{to-dir}"/>
>>>>>          </sequential>
>>>>>       </for>
>>>>>
>>>>>       <path id="@{id}">
>>>>>          <fileset dir="@{to-dir}"/>
>>>>>       </path>
>>>>>    </sequence>
>>>>> </macrodef>
>>>>>
>>>>> Keep in mind, I just whipped this out ;)
>>>>>
>>>>> To use:
>>>>>
>>>>> <property name="jdbc.jar" value="C:\Documents and
>>>>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and
>>>>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>>>>
>>>>> <copy-files property="jdbc.jar" id