package org.atricore.idbus.idojos.dbidentitystore;
import org.atricore.idbus.kernel.common.support.jdbc.JDBCDriverManager;
import org.atricore.idbus.kernel.common.support.jdbc.JDBCManagerException;
import org.atricore.idbus.kernel.main.store.exceptions.SSOIdentityException;
import java.sql.Connection;
import java.sql.Driver;
import java.util.List;
import java.util.Properties;
/**
* @author <a href=mailto:sgonzalez@atricore.org>Sebastian Gonzalez Oyuela</a>
*/
public class DynamicJDBCIdentityStore extends AbstractDBIdentityStore {
private JDBCDriverManager manager;
/**
* The connection username to use when trying to connect to the database.
*/
protected String connectionUser = null;
/**
* The connection URL to use when trying to connect to the database.
*/
protected String connectionPassword = null;
/**
* The connection URL to use when trying to connect to the database.
*/
protected String connectionURL = null;
protected List<String> classPath;
/**
* The JDBC driver to use.
*/
protected String driverName = null;
public String getConnectionUser() {
return connectionUser;
}
public void setConnectionUser(String connectionUser) {
this.connectionUser = connectionUser;
}
public String getConnectionPassword() {
return connectionPassword;
}
public void setConnectionPassword(String connectionPassword) {
this.connectionPassword = connectionPassword;
}
public String getConnectionURL() {
return connectionURL;
}
public void setConnectionURL(String connectionURL) {
this.connectionURL = connectionURL;
}
public String getDriverName() {
return driverName;
}
public void setDriverName(String driverName) {
this.driverName = driverName;
}
public List<String> getClassPath() {
return classPath;
}
public void setClassPath(List<String> classPath) {
this.classPath = classPath;
}
public JDBCDriverManager getManager() {
return manager;
}
public void setManager(JDBCDriverManager manager) {
this.manager = manager;
}
@Override
public Connection getDBConnection() throws SSOIdentityException {
// Open a new connection
Properties props = new Properties();
if (connectionUser != null)
props.put("user", connectionUser);
if (connectionPassword != null)
props.put("password", connectionPassword);
try {
return manager.getConnection(driverName, connectionURL, props, classPath);
} catch (JDBCManagerException e) {
throw new SSOIdentityException(e);
}
}
}