Skip to content
Snippets Groups Projects
Commit cc42b5ed authored by buczekp's avatar buczekp
Browse files

[LMS-1495] configuration for multiple databases

SVN: 15892
parent 17b4e435
No related branches found
No related tags found
No related merge requests found
......@@ -19,28 +19,57 @@ package ch.systemsx.cisd.openbis.plugin.query.server;
import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
/**
*
*
* @author Franz-Josef Elmer
*/
public class DatabaseDefinition
{
private final String key;
private final String label;
private final String dataSpaceOrNull;
private final String creatorMinimalRole;
private final DatabaseConfigurationContext configurationContext;
public DatabaseDefinition(String label, DatabaseConfigurationContext configurationContext)
public DatabaseDefinition(DatabaseConfigurationContext configurationContext, String key,
String label, String creatorMinimalRole, String dataSpaceOrNull)
{
assert key != null;
assert label != null;
assert creatorMinimalRole != null;
assert configurationContext != null;
this.key = key;
this.label = label;
this.dataSpaceOrNull = dataSpaceOrNull;
this.creatorMinimalRole = creatorMinimalRole;
this.configurationContext = configurationContext;
}
public String getKey()
{
return key;
}
public String getLabel()
{
return label;
}
public String getCreatorMinimalRole()
{
return creatorMinimalRole;
}
public String tryGetDataSpace()
{
return dataSpaceOrNull;
}
public DatabaseConfigurationContext getConfigurationContext()
{
return configurationContext;
}
}
......@@ -30,8 +30,9 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.common.spring.ExposablePropertyPaceholderConfigurer;
import ch.systemsx.cisd.common.spring.IInvocationLoggerContext;
import ch.systemsx.cisd.common.utilities.BeanUtils;
import ch.systemsx.cisd.common.utilities.ExtendedProperties;
import ch.systemsx.cisd.common.utilities.PropertyParametersUtil;
import ch.systemsx.cisd.common.utilities.PropertyUtils;
import ch.systemsx.cisd.common.utilities.PropertyParametersUtil.SectionProperties;
import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
import ch.systemsx.cisd.openbis.generic.server.AbstractServer;
import ch.systemsx.cisd.openbis.generic.server.business.bo.DataAccessExceptionTranslator;
......@@ -57,9 +58,16 @@ import ch.systemsx.cisd.openbis.plugin.query.shared.translator.QueryTranslator;
@Component(ResourceNames.QUERY_PLUGIN_SERVER)
public class QueryServer extends AbstractServer<IQueryServer> implements IQueryServer
{
static final String DATABASE_PROPERTIES_PREFIX = "query-database.";
/** property with database keys/names separated by delimiter */
private static final String DATABASE_KEYS = "query-databases";
static final String LABEL_PROPERTY_KEY = "label";
private static final String LABEL_PROPERTY_KEY = "label";
private static final String CREATOR_MINIMAL_ROLE_KEY = "creator-minimal-role";
private static final String DEFAULT_CREATOR_MINIMAL_ROLE = "POWER_USER";
private static final String DATA_SPACE_KEY = "data-space";
@Resource(name = "propertyConfigurer")
private ExposablePropertyPaceholderConfigurer configurer;
......@@ -221,17 +229,34 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS
if (databaseDefinition == null)
{
Properties resolvedProps = configurer.getResolvedProps();
ExtendedProperties databaseProperties =
ExtendedProperties.getSubset(resolvedProps,
DATABASE_PROPERTIES_PREFIX, true);
if (databaseProperties.isEmpty() == false)
SectionProperties[] sectionsProperties =
PropertyParametersUtil.extractSectionProperties(resolvedProps, DATABASE_KEYS,
true);
DatabaseDefinition[] definitions = new DatabaseDefinition[sectionsProperties.length];
for (int i = 0; i < definitions.length; i++)
{
DatabaseConfigurationContext configurationContext =
final String databaseKey = sectionsProperties[i].getKey();
final Properties databaseProperties = sectionsProperties[i].getProperties();
final DatabaseConfigurationContext configurationContext =
BeanUtils
.createBean(DatabaseConfigurationContext.class, databaseProperties);
databaseDefinition =
new DatabaseDefinition(PropertyUtils.getMandatoryProperty(
databaseProperties, LABEL_PROPERTY_KEY), configurationContext);
final String label =
PropertyUtils.getMandatoryProperty(databaseProperties, LABEL_PROPERTY_KEY);
final String creatorMinimalRole =
PropertyUtils.getProperty(databaseProperties, CREATOR_MINIMAL_ROLE_KEY,
DEFAULT_CREATOR_MINIMAL_ROLE);
final String dataSpaceOrNull =
PropertyUtils.getProperty(databaseProperties, DATA_SPACE_KEY);
definitions[i] =
new DatabaseDefinition(configurationContext, databaseKey, label,
creatorMinimalRole, dataSpaceOrNull);
}
if (definitions.length > 0)
{
databaseDefinition = definitions[0];
// FIXME add support for multiple DBs
}
}
return databaseDefinition;
......
......@@ -74,10 +74,13 @@ onlinehelp.generic.page-template = https://wiki-bsse.ethz.ch/pages/createpage.ac
#onlinehelp.specific.root-url = https://wiki-bsse.ethz.ch/display/CISDDoc/OnlineHelp
#onlinehelp.specific.page-template = https://wiki-bsse.ethz.ch/pages/createpage.action?spaceKey=CISDDoc&title=${title}&linkCreation=true&fromPageId=40633829
query-database.label = openBIS meta data
query-database.databaseEngineCode = ${database.engine}
query-database.basicDatabaseName = openbis
query-database.databaseKind = ${database.kind}
# Database Configurations for Query module
query-databases = 1
1.label = openBIS meta data
1.databaseEngineCode = ${database.engine}
1.basicDatabaseName = openbis
1.databaseKind = ${database.kind}
# Comma-separated list of host names and IP addresses of clients on which an INSTANCE_ADMIN
# user is allowed to change identity
......
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