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()); } } }