You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by ar <ar...@free.fr> on 2006/02/20 17:41:35 UTC

Conditional antcall

Hi,

I'd like to access to a database, and, if it fails, create the database  
otherwise update it.
To access the database, I intend to use a sql task. If the sql request  
fails, I want to call the create-database target. If it successes, I want  
to call the update-database target.
Any idea on how to do this conditional call ?

Regards
-- 
A. ROY

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


Re: Conditional antcall

Posted by Ninju Bohra <ni...@yahoo.com>.
Within the constraints of default ANT components it may be a bit klugely (but then you're probably used doing ANT kluges :-)
 
A way that I found to get data into ANT from the database is to execute SQL whose result (when successful) looks like a standard JAVA property file.  I then use the <sql> task with the output property set to send the results to a temp file (also showheaders=false helps).  I execute the SQL (with onerror=continue) and then load the property file (via the <property file="..."> task)  
 
If the task executed properly, a property would have been loaded into the ANT property space.  I use that property in my if/unless checks.
 
In your case, the follow SQL will result in a property being set only if you are able to reach a table in the database:
 
    SELECT DISTINCT('found.database=true') from ANY_TABLE;
 
(note replace ANY_TABLE with the name of a table that you expect to be in the schema)
 
Now if you redirect the output to a file and load that file, you can now conditionally check the property ${found.database} to tell you whether the database is there or not...
 
Of course, at our project site we ended up modifying the <sql> task to support an onerrorproperty which allows us to have a property to be set if we ecounter an error while executing a SQL.
 
You can also use the <try>/<catch> task from the ant-contrib project to tell you that there was an error executing SQL.
Hope that makes sense,
 
Ninju
 



----- Original Message ----
From: ar <ar...@free.fr>
To: user@ant.apache.org
Sent: Monday, February 20, 2006 10:41:35 AM
Subject: Conditional antcall


Hi,

I'd like to access to a database, and, if it fails, create the database  
otherwise update it.
To access the database, I intend to use a sql task. If the sql request  
fails, I want to call the create-database target. If it successes, I want  
to call the update-database target.
Any idea on how to do this conditional call ?

Regards
-- 
A. ROY

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