From d6ee4e5dbc58fc888faa4dd97212fa708cb141ee Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 21 Jun 2007 08:05:44 +0000
Subject: [PATCH] LMS-34 createLog.sql moved from project lims to project
 dbmigration

SVN: 641
---
 dbmigration/build/build.xml                   |  8 ++++++
 .../DatabaseConfigurationContext.java         | 22 ++++++++++++++++
 .../cisd/dbmigration/SqlScriptProvider.java   | 25 ++++++++++++++-----
 .../dbmigration/SqlScriptExecutorTest.java    | 12 ++++++---
 4 files changed, 58 insertions(+), 9 deletions(-)

diff --git a/dbmigration/build/build.xml b/dbmigration/build/build.xml
index 081bd7b7b53..cf1abc74de4 100644
--- a/dbmigration/build/build.xml
+++ b/dbmigration/build/build.xml
@@ -1,5 +1,13 @@
 <project name="dbmigration" basedir="..">
 	<import file="../../build_resources/ant/build-common.xml" />
 	<project-classpath name="ecp" classes="${classes}" />
+  
+  <target name="compile"  depends="build-common.compile">
+    <copy todir="${classes}">
+      <fileset dir="${sources}">
+        <include name="**/*.sql"/> 
+      </fileset> 
+    </copy> 
+  </target>
 
 </project>
\ No newline at end of file
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java
index ff4ccc93243..fdae0a273ec 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DatabaseConfigurationContext.java
@@ -47,6 +47,8 @@ public class DatabaseConfigurationContext
     private String folderOfDataScripts;
 
     private String databaseKind;
+    
+    private String databaseType;
 
     private boolean createFromScratch;
 
@@ -313,6 +315,26 @@ public class DatabaseConfigurationContext
         this.databaseKind = databaseKind;
     }
 
+    /**
+     * Returns databaseType.
+     * 
+     * @return <code>null</code> when undefined.
+     */
+    public final String getDatabaseType()
+    {
+        return databaseType;
+    }
+
+    /**
+     * Sets databaseType.
+     * 
+     * @param databaseType New value. Can be <code>null</code>.
+     */
+    public final void setDatabaseType(String databaseType)
+    {
+        this.databaseType = databaseType;
+    }
+
     /**
      * Returns the folder which contains all SQL scripts.
      * 
diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java
index 07252b2a466..94234e42680 100644
--- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java
+++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java
@@ -40,18 +40,31 @@ public class SqlScriptProvider implements ISqlScriptProvider
     
     private final String schemaScriptFolder;
     private final String dataScriptFolder;
+    private final String internalScriptFolder;
     
     /**
-     * Creates an instance for the specified script folders. They are either resource folders or folders
-     * relative to the working directory.
-     *
+     * Creates an instance for the specified folders and database type. The database type specifies the resource folder
+     * relative to the package of this class where the scripts with method {@link #getScript(String)} are loaded.
+     */
+    public static ISqlScriptProvider create(String schemaScriptFolder, String dataScriptFolder, String databaseType)
+    {
+        String internalFolder = SqlScriptProvider.class.getPackage().getName().replace('.', '/') + "/" + databaseType;
+        return new SqlScriptProvider(schemaScriptFolder, dataScriptFolder, internalFolder);
+    }
+    
+    /**
+     * Creates an instance for the specified script folders. They are either resource folders or folders relative to the
+     * working directory.
+     * 
      * @param schemaScriptFolder Folder of schema and migration scripts.
      * @param dataScriptFolder Folder of data scripts.
+     * @param internalScriptFolder Folder for internal scripts.
      */
-    public SqlScriptProvider(String schemaScriptFolder, String dataScriptFolder)
+    SqlScriptProvider(String schemaScriptFolder, String dataScriptFolder, String internalScriptFolder)
     {
         this.schemaScriptFolder = schemaScriptFolder;
         this.dataScriptFolder = dataScriptFolder;
+        this.internalScriptFolder = internalScriptFolder;
     }
 
     /**
@@ -86,11 +99,11 @@ public class SqlScriptProvider implements ISqlScriptProvider
     }
 
     /**
-     * Returns the specified script relative to the schema script folder.
+     * Returns the specified script relative to the internal script folder.
      */
     public Script getScript(String scriptName)
     {
-        return loadScript(schemaScriptFolder, scriptName);
+        return loadScript(internalScriptFolder, scriptName);
     }
 
     private Script loadScript(String folder, String scriptName)
