You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2017/04/05 19:10:33 UTC

[09/50] [abbrv] airavata git commit: Fix: hardcoded db-script name, Add: utility method to get filename given a directory path for db-script

Fix: hardcoded db-script name, Add: utility method to get filename given a directory path for db-script


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/c48a8ff4
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/c48a8ff4
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/c48a8ff4

Branch: refs/heads/develop
Commit: c48a8ff490f80a3279f4df0577ee32c70ea05441
Parents: be2c940
Author: Gourav Shenoy <sh...@gmail.com>
Authored: Mon Apr 3 14:12:17 2017 -0400
Committer: Gourav Shenoy <sh...@gmail.com>
Committed: Mon Apr 3 14:12:17 2017 -0400

----------------------------------------------------------------------
 .../registry/api/service/RegistryAPIServer.java |  7 ++++
 .../api/service/util/DatabaseCreator.java       | 36 +++++++++++++++++---
 2 files changed, 38 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c48a8ff4/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/RegistryAPIServer.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/RegistryAPIServer.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/RegistryAPIServer.java
index 69cd7cd..991ace2 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/RegistryAPIServer.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/RegistryAPIServer.java
@@ -53,12 +53,19 @@ public class RegistryAPIServer implements IServer {
     public void StartRegistryServer(RegistryService.Processor<RegistryServerHandler> orchestratorServerHandlerProcessor)
             throws Exception {
         // creating experiment catalog db
+        logger.info("Initializing ExperimentCatalog DB");
         ExperimentCatalogInitUtil.initializeDB();
+
         // creating app catalog db
+        logger.info("Initializing AppCatalog DB");
         AppCatalogInitUtil.initializeDB();
+
         // creating workflow catalog db
+        logger.info("Initializing WorkflowCatalog DB");
         WorkflowCatalogInitUtil.initializeDB();
+
         // creating replica catalog db
+        logger.info("Initializing ReplicaCatalog DB");
         ReplicaCatalogInitUtil.initializeDB();
 
         final int serverPort = Integer.parseInt(ServerSettings.getSetting(Constants.REGISTRY_SERVER_PORT, "8960"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/c48a8ff4/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/DatabaseCreator.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/DatabaseCreator.java b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/DatabaseCreator.java
index 6d13904..2484ac7 100644
--- a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/DatabaseCreator.java
+++ b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/DatabaseCreator.java
@@ -29,6 +29,8 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.sql.*;
 import java.util.StringTokenizer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * This class creates the database tables required for airavata with default configuration this
@@ -264,11 +266,9 @@ public class DatabaseCreator {
             if(is == null) {
                 logger.info("Script file not found at " + dbscriptName + ". Uses default database script file");
                 DatabaseType databaseType = DatabaseCreator.getDatabaseType(conn);
-                if(databaseType.equals(DatabaseType.derby)){
-                    is = DatabaseCreator.class.getClassLoader().getResourceAsStream("expcatalog-derby.sql");
-                }else if(databaseType.equals(DatabaseType.mysql)){
-                    is = DatabaseCreator.class.getClassLoader().getResourceAsStream("expcatalog-mysql.sql");
-                }
+                is = DatabaseCreator.class.getClassLoader().getResourceAsStream(
+                        getDBScriptFileName(databaseType, dbscriptName)
+                );
             }
             reader = new BufferedReader(new InputStreamReader(is));
             String line;
@@ -350,4 +350,30 @@ public class DatabaseCreator {
         }
         return true;
     }
+
+    /**
+     * Method will accept a filepath containing a database script (eg: /user/database_scripts/expcatalog.sql)
+     *  and return only the filename of the database script (eg: expcatalog.sql).
+     * @param databaseType
+     * @param scriptFilePath
+     * @return
+     */
+    private static String getDBScriptFileName(DatabaseType databaseType, String scriptFilePath) {
+        // pattern: {dir_name}/{scriptfile_name}-{dbtype}.sql".
+        // Eg: database_scripts/expcatalog-derby.sql
+        final String scriptFilePattern = "(\\w*)(-" + databaseType.toString() + ".sql)";
+        final Pattern pattern = Pattern.compile(scriptFilePattern);
+        final Matcher matcher = pattern.matcher(scriptFilePath);
+        String dbScriptFileName = null;
+        // find a match
+        if (matcher.find()) {
+            dbScriptFileName = matcher.group();
+        }
+        return dbScriptFileName;
+    }
+
+//    public static void main(String[] args) throws Exception {
+//        System.out.println(DatabaseCreator.getDBScriptFileName(DatabaseType.derby, "db/db/expcatalog-derby.sql"));
+//        System.out.println(DatabaseCreator.getDBScriptFileName(DatabaseType.mysql, "/expcatalog-mysql.sql"));
+//    }
 }