* Build a DatabaseLogin for the given Session
* Wrapped by the getLogin() call, therefore, config can't be null at this
* point.
*/
protected Login buildDatabaseLoginConfig(DatabaseLoginConfig databaseLoginConfig) {
DatabaseLogin databaseLogin = new DatabaseLogin();
// Driver class
String driverClassName = databaseLoginConfig.getDriverClass();
if (driverClassName != null) {
try {
Class driverClass = m_classLoader.loadClass(driverClassName);
databaseLogin.setDriverClass(driverClass);
} catch (Exception exception) {
throw SessionLoaderException.failedToLoadTag("driver-class", driverClassName, exception);
}
}
// Connection URL
String connectionString = databaseLoginConfig.getConnectionURL();
if (connectionString != null) {
databaseLogin.setConnectionString(connectionString);
}
// Datasource
String datasourceName = databaseLoginConfig.getDatasource();
if (datasourceName != null) {
try {
JNDIConnector jndiConnector = new JNDIConnector(new javax.naming.InitialContext(), datasourceName);
jndiConnector.setLookupType(databaseLoginConfig.getLookupType().intValue());
databaseLogin.setConnector(jndiConnector);
} catch (Exception exception) {
throw SessionLoaderException.failedToLoadTag("datasource", datasourceName, exception);
}
}
// Bind all parameters - XML Schema default is false
databaseLogin.setShouldBindAllParameters(databaseLoginConfig.getBindAllParameters());
// Cache all statements - XML Schema default is false
databaseLogin.setShouldCacheAllStatements(databaseLoginConfig.getCacheAllStatements());
// Byte array binding - XML Schema default is true
databaseLogin.setUsesByteArrayBinding(databaseLoginConfig.getByteArrayBinding());
// String binding - XML Schema default is false
databaseLogin.setUsesStringBinding(databaseLoginConfig.getStringBinding());
// Stream binding - XML Schema default is false
databaseLogin.setUsesStreamsForBinding(databaseLoginConfig.getStreamsForBinding());
// Force field to uppper case - XML Schema default is false
databaseLogin.setShouldForceFieldNamesToUpperCase(databaseLoginConfig.getForceFieldNamesToUppercase());
// Optimize data conversion - XML Schema default is true
databaseLogin.setShouldOptimizeDataConversion(databaseLoginConfig.getOptimizeDataConversion());
// Trim strings - XML Schema default is true
databaseLogin.setShouldTrimStrings(databaseLoginConfig.getTrimStrings());
// Batch writing - XML Schema default is false
databaseLogin.setUsesBatchWriting(databaseLoginConfig.getBatchWriting());
// JDBC 2.0 batch writing - XML Schema default is true
databaseLogin.setUsesJDBCBatchWriting(databaseLoginConfig.getJdbcBatchWriting());
// Max batch writing size - XML Schema default is 32000
Integer maxBatchWritingSize = databaseLoginConfig.getMaxBatchWritingSize();
if (maxBatchWritingSize != null) {
databaseLogin.setMaxBatchWritingSize(maxBatchWritingSize.intValue());
}
// Native SQL - XML Schema default is false
databaseLogin.setUsesNativeSQL(databaseLoginConfig.getNativeSQL());
// Process the common elements in LoginConfig
processLoginConfig(databaseLoginConfig, databaseLogin);
processStructConverterConfig(databaseLoginConfig.getStructConverterConfig(), databaseLogin);
if (databaseLoginConfig.isConnectionHealthValidatedOnError() != null){
databaseLogin.setConnectionHealthValidatedOnError(databaseLoginConfig.isConnectionHealthValidatedOnError());
}
if (databaseLoginConfig.getQueryRetryAttemptCount() != null){
databaseLogin.setQueryRetryAttemptCount(databaseLoginConfig.getQueryRetryAttemptCount());
}
if (databaseLoginConfig.getDelayBetweenConnectionAttempts() != null){
databaseLogin.setDelayBetweenConnectionAttempts(databaseLoginConfig.getDelayBetweenConnectionAttempts());
}
if (databaseLoginConfig.getPingSQL() != null){
databaseLogin.setPingSQL(databaseLoginConfig.getPingSQL());
}
// Finally, return the newly created DatabaseLogin
return databaseLogin;
}