# # Create Datasource Proc. # #################################################################### # Patrick Finnegan 11/01/2005. V1. #################################################################### proc createDataSource { serverName dataSourceName dbDescription portNumber driverType authDataAlias jndiName dbDriver } { global AdminConfig putsLog "proc - [info level 0 ]" set propertiesArray(serverName) $serverName set propertiesArray(dataSourceName) $dataSourceName set propertiesArray(dbDescription) $dbDescription set propertiesArray(portNumber) $portNumber set propertiesArray(driverType) $driverType set propertiesArray(authDataAlias) $authDataAlias set propertiesArray(jndiName) $jndiName set propertiesArray(dbDriver) $dbDriver putsLog "properties are.................." foreach { a b } [ array get propertiesArray ] { putsLog [ format "%-25s %s" "$a" "$b" ] } set dataSources [ $AdminConfig list DataSource ] putsLog "Installed datasources are................" showList $dataSources # get attribute name of each dataSource and add to a list. foreach i $dataSources { lappend nameList [ $AdminConfig showAttribute $i name ] } catch { lsearch $nameList $dataSourceName } r if { $r == -1 } { set continue true } else { putsLog "datasource $dataSourceName already exists" if { [ catch { deleteDataSource $dataSourceName } r ] == 0 } { putsLog "datasource $dataSourceName deleted successfully" } else { return -code error $r } } if { [ catch { setProperties $authDataAlias $dbDescription $dataSourceName $jndiName } r ] == 0 } { set dataSourceAttributes $r } else { return -code error $r } # install the datasource under the database driver id with general properties. if { [ catch { $AdminConfig getid /JDBCProvider:$dbDriver/ } r ] == 0 } { putsLog "db2 driver is $r" set jdbcDriverId $r } else { return -code error $r } #puts "$AdminConfig create DataSource $jdbcDriverId $dataSourceAttributes" if { [ catch { $AdminConfig create DataSource $jdbcDriverId $dataSourceAttributes } r ] == 0 } { putsLog "datasource $dataSourceName created successfully" } else { putsLog "ERROR: failed to create $dataSourceName" return -code error $r } # get the id of the newly created datasource if { [ catch { $AdminConfig getid /DataSource:$dataSourceName/ } r ] == 0 } { putsLog "dataSource id is $r" set dataSourceId $r } else { return -code error $r } # create the propertySetId for the datasource. set propertySetId [ $AdminConfig create J2EEResourcePropertySet $dataSourceId {} ] # create the properties for the property set. # setCustomProps returns a list. foreach e [ setCustomProps $dataSourceName $portNumber $dbDescription ] { $AdminConfig create J2EEResourceProperty $propertySetId $e } putsLog "*** The End ***" } #################################################################### # Set general properties for DataSource. #################################################################### proc setProperties { authDataAlias dbDescription dataSourceName jndiName } { global alias putsLog "proc - [info level 0 ]" set propertiesArray(authDataAlias) $authDataAlias set propertiesArray(dataSourceName) $dataSourceName set propertiesArray(dbDescription) $dbDescription set propertiesArray(jndiName) $jndiName putsLog "properties are.................." foreach { a b } [ array get propertiesArray ] { putsLog [ format "%-25s %s" "$a" "$b" ] } set statementCacheSize [ list statementCacheSize 100 ] set datasourceHelperClassname [ list datasourceHelperClassname "com.ibm.websphere.rsadapter.OracleDataStoreHelper" ] set relationalResourceAdapter [ list relationalResourceAdapter "WebSphere Relational Resource Adapter" ] set authDataAlias [ list authDataAlias $authDataAlias ] set name [ list name $dataSourceName ] set jndiName [ list jndiName $jndiName ] set description [ list description $dbDescription] set agedTimeout [ list agedTimeout 0 ] set connectionTimeout [ list connectionTimeout 1800 ] set maxConnections [ list maxConnections 20 ] set minConnections [ list minConnections 1 ] set purgePolicy [ list purgePolicy "FailingConnectionOnly"] set reapTime [ list reapTime 180 ] set unusedTimeout [ list unusedTimeout 1800 ] set connectionPoolList [list $agedTimeout \ $connectionTimeout \ $maxConnections \ $minConnections \ $purgePolicy \ $reapTime \ $unusedTimeout ] set attributesList [ list $statementCacheSize \ $name \ $authDataAlias \ $jndiName \ $datasourceHelperClassname \ $description \ [ list connectionPool $connectionPoolList ] ] return $attributesList } #################################################################### # Set custom properties. #################################################################### proc setCustomProps {dataSourceName portNumber dbDescription} { putsLog "proc - [info level 0 ]" set name [ list name databaseName ] set required [ list required true ] set type [ list type "java.lang.String" ] set value [ list value $dataSourceName ] set custom1 [ list $name $required $type $value ] set name [ list name enableSQLJ ] set required [ list required false ] set type [ list type java.lang.Boolean ] set value [ list value false ] set custom2 [ list $name $required $type $value ] set name [ list name description ] set required [ list required false ] set type [ list type java.lang.String ] set value [ list value $dbDescription ] set custom3 [ list $name $required $type $value ] set name [ list name portNumber ] set required [ list required false ] set type [ list type java.lang.Integer ] set value [ list value $portNumber ] set custom4 [ list $name $required $type $value ] set name [ list name connectionAttribute ] set required [ list required false ] set type [ list type java.lang.String ] set value [ list value cursorhold=0 ] set custom5 [ list $name $required $type $value ] set name [ list name loginTimeout ] set required [ list required false ] set type [ list type java.lang.Integer ] set value [ list value 0 ] set custom6 [ list $name $required $type $value ] set name [ list name enableMultithreadedAccessDetection] set required [ list required false ] set type [ list type java.lang.Boolean ] set value [ list value false ] set custom7 [ list $name $required $type $value ] set name [ list name preTestSQLString ] set required [ list required false ] set type [ list type java.lang.String ] set value [ list value " " ] set custom8 [ list $name $required $type $value ] set customPropsList [ list $custom1 $custom2 $custom3 $custom4 $custom5 $custom6 $custom7 $custom8 ] return $customPropsList }