
org.unitils.database.config.DatabaseConfigurationsFactory Maven / Gradle / Ivy
/*
* Copyright 2013, Unitils.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.unitils.database.config;
import org.unitils.core.Factory;
import org.unitils.core.config.Configuration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Tim Ducheyne
*/
public class DatabaseConfigurationsFactory implements Factory {
protected Configuration configuration;
public DatabaseConfigurationsFactory(Configuration configuration) {
this.configuration = configuration;
}
public DatabaseConfigurations create() {
DatabaseConfiguration defaultDatabaseConfiguration = null;
Map databaseConfigurations = new HashMap(3);
List databaseNames = configuration.getOptionalStringList("database.names");
for (String databaseName : databaseNames) {
boolean defaultDatabase = defaultDatabaseConfiguration == null;
DatabaseConfiguration databaseConfiguration = createDatabaseConfiguration(databaseName, defaultDatabase);
databaseConfigurations.put(databaseName, databaseConfiguration);
if (defaultDatabase) {
defaultDatabaseConfiguration = databaseConfiguration;
}
}
if (defaultDatabaseConfiguration == null) {
defaultDatabaseConfiguration = createDatabaseConfiguration(null, true);
}
return new DatabaseConfigurations(defaultDatabaseConfiguration, databaseConfigurations);
}
protected DatabaseConfiguration createDatabaseConfiguration(String databaseName, boolean defaultDatabase) {
String[] classifiers = databaseName == null ? new String[0] : new String[]{databaseName};
String driverClassName = configuration.getOptionalString("database.driverClassName", classifiers);
String url = configuration.getOptionalString("database.url", classifiers);
String userName = configuration.getOptionalString("database.userName", classifiers);
String password = configuration.getOptionalString("database.password", classifiers);
String dialect = configuration.getOptionalString("database.dialect", classifiers);
List schemaNames = configuration.getOptionalStringList("database.schemaNames", classifiers);
Boolean updateDisabled = configuration.getOptionalBoolean("database.updateDisabled", classifiers);
String defaultSchemaName = schemaNames.isEmpty() ? null : schemaNames.get(0);
if (updateDisabled == null) {
updateDisabled = false;
}
return new DatabaseConfiguration(databaseName, dialect, driverClassName, url, userName, password, defaultSchemaName, schemaNames, updateDisabled, defaultDatabase);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy