[Major] refactored DbSchemaVersionCheck and added version parsing

- Now we can use Version to see if current version is greater than
- Fixed bug where version checking didn't check for app
- TODO is still open to handle migration with intermediary steps
This commit is contained in:
Robert von Burg 2015-01-09 12:34:05 +01:00
parent ee741b5e18
commit 6e265c755b
4 changed files with 10 additions and 9 deletions

@ -1 +1 @@
Subproject commit 3f6f9950f856dd995ca1d3581aabe30ba3db910e Subproject commit 07b574dba13ae7ca1000737dc799f6fd3885bd35

View File

@ -30,6 +30,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ch.eitchnet.db.DbSchemaVersionCheck; import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.utils.Version;
import ch.eitchnet.utils.helper.StringHelper; import ch.eitchnet.utils.helper.StringHelper;
public class CachedDaoTest extends AbstractModelTest { public class CachedDaoTest extends AbstractModelTest {
@ -65,7 +66,7 @@ public class CachedDaoTest extends AbstractModelTest {
} }
public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception { public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception {
String dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, Version dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class); PostgreSqlPersistenceHandler.class);
logger.info(MessageFormat.format("Dropping schema for expected version {0}", dbVersion)); logger.info(MessageFormat.format("Dropping schema for expected version {0}", dbVersion));
String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,

View File

@ -23,7 +23,6 @@ import static li.strolch.persistence.postgresql.dao.test.CachedDaoTest.dropSchem
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement;
import java.text.MessageFormat; import java.text.MessageFormat;
import li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler; import li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler;
@ -34,6 +33,7 @@ import org.junit.Test;
import ch.eitchnet.db.DbException; import ch.eitchnet.db.DbException;
import ch.eitchnet.db.DbSchemaVersionCheck; import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.utils.Version;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
@ -56,17 +56,16 @@ public class DbMigrationTest {
DbSchemaVersionCheck dbCheck = new DbSchemaVersionCheck(scriptPrefix, ctxClass, allowSchemaCreation, DbSchemaVersionCheck dbCheck = new DbSchemaVersionCheck(scriptPrefix, ctxClass, allowSchemaCreation,
allowSchemaMigration, allowSchemaDrop); allowSchemaMigration, allowSchemaDrop);
try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) {
Statement st = con.createStatement();) {
// DROP 0.2.1 // DROP 0.2.1
dbCheck.dropSchema(StrolchConstants.DEFAULT_REALM, "0.2.1", st); dbCheck.dropSchema(con, StrolchConstants.DEFAULT_REALM, Version.valueOf("0.2.1"));
// CREATE 0.2.0 // CREATE 0.2.0
dbCheck.createSchema(StrolchConstants.DEFAULT_REALM, "0.2.0", st); dbCheck.createSchema(con, StrolchConstants.DEFAULT_REALM, Version.valueOf("0.2.0"));
// MIGRATE 0.2.1 // MIGRATE 0.2.1
dbCheck.migrateSchema(StrolchConstants.DEFAULT_REALM, "0.2.1", st); dbCheck.migrateSchema(con, StrolchConstants.DEFAULT_REALM, Version.valueOf("0.2.1"));
} catch (SQLException e) { } catch (SQLException e) {
String msg = "Failed to open DB connection to URL {0} due to: {1}"; //$NON-NLS-1$ String msg = "Failed to open DB connection to URL {0} due to: {1}"; //$NON-NLS-1$

View File

@ -38,6 +38,7 @@ import org.junit.Before;
import ch.eitchnet.db.DbSchemaVersionCheck; import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.privilege.model.Certificate; import ch.eitchnet.privilege.model.Certificate;
import ch.eitchnet.utils.Version;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
@ -77,7 +78,7 @@ public abstract class AbstractRealmServiceTest {
} }
public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception { public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception {
String dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, Version dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class); PostgreSqlPersistenceHandler.class);
String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class, dbVersion, "drop"); //$NON-NLS-1$ PostgreSqlPersistenceHandler.class, dbVersion, "drop"); //$NON-NLS-1$