How about you create a new sql file that calls the rest of your Sqls , and just 
here is your simple ant target: 
 <sql
    driver="org.database.jdbcDriver"
    url="jdbc:database-url"
    userid="sa"
    password="pass"
    src="xxx.sql"/>

That is how my code works. 


-c 


-----Original Message-----
From: John Shott [mailto:[EMAIL PROTECTED]
Sent: Tuesday, February 26, 2008 1:32 PM
To: Ant Users List
Subject: Re: SQL task and resource collections ...


Steve:

Thanks for your informative response and your suspicion that I may have 
a problem with the size() of my fileset.

Since I can't seem to find a simple method of trying to test the size of 
my fileset, in advance of my call of the sql task, I've now tried to 
modify my target to first create a fileset, then created a property 
based on a pathcovert of that fileset, and then tried to run the sql 
task based on a test of that property.  While this looks a little ugly 
and kludgey, it was the only way (I thought) to make sure that I was 
guaranteed to not run the sql task if the fileset was empty.

My current target that includes the sql task now looks like:

<!-- build.xml snippet starts here -->

  <target name="loadStoredProcedures">
    <basename property="this.user" file="${this.dir}"/>
    <echo message="Loading stored procedures from ${this.dir}."/>
    <fileset dir="${this.dir}" id="this.fileset">
      <include name="*.sql"/>
      <modified>
        <param name="cache.cachefile" value="config/.sql${sfx}.properties"/>
      </modified>
    </fileset>
    <!-- The following path convert is a trick to simply set a property -->
    <!-- named ${new.files} only if there are any files to be processed -->
    <!-- in refid="this.fileset". -->
    <pathconvert property="new.files" refid="this.fileset"
      setonempty="false" targetos="unix"/>
    <if> <isset property="new.files"/>
      <then>
        <echo message="Property new.files is set to ${new.files}."/>
        <sql driver="${jdbc_driver_class}" url="${jdbc_url}"
          userid="${this.user}" password="${coral.db.password}"
          keepformat="true" delimiter="/" escapeprocessing="false" 
print="true"
          onerror="continue">
          <fileset refid="this.fileset"/>
          <classpath>
            <pathelement location="${build.dir}/ext/${jdbc.jar}"/>
          </classpath>
        </sql>
     </then>
   </if>
  </target>

<!-- build.xml snippet ends here -->

I still believe that I am still seeing a failure during the sql task and 
have included what I believe to be the relevant results of the call 'ant 
-debug loadStoredProcedures 2>&1 | tee sql_debug.log'

Apache Ant version 1.7.0 compiled on December 13 2006
Buildfile: build.xml
Adding reference: ant.PropertyHelper
Detected Java version: 1.5 in: /usr/java/jdk1.5.0_14/jre
Detected OS: Linux
Finding class net.sf.antcontrib.logic.IfTask
Loaded from /opencoral/ext/ant/ant-contrib-0.6.jar 
net/sf/antcontrib/logic/IfTask
.class
Class org.apache.tools.ant.taskdefs.condition.ConditionBase loaded from 
parent lo
ader (parentFirst)
Class net.sf.antcontrib.logic.IfTask loaded from ant loader (parentFirst)
Finding class net.sf.antcontrib.logic.IfTask$ElseIf
Loaded from /opencoral/ext/ant/ant-contrib-0.6.jar 
net/sf/antcontrib/logic/IfTask
$ElseIf.class
Class net.sf.antcontrib.logic.IfTask$ElseIf loaded from ant loader 
(parentFirst)
 +Datatype if net.sf.antcontrib.logic.IfTask

loadStoredProcedures:
Setting project property: this.user -> accmgr
     [echo] Loading stored procedures from 
/opencoral/build-rhel4/sql/storedProce
dures/accmgr.
Adding reference: this.fileset
fileset: Setup scanner in dir 
/opencoral/build-rhel4/sql/storedProcedures/accmgr
with patternSet{ includes: [*.sql] excludes: [] }
[pathconvert] Set property new.files = 
/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/accounting_summary_source.sql:/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/load_rates_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr
/raw_accounting_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr/usa
ge_summary_source.sql
Setting project property: new.files -> 
/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/accounting_summary_source.sql:/opencoral/build-rhel4/sql/storedProcedure
s/accmgr/load_rates_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr
/raw_accounting_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr/usa
ge_summary_source.sql
     [echo] Property new.files is set to 
/opencoral/build-rhel4/sql/storedProcedu
res/accmgr/accounting_summary_source.sql:/opencoral/build-rhel4/sql/storedProcedu
res/accmgr/load_rates_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accm
gr/raw_accounting_source.sql:/opencoral/build-rhel4/sql/storedProcedures/accmgr/u
sage_summary_source.sql.
fileset: Setup scanner in dir 
/opencoral/build-rhel4/sql/storedProcedures/accmgr
with patternSet{ includes: [*.sql] excludes: [] }
  [antcall] Exiting /opencoral/build.xml.

BUILD FAILED
/opencoral/build.xml:1571: The following error occurred while executing 
this line
:
/opencoral/build.xml:1594: Source file or resource collection, 
transactions or sq
l statement must be set!
        at 
org.apache.tools.ant.ProjectHelper.addLocationToBuildException(Project
Helper.java:541)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:418)
        at 
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at 
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
        at net.sf.antcontrib.logic.ForEach.executeSequential(Unknown Source)
        at net.sf.antcontrib.logic.ForEach.execute(Unknown Source)
        at 
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:357)
        at org.apache.tools.ant.Target.performTasks(Target.java:385)
        at 
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
        at 
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExec
utor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
        at org.apache.tools.ant.Main.runBuild(Main.java:698)
        at org.apache.tools.ant.Main.startAnt(Main.java:199)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Caused by: /opencoral/build.xml:1594: Source file or resource 
collection, transac
tions or sql statement must be set!
        at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:390)
        at 
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at 
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
        at net.sf.antcontrib.logic.IfTask.execute(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:134)
        at 
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:357)
        at org.apache.tools.ant.Target.performTasks(Target.java:385)
        at 
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
        at 
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleC
heckExecutor.java:38)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416)
        ... 26 more
--- Nested Exception ---
/opencoral/build.xml:1594: Source file or resource collection, 
transactions or sq
l statement must be set!
        at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:390)
        at 
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at 
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
        at net.sf.antcontrib.logic.IfTask.execute(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:134)
        at 
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:357)
        at org.apache.tools.ant.Target.performTasks(Target.java:385)
        at 
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
        at 
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleC
heckExecutor.java:38)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416)
        at 
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
ava:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at 
org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
        at net.sf.antcontrib.logic.ForEach.executeSequential(Unknown Source)
        at net.sf.antcontrib.logic.ForEach.execute(Unknown Source)
        at 
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
orImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java
:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:357)
        at org.apache.tools.ant.Target.performTasks(Target.java:385)
        at 
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
        at 
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExec
utor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
        at org.apache.tools.ant.Main.runBuild(Main.java:698)
        at org.apache.tools.ant.Main.startAnt(Main.java:199)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)

Total time: 5 seconds

So, it looks, based on my pathcovert ${new.files} property that it 
thinks that the fileset should contain 4 files.  But, I still seem to be 
generating an error when I try to load that fileset as a "refid" fileset.

Any insights or further tests .... or cleaner ways of testing for a 
non-empty fileset .... would be greatly appreciated.

Thanks,

John




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to