Requirement
Build
NsDBBridge
import java.sql.*;
import java.util.*;
import java.io.*;
public class NsDBBridge
{
private String _driver = null;
private String _dburl = null;
private String _username = null;
private String _password = null;
private Connection _c = null;
private Statement _s = null;
public void disconnect()
{
try
{
_s.close();
_c.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return;
}
public NsBridgeDataRes search(String statement, String resultID)
{
NsBridgeDataRes dataRes = new NsBridgeDataRes(resultID);
NsNVPairs curNV = null;
try
{
ResultSet rs = _s.executeQuery(statement);
ResultSetMetaData rsmd = rs.getMetaData();
//
// We can print the col types as well
//
// PrintColumnTypes.printColTypes(rsmd);
// System.out.println("");
//
int numberOfColumns = rsmd.getColumnCount();
Vector colInfo = new Vector();
for (int i = 1; i <= numberOfColumns; i++)
{
String columnName = rsmd.getColumnName(i);
colInfo.add(columnName);
}
//
// Print the result content
//
while (rs.next())
{
curNV = new NsNVPairs();
for (int i = 1; i <= numberOfColumns; i++)
{
String columnValue = rs.getString(i);
// FIXME
// get primary key here in the first para later
if (i == 1)
curNV.setID(columnValue);
curNV.addStrNsPair((String)colInfo.elementAt(i-1), columnValue);
}
dataRes.add(curNV);
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return dataRes;
} // End of search
public NsDBBridge(String driver, String dburl, String username, String password)
{
_driver = driver;
_dburl = dburl;
_username = username;
_password = password;
//
// Load the driver
//
try
{
Class.forName(_driver);
_c = DriverManager.getConnection(_dburl, _username, _password);
_s = _c.createStatement();
}
catch (Exception e)
{
e.printStackTrace();
}
}
} // End of Class File
NsBridgeManager.java
import java.util.*;
// FIXME: Implement by all Bridge later on
interface Bridge
{
/**
* Get the name of the bridge
*/
public String getBridgeName();
/**
* Get the type of the bridge
*/
public String getBridgeType();
/**
* Get all user data
*/
public String getAllObjects();
}
/**
* Bridge Manager
*/
class NsBridgeManager
{
private Vector _bridgeList;
/**
* Constructor
*/
public NsBridgeManager()
{
_bridgeList = new Vector();
}
//
// Todo (Bridge)
// - Read the configuration info (NsBridgeConfInfo.xml)
// - Determine
// - How many bridges need to construct
// - For LDAP bridges, what is the host, port, filter, searchbase,
// username, password (if need to bind)
// - For DB bridges, what is the driver, db url, username, password
// - Construct LDAP bridge
// - Do
// - create ld connection object (LDAPConnection)
// - keep the object around
// - All detail of LDAP communication is in here
// - Construct DB bridge
// - Do
// - create db connection (Connection)
// - All detail of DB communication is in here
//
// Todo (Data Model) (Next homework)
// - Read the configuration info (NsDataConfInfo.xml)
// - Determine
// - Mapping of user data
// - Store mapping in internal data structure
// - Provides function for obtain all user data
// (Loop the bridges and get all user data)
}
NsTestDriver2
A test driver program that uses/tests all the above classes by:
Copyright 1996-2003 OpenLoop Computing. All rights reserved.