try {
IPentahoSession session = PentahoSessionHolder.getSession();
if ( databaseMeta.getAccessType() == DatabaseMeta.TYPE_ACCESS_JNDI ) {
String jndiName = databaseMeta.getDatabaseName();
if ( jndiName != null ) {
SimpleLogger simpleLogger = new SimpleLogger( this );
localConnection =
(SQLConnection) PentahoConnectionFactory.getConnection( IPentahoConnection.SQL_DATASOURCE, jndiName,
session, simpleLogger );
}
}
if ( localConnection == null ) {
String driver = databaseMeta.getDriverClass();
String userId = databaseMeta.getUsername();
String password = databaseMeta.getPassword();
String connectionInfo = databaseMeta.getURL();
// Fix for BISERVER-6350
// Creating connections in PEC generate GenericDatabaseMeta objects that lack the DatabaseName (since
// GenericDatabaseMeta use a "custom URL" instead).
// Later on when the db dialect of the database meta gets changed (this.getActiveDatabaseMeta()) to other than
// the "Generic" the
// DatabaseName is still missing which produces a bougus url connection throwing exceptions.
if ( StringUtils.isEmpty( databaseMeta.getDatabaseName() ) ) {
String genericDBMetaDriver =
databaseMeta.getAttributes().getProperty( GenericDatabaseMeta.ATRRIBUTE_CUSTOM_DRIVER_CLASS, "" );
if ( !StringUtils.isEmpty( genericDBMetaDriver ) ) {
driver = genericDBMetaDriver;
}
String genericDBMetaURL =
databaseMeta.getAttributes().getProperty( GenericDatabaseMeta.ATRRIBUTE_CUSTOM_URL, "" );
if ( !StringUtils.isEmpty( genericDBMetaURL ) ) {
connectionInfo = genericDBMetaURL;
}
}
SimpleLogger simpleLogger = new SimpleLogger( this );
localConnection =
(SQLConnection) PentahoConnectionFactory.getConnection( IPentahoConnection.SQL_DATASOURCE, driver,
connectionInfo, userId, password, session, simpleLogger );
}