diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java index cc656e25c40cf644b29dd61736565dc81ef9feee..deaf92fdb34b3fc08cbac25e1843157ce4df477c 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java @@ -183,9 +183,7 @@ public final class DBMigrationEngine || Integer.parseInt(fullTextSearchDocumentVersion) > ftsDocumentVersionFromFile)) { operationLog.info("Applying full text search scripts..."); - adminDAO.applyFullTextSearchScripts( - scriptProvider.getFullTextSearchScriptsFolder(fullTextSearchDocumentVersion), - fullTextSearchDocumentVersion); + adminDAO.applyFullTextSearchScripts(scriptProvider, fullTextSearchDocumentVersion); operationLog.info("Full text search scripts applied."); operationLog.info(String.format("Writing new version to file %s.", file.getAbsolutePath())); writeVersionToFile(file, fullTextSearchDocumentVersion); diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java index 4f8b15942b8423b3cb482bf1f16bcd1658f8b34c..9b6a9e0eb1ceab5b8b7269460fe3599175ecec4c 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/IDatabaseAdminDAO.java @@ -69,10 +69,10 @@ public interface IDatabaseAdminDAO /** * Applies scripts for full text search. * - * @param dumpFolder folder with full text search document SQL scripts. + * @param scriptProvider script provider. * @param version version of scripts. */ - void applyFullTextSearchScripts(File dumpFolder, String version); + void applyFullTextSearchScripts(ISqlScriptProvider scriptProvider, String version); /** * Drops the database. diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptProvider.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptProvider.java index 536607cb08c4873211cef64df37a295e9dc5043e..74ab991c1172a74e396ca53ac5be450519be41e4 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptProvider.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/ISqlScriptProvider.java @@ -107,4 +107,12 @@ public interface ISqlScriptProvider */ public Script tryGetFunctionMigrationScript(String fromVersion, String toVersion); + /** + * Returns the triple of scripts for full text search. + * + * @param version full text search script version. + * @return array with 3 scripts to be called in sequence. + */ + Script[] tryGetFullTextSearchScripts(String version); + } diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java index 8032ede4ccbbd8718775691217e7eecf2e203538..6cacd60beadddd7d2b02b40350c68423ac9d85f9 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/SqlScriptProvider.java @@ -207,6 +207,18 @@ public class SqlScriptProvider implements ISqlScriptProvider return tryLoadScript(scriptName, toVersion, "migration"); } + @Override + public Script[] tryGetFullTextSearchScripts(final String version) + { + final String prefix = "full-text-search/" + version; + return new Script[] + { + tryLoadScript("full-text-search-before-" + version + SQL_FILE_TYPE, version, prefix), + tryLoadScript("full-text-search-" + version + SQL_FILE_TYPE, version, prefix), + tryLoadScript("full-text-search-after-" + version + SQL_FILE_TYPE, version, prefix) + }; + } + private Script tryLoadScript(final String scriptName, final String scriptVersion) { return tryLoadScript(scriptName, scriptVersion, scriptVersion); diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java index c64e7d6aa4cbb11d08bf8409ba439136ae8cd87a..7bea8d49788f902876dc73efed035fa80b526c9a 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/h2/H2AdminDAO.java @@ -25,6 +25,7 @@ import java.util.regex.Pattern; import javax.sql.DataSource; +import ch.systemsx.cisd.dbmigration.*; import org.apache.log4j.Logger; import org.h2.tools.DeleteDbFiles; import org.springframework.jdbc.support.SQLErrorCodesFactory; @@ -36,11 +37,6 @@ import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.dbmigration.AbstractDatabaseAdminDAO; -import ch.systemsx.cisd.dbmigration.DatabaseVersionLogDAO; -import ch.systemsx.cisd.dbmigration.IDatabaseAdminDAO; -import ch.systemsx.cisd.dbmigration.IMassUploader; -import ch.systemsx.cisd.dbmigration.MassUploadFileType; /** * Implementation of {@link IDatabaseAdminDAO} for H2. @@ -161,7 +157,7 @@ public class H2AdminDAO extends AbstractDatabaseAdminDAO } @Override - public void applyFullTextSearchScripts(final File dumpFolder, final String version) + public void applyFullTextSearchScripts(final ISqlScriptProvider scriptProvider, final String version) { // No implementation. } diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/postgresql/PostgreSQLAdminDAO.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/postgresql/PostgreSQLAdminDAO.java index edc45b59d725594be91788dc1d3fb71a103e89ed..c93f54c6cfa0f668f5308f811b359dff6023bf32 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/postgresql/PostgreSQLAdminDAO.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/postgresql/PostgreSQLAdminDAO.java @@ -22,6 +22,7 @@ import java.util.Arrays; import javax.sql.DataSource; +import ch.systemsx.cisd.dbmigration.*; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.dao.DataAccessException; @@ -33,12 +34,6 @@ import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException; import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.dbmigration.AbstractDatabaseAdminDAO; -import ch.systemsx.cisd.dbmigration.DBUtilities; -import ch.systemsx.cisd.dbmigration.DatabaseVersionLogDAO; -import ch.systemsx.cisd.dbmigration.IDatabaseAdminDAO; -import ch.systemsx.cisd.dbmigration.IMassUploader; -import ch.systemsx.cisd.dbmigration.MassUploadFileType; /** * Implementation of {@link IDatabaseAdminDAO} for PostgreSQL. @@ -264,11 +259,13 @@ public class PostgreSQLAdminDAO extends AbstractDatabaseAdminDAO } @Override - public void applyFullTextSearchScripts(final File dumpFolder, final String version) + public void applyFullTextSearchScripts(final ISqlScriptProvider scriptProvider, final String version) { - final Script beforeScript = tryLoadScript(dumpFolder, "full-text-search-before", version); - final Script mainScript = tryLoadScript(dumpFolder, "full-text-search", version); - final Script afterScript = tryLoadScript(dumpFolder, "full-text-search-after", version); + final Script[] scripts = scriptProvider.tryGetFullTextSearchScripts(version); + + final Script beforeScript = scripts[0]; + final Script mainScript = scripts[1]; + final Script afterScript = scripts[2]; operationLog.info("Executing full text search preparation script..."); scriptExecutor.execute(beforeScript, false, null);