public DatabaseHelper( IDatabaseDialectService databaseDialectService ) {
this.databaseTypeHelper = new DatabaseTypeHelper( databaseDialectService.getDatabaseTypes() );
}
public DataNode databaseConnectionToDataNode( final IDatabaseConnection databaseConnection ) {
DataNode rootNode = new DataNode( NODE_ROOT );
// Then the basic db information
if ( databaseConnection.getDatabaseType() != null ) {
rootNode.setProperty( PROP_TYPE, databaseConnection.getDatabaseType().getShortName() );
}
String port =
( "".equals( setNull( databaseConnection.getDatabasePort() ) ) ) ? "0" : databaseConnection.getDatabasePort();
rootNode.setProperty( PROP_CONTYPE, setNull( databaseConnection.getAccessType().getName() ) );
rootNode.setProperty( PROP_HOST_NAME, setNull( databaseConnection.getHostname() ) );
rootNode.setProperty( PROP_DATABASE_NAME, setNull( databaseConnection.getDatabaseName() ) );
rootNode.setProperty( PROP_PORT, new Long( port ) );
rootNode.setProperty( PROP_USERNAME, setNull( databaseConnection.getUsername() ) );
rootNode.setProperty( PROP_PASSWORD, Encr.encryptPasswordIfNotUsingVariables(databaseConnection.getPassword()));
rootNode.setProperty( PROP_SERVERNAME, setNull( databaseConnection.getInformixServername() ) );
rootNode.setProperty( PROP_DATA_TBS, setNull( databaseConnection.getDataTablespace() ) );
rootNode.setProperty( PROP_INDEX_TBS, setNull( databaseConnection.getIndexTablespace() ) );
rootNode.setProperty( PROP_CONNECT_SQL, setNull( databaseConnection.getConnectSql() ) );
rootNode.setProperty( PROP_INITIAL_POOL_SIZE, databaseConnection.getInitialPoolSize() );
rootNode.setProperty( PROP_MAX_POOL_SIZE, databaseConnection.getMaximumPoolSize() );
rootNode.setProperty( PROP_IS_POOLING, databaseConnection.isUsingConnectionPool() );
rootNode.setProperty( PROP_IS_FORCING_TO_LOWER, databaseConnection.isForcingIdentifiersToLowerCase() );
rootNode.setProperty( PROP_IS_FORCING_TO_UPPER, databaseConnection.isForcingIdentifiersToUpperCase() );
rootNode.setProperty( PROP_IS_QUOTE_FIELDS, databaseConnection.isQuoteAllFields() );
rootNode.setProperty( PROP_IS_DECIMAL_SEPERATOR, databaseConnection.isUsingDoubleDecimalAsSchemaTableSeparator() );
// Now store all the attributes set on the database connection...
DataNode attrNode = rootNode.addNode( NODE_ATTRIBUTES );
Map<String, String> attributes = databaseConnection.getAttributes();
Set<String> keys = attributes.keySet();
for ( String key : keys ) {
String value = attributes.get( key );
attrNode.setProperty( key, value );
}
attrNode.setProperty(ATTRIBUTE_PORT_NUMBER, new Long(port).longValue());
// Now store the pooling parameters
attrNode = rootNode.addNode( NODE_POOLING_PROPS );
attributes = databaseConnection.getConnectionPoolingProperties();
keys = attributes.keySet();
for ( String key : keys ) {
String value = attributes.get( key );
attrNode.setProperty( key, value );
}
// Store the extra options
attrNode = rootNode.addNode( NODE_EXTRA_OPTIONS );
attributes = databaseConnection.getExtraOptions();
for ( String key : attributes.keySet() ) {
String value = attributes.get( key );
attrNode.setProperty( key, value );
}
return rootNode;
}