import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSet; public class TsmServers { static final String ODBC_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; private String tsmServerName = null; private Connection tsmConnection = null; private Statement tsmStatement = null; private ResultSet slResultSet = null; private Statement slStatement = null; private boolean sqlconnection = false; private int odbcNameCol = 0; private int UidCol = 0; private int PwdCol = 0; private int IpAddrCol = 0; private int IpPortCol = 0; private int ServerNameCol = 0; private int isActiveCol = 0; public TsmServers( Connection slConnection ) throws SQLException, ClassNotFoundException { slStatement = slConnection.createStatement(); slResultSet = slStatement.executeQuery( "SELECT * from odbcconnections"); Class.forName( ODBC_DRIVER ); sqlconnection = true; } public boolean nextConnection() throws SQLException, IllegalStateException { if ( !sqlconnection ) throw new IllegalStateException( "Call to nextTsmConnection() after last connection was returned."); while( slResultSet.next() ) { if ( odbcNameCol == 0 ) { odbcNameCol = slResultSet.findColumn("OdbcConnectionName"); UidCol = slResultSet.findColumn("Userid"); PwdCol = slResultSet.findColumn("Password"); IpAddrCol = slResultSet.findColumn("IpAddr"); IpPortCol = slResultSet.findColumn("IpPort"); ServerNameCol = slResultSet.findColumn("ServerName"); isActiveCol = slResultSet.findColumn("isActive"); } if (!slResultSet.getBoolean(isActiveCol)) // Is this server active? continue; // ignore if not. if ( tsmStatement != null ) { tsmStatement.close(); tsmConnection.close(); } tsmServerName = slResultSet.getString(ServerNameCol); String TsmOdbcConnectUrl = "jdbc:odbc:" + slResultSet.getObject(odbcNameCol) + ";UID=" + slResultSet.getObject(UidCol) + ";PWD=" + slResultSet.getObject(PwdCol) + ";TCPADDR=" + slResultSet.getObject(IpAddrCol) + ";TCPPORT=" + slResultSet.getObject(IpPortCol); tsmConnection = DriverManager.getConnection( TsmOdbcConnectUrl ); tsmStatement = tsmConnection.createStatement(); return true; } try { tsmStatement.close(); tsmConnection.close(); slStatement.close(); } catch( Exception e ) { e.printStackTrace(); System.exit(1); } sqlconnection = false; return false; } public Connection getTsmConnection() { return tsmConnection; } public Statement getTsmStatement() { return tsmStatement; } public String getTsmServerName() { return tsmServerName; } }