package context.arch.util;
import context.arch.comm.DataObject;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Vector;
/**
* This class maintains a list of configuration objects.
*
* @see context.arch.util.ConfigObject
*/
public class ConfigObjects extends Hashtable<String, ConfigObject> {
private static final long serialVersionUID = -530097038134911072L;
/**
* Tag for component id
*/
public static final String ID = "ID";
/**
* Tag for component hostname
*/
public static final String HOSTNAME = "HOST";
/**
* Tag for component port
*/
public static final String PORT = "PORT";
/**
* Tag for component type
*/
public static final String TYPE = "TYPE";
/**
* Basic empty constructor
*/
public ConfigObjects() {
super();
}
/**
* Constructor that creates a ConfigObjects object from a
* DataObject.
*
* @param data DataObject containing configuration information
*/
public ConfigObjects(DataObject data) {
super();
Vector<DataObject> v = data.getChildren();
for (int i=0; i<v.size(); i++) {
DataObject d = (DataObject)v.elementAt(i);
String id = (String)d.getDataObjectFirstValue(ID);
String host = (String)d.getDataObjectFirstValue(HOSTNAME);
String port = (String)d.getDataObjectFirstValue(PORT);
String type = (String)d.getDataObjectFirstValue(TYPE);
addConfigObject(new ConfigObject(id,host,port,type));
}
}
/**
* Adds a configuration object to the list
*
* @param obj Configuration object to add
*/
public synchronized void addConfigObject(ConfigObject obj) {
put(obj.getId(), obj);
}
/**
* Retrieves a configuation object from the component list
*
* @param id Id to use to retrieve the configuration object
* @return ConfigObject object with the corresponding id
*/
public synchronized ConfigObject getConfigObject(String id) {
return (ConfigObject)get(id);
}
/**
* Returns an enumeration of the configuration objects
*
* @return Enumeration of the configuration objects
*/
public synchronized Enumeration<ConfigObject> getEnumeration() {
return elements();
}
/**
* Returns a list of all the configuration objects with
* the given type
*
* @param type Type of configuration object to match
* @return ConfigObjects object containing objects with the given type
*/
public ConfigObjects getObjectsType(String type) {
ConfigObjects objects = new ConfigObjects();
for (Enumeration<ConfigObject> e = elements(); e.hasMoreElements();) {
ConfigObject co = (ConfigObject) e.nextElement();
if (type.equals(co.getType())) {
objects.addConfigObject(co);
}
}
return objects;
}
}