From cad1e60b7bd48e0107a9d23c779336795b7f8da8 Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Tue, 26 Feb 2013 14:36:30 +0000 Subject: [PATCH] BIS-167 SP-291 : Added option to configure data source versions directly, without requiring a version holder class SVN: 28455 --- .../shared/DefaultDataSourceFactory.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DefaultDataSourceFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DefaultDataSourceFactory.java index 420dd295b69..abfa812ca4c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DefaultDataSourceFactory.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DefaultDataSourceFactory.java @@ -31,8 +31,8 @@ import ch.systemsx.cisd.openbis.generic.shared.util.IDataSourceFactory; /** * Creates a {@link DataSource} using {@link DatabaseConfigurationContext} and given properties. The - * database is migrated to the version specified by {@link #VERSION_HOLDER_CLASS_KEY} property - * if specified. + * database is migrated to the version specified by {@link #VERSION_HOLDER_CLASS_KEY} property if + * specified. * * @author Izabela Adamczyk */ @@ -41,6 +41,8 @@ public class DefaultDataSourceFactory implements IDataSourceFactory public static final String VERSION_HOLDER_CLASS_KEY = "version-holder-class"; + public static final String VERSION_KEY = "version"; + @Override public DataSourceWithDefinition create(Properties dbProps) { @@ -54,13 +56,24 @@ public class DefaultDataSourceFactory implements IDataSourceFactory { throw new ConfigurationFailureException("db engine code not specified in " + dbProps); } - String versionClass = dbProps.getProperty(VERSION_HOLDER_CLASS_KEY); - if (versionClass != null) + + // First try to get the version from the properties + String propertiesVersion = dbProps.getProperty(VERSION_KEY); + if (propertiesVersion != null) { - IDatabaseVersionHolder versionHolder = - ClassUtils.create(IDatabaseVersionHolder.class, versionClass); - String version = versionHolder.getDatabaseVersion(); + String version = propertiesVersion; DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider(context, version); + } else + { + // Now try the version-holder-class-based varient + String versionClass = dbProps.getProperty(VERSION_HOLDER_CLASS_KEY); + if (versionClass != null) + { + IDatabaseVersionHolder versionHolder = + ClassUtils.create(IDatabaseVersionHolder.class, versionClass); + String version = versionHolder.getDatabaseVersion(); + DBMigrationEngine.createOrMigrateDatabaseAndGetScriptProvider(context, version); + } } return new DataSourceWithDefinition(context.getDataSource(), DataSourceDefinition.createFromContext(context)); -- GitLab