#################################################################### # proc createJDBCDriver. #################################################################### proc installJDBCDriver { propertiesFile } { global AdminConfig # display procedure arguments. set procName [ lindex [ info level 0 ] 0 ] putsLog "## proc - $procName" foreach i [ info args $procName ] { upvar 0 $i ilocal set propertiesArray($i) $ilocal } putsLog "procedure arguments are................." foreach { a b } [ array get propertiesArray ] { putsLog [ format "%-35s %s" "$a" "$b" ] } putsLog "JDBC Driver properties are: ............" if { [ catch { hashMapList $propertiesFile } r ] == 0 } { set propertiesList $r foreach a $propertiesList { putsLog [ format "%-5s %-20s %-s" " " [ lindex $a 0 ] [ lindex $a 1 ] ] } } else { return -code error $r } # call the hashMap proc which returns a Property object populated with property file values. if { [ catch { hashMap $propertiesFile } r ] == 0 } { set PropertyI $r } else { return -code error $r } # list the current JDBC drivers set j [ $AdminConfig list JDBCProvider ] putsLog "Installed JDBC drivers are................" showList $j putsLog [ string repeat . [ string length "Installed JDBC drivers are................" ] ] #get attribute name of each JDBC driver and add to a list. foreach i $j { lappend nameList [ $AdminConfig showAttribute $i name ] } set providerName [ $PropertyI getProperty jdbcProvider.name ] catch { lsearch $nameList $providerName } r ## delete the driver if it exists. if { $r != -1 } { putsLog "JDBC driver already exists. Deleting driver ..............." if { [ catch { deleteJDBCDriver $providerName } r ] == 0 } { putsLog $r } else { putsLog $r return -code error $r } } # create the jdbc driver at the cell level. This is the most common config. set cellId [ lindex [ $AdminConfig list Cell ] 0 ] # create the JDBC driver. putsLog "Creating JDBC driver" set classpath [ list classpath [ $PropertyI getProperty jdbcProvider.classpath ] ] set implementationClassName [ list implementationClassName [ $PropertyI getProperty jdbcProvider.implementationClassName ] ] set description [ list description [ $PropertyI getProperty jdbcProvider.description ] ] set name [ list name $providerName ] set xa [ list xa true ] set attrList [ list $classpath $implementationClassName $name $xa $description ] # get the template id for the JDBC provider. set template [ $PropertyI getProperty jdbcProvider.template ] if { [ catch { $AdminConfig listTemplates JDBCProvider $template } r ] == 0 } { if { $r == {} } { putsLog "ERROR: $template template does not exist" putsLog " Checking existing templates using \"$AdminConfig listTemplates JDBCProvider\" from the command line" return -code error } else { set templateId $r } } if { [ catch { $AdminConfig createUsingTemplate JDBCProvider $cellId $attrList $templateId } r ] == 0 } { putsLog "$providerName JDBC driver created successfully." } else { putsLog "ERROR: failed to create $providerName JDBC driver " return -code error "$r" } }