Skip to content
Snippets Groups Projects
Commit 0b029176 authored by felmer's avatar felmer
Browse files

LMS-2

DBMigrationEngine and DAOFactory refactored, some TODO leaving in DAOFactory

SVN: 163
parent dbca4b91
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
package ch.systemsx.cisd.dbmigration; package ch.systemsx.cisd.dbmigration;
import java.io.File; import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Date; import java.util.Date;
...@@ -69,13 +70,17 @@ public class DBMigrationEngine ...@@ -69,13 +70,17 @@ public class DBMigrationEngine
private final DataSource dataSource; private final DataSource dataSource;
private final File scriptFolder; private final File scriptFolder;
private final String initialDataScriptFile; private final String initialDataScriptFile;
private final String owner;
private final String databaseName;
public DBMigrationEngine(DataSource metaDataSource, DataSource dataSource, String scriptFolder, public DBMigrationEngine(DataSource metaDataSource, DataSource dataSource, String scriptFolder,
String initialDataScript) String initialDataScript, String owner, String databaseName)
{ {
this.metaDataSource = metaDataSource; this.metaDataSource = metaDataSource;
this.dataSource = dataSource; this.dataSource = dataSource;
this.initialDataScriptFile = initialDataScript; this.initialDataScriptFile = initialDataScript;
this.owner = owner;
this.databaseName = databaseName;
this.scriptFolder = new File(scriptFolder); this.scriptFolder = new File(scriptFolder);
} }
...@@ -87,13 +92,23 @@ public class DBMigrationEngine ...@@ -87,13 +92,23 @@ public class DBMigrationEngine
} else } else
{ {
JdbcTemplate template = new JdbcTemplate(metaDataSource); JdbcTemplate template = new JdbcTemplate(metaDataSource);
String sql = FileUtilities.loadText(new File(scriptFolder, "create.sql")); String createUserSQL = createScript("createUser.sql", owner, databaseName);
template.execute(sql); String createDatabaseSQL = createScript("createDatabase.sql", owner, databaseName);
template.execute(createUserSQL);
template.execute(createDatabaseSQL);
migrateOrCreate(version); migrateOrCreate(version);
System.out.println("Database created"); 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) private void migrateOrCreate(int version)
{ {
try try
...@@ -140,7 +155,6 @@ public class DBMigrationEngine ...@@ -140,7 +155,6 @@ public class DBMigrationEngine
if (initialDataScriptFile != null) if (initialDataScriptFile != null)
{ {
File file = new File(initialDataScriptFile); File file = new File(initialDataScriptFile);
System.out.println(file+" "+file.exists());
if (file.exists()) if (file.exists())
{ {
initialDataScript = FileUtilities.loadText(file); initialDataScript = FileUtilities.loadText(file);
...@@ -162,7 +176,8 @@ public class DBMigrationEngine ...@@ -162,7 +176,8 @@ public class DBMigrationEngine
{ {
try try
{ {
dataSource.getConnection().close(); Connection connection = dataSource.getConnection();
connection.close();
return true; return true;
} catch (SQLException ex) } catch (SQLException ex)
{ {
...@@ -182,6 +197,6 @@ public class DBMigrationEngine ...@@ -182,6 +197,6 @@ public class DBMigrationEngine
protected boolean isDBNotExistException(SQLException exception) protected boolean isDBNotExistException(SQLException exception)
{ {
String message = exception.getMessage(); String message = exception.getMessage();
return message.startsWith("FATAL: database") && message.endsWith("does not exist"); return message.startsWith("FATAL: database") || message.startsWith("FATAL: password");
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment