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