Requirement
Build the following:
NsLDAPBridge
import netscape.ldap.*;
import java.util.*;
/**
* Bridge for LDAP (tested on Netscape)
*/
public class NsLDAPBridge
{
// Variables
LDAPConnection _ld = null;
String _hostName = null;
String _searchFilter = null;
String _searchBase = null;
int _portNumber = 389;
LDAPSearchConstraints _cons = null;
/**
* Search the LDAP directory
*/
// This should return the common search object we want
public NsBridgeDataRes search(String curSearchFilter, String resultID)
{
} // End of search
/**
* Disconnect the bridge from LDAP server
*/
public void disconnect()
{
// Done, so disconnect
}
/**
* Constructor
*/
public NsLDAPBridge( String hostName,
String portNumber,
String searchBase,
String searchFilter)
{
} // End of constructor
} // End of class NsLDAPBridge
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)
}
NsBridgeDataRes.java
import java.util.*;
import java.io.*;
public class NsBridgeDataRes
{
private String _resultName = null;
// Hashtable cannot do duplicate correctly ... changing
// FIXME: Change to something faster later, e.g. B+ tree
// private Hashtable _resultStore = null;
private Vector _resultStore = null;
public NsBridgeDataRes (String name)
{
_resultName = name;
_resultStore = new Vector();
}
public void add(NsNVPairs nvp)
{
_resultStore.add(nvp);
}
public String toString()
{
// FIXME: We might run into some problem if the key is duplicate Hashtable ...
/*
Enumeration en = _resultStore.elements();
NsNVPairs mypairs;
String str = new String();
str = str.concat("Result Set ID [" + _resultName + "]\n");
while(en.hasMoreElements())
{
mypairs = (NsNVPairs)en.nextElement();
str = str.concat(mypairs.toString());
str = str.concat("\n");
}
*/
String str = new String();
for (int i=0; i<_resultStore.size(); i++)
{
str = str.concat(((NsNVPairs) _resultStore.elementAt(i)).toString());
str = str.concat("\n");
}
return str;
}
} // End of class BridgeDataRes
NsTestDriver
A test driver program that uses/tests all the above classes by:
Copyright 1996-2003 OpenLoop Computing. All rights reserved.