diff --git a/dbmigration/sourceTest/java/ch/systemsx/cisd/dbmigration/SqlScriptExecutorTest.java b/dbmigration/sourceTest/java/ch/systemsx/cisd/dbmigration/SqlScriptExecutorTest.java
index fff6cfb0cb7..15c5f47c2ef 100644
--- a/dbmigration/sourceTest/java/ch/systemsx/cisd/dbmigration/SqlScriptExecutorTest.java
+++ b/dbmigration/sourceTest/java/ch/systemsx/cisd/dbmigration/SqlScriptExecutorTest.java
@@ -37,8 +37,10 @@ public class SqlScriptExecutorTest
 {
     private static final String TEMPORARY_DATA_SCRIPT_FOLDER_NAME = "temporaryDataScriptFolder";
     private static final String TEMPORARY_SCHEMA_SCRIPT_FOLDER_NAME = "temporarySchemaScriptFolder";
+    private static final String TEMPORARY_INTERNAL_SCRIPT_FOLDER_NAME = "temporaryInternalScriptFolder";
     private static final File TEMP_SCHEMA_SCRIPT_FOLDER = new File(TEMPORARY_SCHEMA_SCRIPT_FOLDER_NAME);
     private static final File TEMP_DATA_SCRIPT_FOLDER = new File(TEMPORARY_DATA_SCRIPT_FOLDER_NAME);
+    private static final File TEMP_INTERNAL_SCRIPT_FOLDER = new File(TEMPORARY_INTERNAL_SCRIPT_FOLDER_NAME);
     private static final String MIGRATION = "migration";
     private static final String VERSION = "042";
     private static final String VERSION2 = "049";
@@ -49,7 +51,6 @@ public class SqlScriptExecutorTest
     public void setUpTestFiles() throws IOException
     {
         TEMP_SCHEMA_SCRIPT_FOLDER.mkdir();
-        write(new File(TEMP_SCHEMA_SCRIPT_FOLDER, "hello.script"), "hello world!");
         File schemaVersionFolder = new File(TEMP_SCHEMA_SCRIPT_FOLDER, VERSION);
         schemaVersionFolder.mkdir();
         write(new File(schemaVersionFolder, "schema-" + VERSION + ".sql"), "code: schema");
@@ -60,7 +61,11 @@ public class SqlScriptExecutorTest
         File dataVersionFolder = new File(TEMP_DATA_SCRIPT_FOLDER, VERSION);
         dataVersionFolder.mkdir();
         write(new File(dataVersionFolder, "data-" + VERSION + ".sql"), "code: data");
-        sqlScriptProvider = new SqlScriptProvider(TEMPORARY_SCHEMA_SCRIPT_FOLDER_NAME, TEMPORARY_DATA_SCRIPT_FOLDER_NAME);
+        TEMP_INTERNAL_SCRIPT_FOLDER.mkdir();
+        write(new File(TEMP_INTERNAL_SCRIPT_FOLDER, "hello.script"), "hello world!");
+        sqlScriptProvider = new SqlScriptProvider(TEMPORARY_SCHEMA_SCRIPT_FOLDER_NAME, 
+                                                  TEMPORARY_DATA_SCRIPT_FOLDER_NAME,
+                                                  TEMPORARY_INTERNAL_SCRIPT_FOLDER_NAME);
     }
 
     private void write(File file, String content) throws IOException
@@ -84,6 +89,7 @@ public class SqlScriptExecutorTest
     {
         delete(TEMP_SCHEMA_SCRIPT_FOLDER);
         delete(TEMP_DATA_SCRIPT_FOLDER);
+        delete(TEMP_INTERNAL_SCRIPT_FOLDER);
     }
 
     private void delete(File file)
@@ -146,7 +152,7 @@ public class SqlScriptExecutorTest
     public void testGetScript()
     {
         Script script = sqlScriptProvider.getScript("hello.script");
-        assertEquals(TEMPORARY_SCHEMA_SCRIPT_FOLDER_NAME + "/hello.script", script.getName());
+        assertEquals(TEMPORARY_INTERNAL_SCRIPT_FOLDER_NAME + "/hello.script", script.getName());
         assertEquals("hello world!", script.getCode().trim());
     }
 
-- 
GitLab