CreateOrDropConfiguration.java

package edu.hawaii.ics.yucheng;

import java.util.ArrayList;
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 creating and droping tables on this
 * distributed system.
 * 
 * @author     Cheng Jade
 * @assignment ICS 421 Assignment 4
 * @date       Mar 22, 2010
 * @bugs       None
 */
public class CreateOrDropConfiguration {
    final public ConfigurationNode catalog;
    final public int nodeNumber;
    final public ArrayList<ConfigurationNode> nodes = new ArrayList<ConfigurationNode>();
    
    /**
     * return a string with class data.
     */
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("- catalog:\n" + this.catalog);
        builder.append("\n- node number: " + this.nodeNumber);
        builder.append("\n- relevant nodes:");
        for (ConfigurationNode node : this.nodes)
            builder.append("\n  node: \n" + node);
        return builder.toString();
    }
    
    /**
     * initialize a instance of this object
     */
    public CreateOrDropConfiguration(
            final Properties properties,
            ConfigurationNode catalog) throws ProgramException{
        this.catalog = catalog;
        try {
            this.nodeNumber = Integer.parseInt(properties.getProperty("numnodes"));
            for (int i = 1; i <= this.nodeNumber; i++) {
                final String name = "node" + i;
                nodes.add(new ConfigurationNode(properties, name));
            }
        } catch (final Exception e) {
            throw new ProgramException("Invalid Configuration, " + e.getMessage());
        }
    }
}
Valid HTML 4.01 Valid CSS