package edu.hawaii.ics.yucheng;
import java.util.Properties;
/**
* An immutable class that contains the configuration information for a cluster
* of nodes and a catalog. They are parsed from the 'clustercfg' file, and works
* specifically as the configuration for executing select and join statements on
* this distributed system.
*
* @author Cheng Jade
* @assignment ICS 421 Project
* @date Mar 19, 2010
* @bugs None
*/
public class SelectOrJoinConfiguration {
// The catalog node configuration
public final ConfigurationNode catalog;
// The local node configuration
public final ConfigurationNode localNode;
/**
* return a string with class data.
*/
@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
builder.append("- catalog:\n" + this.catalog);
builder.append("\n- local node:\n " + this.localNode);
return builder.toString();
}
/**
* initialize an instance of this object
*/
public SelectOrJoinConfiguration(final Properties properties, final ConfigurationNode catalog) throws ProgramException {
// Throw an exception if the specified properties is null.
if (null == properties)
throw new NullPointerException("properties");
this.catalog = catalog;
ConfigurationNode tryLocalNode;
try {
tryLocalNode = new ConfigurationNode(properties, "localnode");
} catch (final ProgramException e) {
tryLocalNode = catalog;
}
this.localNode = tryLocalNode;
}
}