Updated Branches: refs/heads/javelin 17a94b20e -> b45cdef5d
DatabaseCreator: Process db props, sql and upgrade classes separately Signed-off-by: Rohit Yadav <bhais...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/b45cdef5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/b45cdef5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/b45cdef5 Branch: refs/heads/javelin Commit: b45cdef5d9185d21ab30d7a81b075622a4e184eb Parents: 17a94b2 Author: Rohit Yadav <bhais...@apache.org> Authored: Thu Jan 17 16:51:59 2013 -0800 Committer: Rohit Yadav <bhais...@apache.org> Committed: Thu Jan 17 18:25:27 2013 -0800 ---------------------------------------------------------------------- developer/pom.xml | 3 + server/src/com/cloud/upgrade/DatabaseCreator.java | 120 +++++++++------- 2 files changed, 73 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b45cdef5/developer/pom.xml ---------------------------------------------------------------------- diff --git a/developer/pom.xml b/developer/pom.xml index ff1dcd4..95dfb9f 100644 --- a/developer/pom.xml +++ b/developer/pom.xml @@ -340,6 +340,9 @@ </executableDependency> <mainClass>com.cloud.upgrade.DatabaseCreator</mainClass> <arguments> + <!-- db properties file --> + <argument>${project.parent.basedir}/utils/conf/db.properties</argument> + <argument>${project.parent.basedir}/utils/conf/db.properties.override</argument> <!-- Create default schema and db table views --> <argument>${basedir}/target/db/create-schema.sql</argument> <argument>${basedir}/target/db/create-schema-premium.sql</argument> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b45cdef5/server/src/com/cloud/upgrade/DatabaseCreator.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/upgrade/DatabaseCreator.java b/server/src/com/cloud/upgrade/DatabaseCreator.java index 4bc2038..5dde057 100755 --- a/server/src/com/cloud/upgrade/DatabaseCreator.java +++ b/server/src/com/cloud/upgrade/DatabaseCreator.java @@ -24,6 +24,8 @@ import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; import com.cloud.utils.PropertiesUtil; @@ -39,74 +41,92 @@ public class DatabaseCreator { "DatabaseCreator creates the database schema by removing the \n" + "previous schema, creating the schema, and running \n" + "through the database updaters."); - System.out.println("Usage: " + cmd + " [schema files] [database upgrade class]"); + System.out.println("Usage: " + cmd + " [db.properties files] [schema.sql files] [database upgrade class]"); } public static void main(String[] args) { - if (args.length < 2) { + List<String> dbPropFiles = new ArrayList<String>(); + List<String> sqlFiles = new ArrayList<String>(); + List<String> upgradeClasses = new ArrayList<String>(); + + for (String arg: args) { + if (arg.endsWith(".sql")) { + sqlFiles.add(arg); + } else if (arg.endsWith(".properties") || arg.endsWith("properties.override")) { + dbPropFiles.add(arg); + } else { + upgradeClasses.add(arg); + } + } + + if ((dbPropFiles.size() == 0) + || (sqlFiles.size() == 0) && upgradeClasses.size() == 0) { printHelp("DatabaseCreator"); System.exit(1); } - for (int i = 0; i < args.length; i++) { - - if (args[i].endsWith("sql")) { + // Process db.properties files + for (String dbPropFile: dbPropFiles) { - File sqlScript = PropertiesUtil.findConfigFile(args[i]); - if (sqlScript == null) { - System.err.println("Unable to find " + args[i]); - printHelp("DatabaseCreator"); - System.exit(1); - } + } - System.out.println("=============> Processing SQL file at " + sqlScript.getAbsolutePath()); + // Process sql files + for (String sqlFile: sqlFiles) { + File sqlScript = PropertiesUtil.findConfigFile(sqlFile); + if (sqlScript == null) { + System.err.println("Unable to find " + sqlFile); + printHelp("DatabaseCreator"); + System.exit(1); + } - Connection conn = Transaction.getStandaloneConnection(); - try { + System.out.println("=============> Processing SQL file at " + sqlScript.getAbsolutePath()); - ScriptRunner runner = new ScriptRunner(conn, false, true); - FileReader reader = null; - try { - reader = new FileReader(sqlScript); - } catch (FileNotFoundException e) { - System.err.println("Unable to read " + args[i] + ": " + e.getMessage()); - System.exit(1); - } - try { - runner.runScript(reader); - } catch (IOException e) { - System.err.println("Unable to read " + args[i] + ": " + e.getMessage()); - System.exit(1); - } catch (SQLException e) { - System.err.println("Unable to execute " + args[i] + ": " + e.getMessage()); - System.exit(1); - } - } finally { + Connection conn = Transaction.getStandaloneConnection(); + try { - try { - conn.close(); - } catch (SQLException e) { - System.err.println("Unable to close DB connection: " + e.getMessage()); - } + ScriptRunner runner = new ScriptRunner(conn, false, true); + FileReader reader = null; + try { + reader = new FileReader(sqlScript); + } catch (FileNotFoundException e) { + System.err.println("Unable to read " + sqlFile + ": " + e.getMessage()); + System.exit(1); } - - } else { - System.out.println("=============> Processing upgrade: " + args[i]); - Class<?> clazz = null; try { - clazz = Class.forName(args[i]); - if (!SystemIntegrityChecker.class.isAssignableFrom(clazz)) { - System.err.println("The class must be of SystemIntegrityChecker: " + clazz.getName()); - System.exit(1); - } - } catch (ClassNotFoundException e) { - System.err.println("Unable to find " + args[i] + ": " + e.getMessage()); + runner.runScript(reader); + } catch (IOException e) { + System.err.println("Unable to read " + sqlFile + ": " + e.getMessage()); System.exit(1); + } catch (SQLException e) { + System.err.println("Unable to execute " + sqlFile + ": " + e.getMessage()); + System.exit(1); + } + } finally { + try { + conn.close(); + } catch (SQLException e) { + System.err.println("Unable to close DB connection: " + e.getMessage()); } + } + } - //SystemIntegrityChecker checker = (SystemIntegrityChecker)ComponentLocator.inject(clazz); - //checker.check(); + // Process db upgrade classes + for (String upgradeClass: upgradeClasses) { + System.out.println("=============> Processing upgrade: " + upgradeClass); + Class<?> clazz = null; + try { + clazz = Class.forName(upgradeClass); + if (!SystemIntegrityChecker.class.isAssignableFrom(clazz)) { + System.err.println("The class must be of SystemIntegrityChecker: " + clazz.getName()); + System.exit(1); + } + } catch (ClassNotFoundException e) { + System.err.println("Unable to find " + upgradeClass + ": " + e.getMessage()); + System.exit(1); } + + //SystemIntegrityChecker checker = (SystemIntegrityChecker)ComponentLocator.inject(clazz); + //checker.check(); } } }