Author: assaf
Date: Wed May  2 17:50:23 2007
New Revision: 534668

URL: http://svn.apache.org/viewvc?view=rev&rev=534668
Log:
Fixed Derby task to use AntWrap.

Modified:
    incubator/ode/trunk/tasks/derby.rake

Modified: incubator/ode/trunk/tasks/derby.rake
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/tasks/derby.rake?view=diff&rev=534668&r1=534667&r2=534668
==============================================================================
--- incubator/ode/trunk/tasks/derby.rake (original)
+++ incubator/ode/trunk/tasks/derby.rake Wed May  2 17:50:23 2007
@@ -4,6 +4,8 @@
 
   REQUIRES = Buildr.group("derby", "derbytools", :under=>"org.apache.derby", 
:version=>"10.1.2.1")
 
+  Java.rjb.onload { Java.rjb.classpath << REQUIRES  }
+
   class << self
 
     # Returns a task that will create a new Derby database. The task name is 
the path to
@@ -13,24 +15,16 @@
     #   Derby.create "mydb"=>derby.sql
     def create(args)
       db, prereqs = Rake.application.resolve_args(args)
-      # Copy the SQL files into the database directory.
       file(File.expand_path(db)=>prereqs) do |task|
-        cmd = [ Java.path_to_bin('java'), "-cp", requires, 
"org.apache.derby.tools.ij" ]
-        Open3.popen3(*cmd) do |stdin, stdout, stderr|
-          # Shutdown so if a database already exists, we can remove it.
-          stdin.puts "connect 'jdbc:derby:;shutdown=true';"
-          rm_rf task.name if File.exist?(task.name)
-          # Create a new database, and load all the prerequisites.
-          stdin.puts "connect 'jdbc:derby:#{task.to_s};create=true;user=sa'"
-          stdin.puts "set schema sa"
-          stdin.puts "autocommit on;"
-          task.prerequisites.each { |prereq| stdin.write 
File.read(prereq.to_s) }
-          # Exiting will shutdown the database so we can copy the files around.
-          stdin.puts "exit"
-          stdin.close
-          # Helps when dignosing SQL errors.
-          stdout.read.tap { |output| puts output if 
Rake.application.options.trace }
+        rm_rf task.name if File.exist?(task.name)
+        Ant.executable("derby") do |ant|
+          sqls = task.prerequisites.map(&:to_s)
+          ant.sql :driver=>"org.apache.derby.jdbc.EmbeddedDriver", 
:url=>"jdbc:derby:#{task.to_s};create=true",
+            :userid=>"sa", :password=>"", :autocommit=>"on" do
+            sqls.each { |sql| transaction :src=>sql }
+          end
         end
+        # Copy the SQL files into the database directory.
         Buildr.filter(prereqs).into(task.name).run
         touch task.name, :verbose=>false
       end


Reply via email to