From 0cd9b069988544679bb507badf724aa55d12aea6 Mon Sep 17 00:00:00 2001
From: Viktor Kovtun <viktor.kovtun@id.ethz.ch>
Date: Tue, 15 Dec 2020 11:38:07 +0100
Subject: [PATCH] SSDM-10383 Trying to fix the file not found error when
 starting the server from openBIS installation.

---
 .../cisd/dbmigration/DBMigrationEngine.java     |  4 +---
 .../cisd/dbmigration/IDatabaseAdminDAO.java     |  4 ++--
 .../cisd/dbmigration/ISqlScriptProvider.java    |  8 ++++++++
 .../cisd/dbmigration/SqlScriptProvider.java     | 12 ++++++++++++
 .../cisd/dbmigration/h2/H2AdminDAO.java         |  8 ++------
 .../postgresql/PostgreSQLAdminDAO.java          | 17 +++++++----------
 6 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java
index cc656e25c40..deaf92fdb34 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 4f8b15942b8..9b6a9e0eb1c 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 536607cb08c..74ab991c117 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 8032ede4ccb..6cacd60bead 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 c64e7d6aa4c..7bea8d49788 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 edc45b59d72..c93f54c6cfa 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);
-- 
GitLab