/*
* Copyright (c) 2000-2007 MetaMatrix, Inc.
* All rights reserved.
*/
package org.teiid.test.framework.connection;
import java.util.Properties;
import org.teiid.test.framework.ConfigPropertyLoader;
import org.teiid.test.framework.ConfigPropertyNames;
import org.teiid.test.framework.TestLogger;
import org.teiid.test.framework.datasource.DataSourceFactory;
import org.teiid.test.framework.exception.TransactionRuntimeException;
/**
* The ConnectionStrategyFactory is responsible for creating a connection strategy that is to be used to provide the type of
* connection.
* @author vanhalbert
*
*/
@SuppressWarnings("nls")
public class ConnectionStrategyFactory {
public static ConnectionStrategy createConnectionStrategy() {
ConfigPropertyLoader configLoader = ConfigPropertyLoader.getInstance();
ConnectionStrategy strategy = null;
Properties props = configLoader.getProperties();
String type = props.getProperty(ConfigPropertyNames.CONNECTION_TYPE, ConfigPropertyNames.CONNECTION_TYPES.DRIVER_CONNECTION);
if (type == null) {
throw new TransactionRuntimeException("Property " + ConfigPropertyNames.CONNECTION_TYPE + " was specified");
}
try {
if (type.equalsIgnoreCase(ConfigPropertyNames.CONNECTION_TYPES.DRIVER_CONNECTION)) {
// pass in null to create new strategy
strategy = new DriverConnection(props);
TestLogger.logDebug("Created Driver Strategy");
}
else if (type.equalsIgnoreCase(ConfigPropertyNames.CONNECTION_TYPES.DATASOURCE_CONNECTION)) {
strategy = new DataSourceConnection(props);
TestLogger.logDebug("Created DataSource Strategy");
}
else if (type.equalsIgnoreCase(ConfigPropertyNames.CONNECTION_TYPES.JNDI_CONNECTION)) {
strategy = new JEEConnection(props);
TestLogger.logDebug("Created JEE Strategy");
}
if (strategy == null) {
new TransactionRuntimeException("Invalid property value for " + ConfigPropertyNames.CONNECTION_TYPE + " is " + type );
}
// call configure here because this is creating the connection to Teiid
// direct connections to the datasource use the static call directly to create strategy and don't need to configure
strategy.configure();
return strategy;
} catch (Exception e) {
throw new TransactionRuntimeException(e);
}
}
public static void main(String[] args) {
//NOTE: to run this test to validate the DataSourceMgr, do the following:
// --- need 3 datasources, Oracle, SqlServer and 1 other
ConfigPropertyLoader config = ConfigPropertyLoader.getInstance();
new DataSourceFactory(config);
}
}