diff --git a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java index 667ff14cfa1cdb6689cb7c01408a5dfa696dbcc8..1f79f49951199a0cd0a3d15abd5d03cf2e23c926 100644 --- a/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java +++ b/dbmigration/source/java/ch/systemsx/cisd/dbmigration/DBMigrationEngine.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.dbmigration; import java.io.File; +import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; @@ -69,13 +70,17 @@ public class DBMigrationEngine private final DataSource dataSource; private final File scriptFolder; private final String initialDataScriptFile; + private final String owner; + private final String databaseName; public DBMigrationEngine(DataSource metaDataSource, DataSource dataSource, String scriptFolder, - String initialDataScript) + String initialDataScript, String owner, String databaseName) { this.metaDataSource = metaDataSource; this.dataSource = dataSource; this.initialDataScriptFile = initialDataScript; + this.owner = owner; + this.databaseName = databaseName; this.scriptFolder = new File(scriptFolder); } @@ -87,13 +92,23 @@ public class DBMigrationEngine } else { JdbcTemplate template = new JdbcTemplate(metaDataSource); - String sql = FileUtilities.loadText(new File(scriptFolder, "create.sql")); - template.execute(sql); + String createUserSQL = createScript("createUser.sql", owner, databaseName); + String createDatabaseSQL = createScript("createDatabase.sql", owner, databaseName); + + template.execute(createUserSQL); + template.execute(createDatabaseSQL); + migrateOrCreate(version); System.out.println("Database created"); } } + private String createScript(String scriptTemplateFile, String user, String database) + { + String script = FileUtilities.loadText(new File(scriptFolder, scriptTemplateFile)); + return script.replace("$USER", user).replace("$DATABASE", database); + } + private void migrateOrCreate(int version) { try @@ -140,7 +155,6 @@ public class DBMigrationEngine if (initialDataScriptFile != null) { File file = new File(initialDataScriptFile); - System.out.println(file+" "+file.exists()); if (file.exists()) { initialDataScript = FileUtilities.loadText(file); @@ -162,7 +176,8 @@ public class DBMigrationEngine { try { - dataSource.getConnection().close(); + Connection connection = dataSource.getConnection(); + connection.close(); return true; } catch (SQLException ex) { @@ -182,6 +197,6 @@ public class DBMigrationEngine protected boolean isDBNotExistException(SQLException exception) { String message = exception.getMessage(); - return message.startsWith("FATAL: database") && message.endsWith("does not exist"); + return message.startsWith("FATAL: database") || message.startsWith("FATAL: password"); } }