// Path: src/java/sizzle/io/EmitKey.java
// public class EmitKey implements WritableComparable<EmitKey>, RawComparator<EmitKey>, Serializable {
// 	private static final long serialVersionUID = -6302400030199718829L;
// 
// 	private String index;
// 	private String name;
// 
// 	/**
// 	 * Construct an EmitKey.
// 	 * 
// 	 */
// 	public EmitKey() {
// 		// default constructor for Writable
// 	}
// 
// 	/**
// 	 * Construct an EmitKey.
// 	 * 
// 	 * @param name
// 	 *            A {@link String} containing the name of the table this was
// 	 *            emitted to
// 	 * 
// 	 */
// 	public EmitKey(final String name) {
// 		this("[]", name);
// 	}
// 
// 	/**
// 	 * Construct an EmitKey.
// 	 * 
// 	 * @param index
// 	 *            A {@link String} containing the index into the table this was
// 	 *            emitted to
// 	 * 
// 	 * @param name
// 	 *            A {@link String} containing the name of the table this was
// 	 *            emitted to
// 	 * 
// 	 */
// 	public EmitKey(final String index, final String name) {
// 		if (index.equals(""))
// 			throw new RuntimeException();
// 
// 		this.index = index;
// 		this.name = name;
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public void readFields(final DataInput in) throws IOException {
// 		this.index = Text.readString(in);
// 		this.name = Text.readString(in);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public void write(final DataOutput out) throws IOException {
// 		Text.writeString(out, this.index);
// 		Text.writeString(out, this.name);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int compare(final byte[] b1, final int s1, final int l1, final byte[] b2, final int s2, final int l2) {
// 		return WritableComparator.compareBytes(b1, s1, l1, b2, s2, l2);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int compare(final EmitKey k1, final EmitKey k2) {
// 		return k1.compareTo(k2);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int compareTo(final EmitKey that) {
// 		// compare the names
// 		final int c = this.name.compareTo(that.name);
// 
// 		// if the names are different
// 		if (c != 0)
// 			// return that difference
// 			return c;
// 		else
// 			// otherwise compare the indices
// 			return this.index.compareTo(that.index);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + (this.index == null ? 0 : this.index.hashCode());
// 		result = prime * result + (this.name == null ? 0 : this.name.hashCode());
// 		return result;
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public boolean equals(final Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (this.getClass() != obj.getClass())
// 			return false;
// 		final EmitKey other = (EmitKey) obj;
// 		if (this.index == null) {
// 			if (other.index != null)
// 				return false;
// 		} else if (!this.index.equals(other.index))
// 			return false;
// 		if (this.name == null) {
// 			if (other.name != null)
// 				return false;
// 		} else if (!this.name.equals(other.name))
// 			return false;
// 		return true;
// 	}
// 
// 	/**
// 	 * Get the index into the table this key was emitted to.
// 	 * 
// 	 * @return A {@link String} containing the index into the table this key was
// 	 *         emitted to
// 	 */
// 	public String getIndex() {
// 		return this.index;
// 	}
// 
// 	/**
// 	 * Get the index into the table this key was emitted to.
// 	 * 
// 	 * @param index
// 	 *            A {@link String} containing the index into the table this key
// 	 *            was emitted to
// 	 */
// 	public void setIndex(final String index) {
// 		this.index = index;
// 	}
// 
// 	/**
// 	 * Get the name of the table this key was emitted to.
// 	 * 
// 	 * @return A {@link String} containing the name of the table this key was
// 	 *         emitted to
// 	 */
// 	public String getName() {
// 		return this.name;
// 	}
// 
// 	/**
// 	 * Set the name of the table this key was emitted to.
// 	 * 
// 	 * @param name
// 	 *            A {@link String} containing the name of the table this key was
// 	 *            emitted to
// 	 */
// 	public void setName(final String name) {
// 		this.name = name;
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public String toString() {
// 		return this.name + this.index;
// 	}
// }


import java.io.IOException;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer.Context;
import sizzle.io.EmitKey;
package sizzle.aggregators;




/**
 * A container for one or more Sizzle aggregators.
 * 
 * @author anthonyu
 * 
 */
public class Table {
	private final Aggregator[] aggregators;
	@SuppressWarnings("rawtypes")
	private Context context;
// Path: src/java/sizzle/io/EmitKey.java
// public class EmitKey implements WritableComparable<EmitKey>, RawComparator<EmitKey>, Serializable {
// 	private static final long serialVersionUID = -6302400030199718829L;
// 
// 	private String index;
// 	private String name;
// 
// 	/**
// 	 * Construct an EmitKey.
// 	 * 
// 	 */
// 	public EmitKey() {
// 		// default constructor for Writable
// 	}
// 
// 	/**
// 	 * Construct an EmitKey.
// 	 * 
// 	 * @param name
// 	 *            A {@link String} containing the name of the table this was
// 	 *            emitted to
// 	 * 
// 	 */
// 	public EmitKey(final String name) {
// 		this("[]", name);
// 	}
// 
// 	/**
// 	 * Construct an EmitKey.
// 	 * 
// 	 * @param index
// 	 *            A {@link String} containing the index into the table this was
// 	 *            emitted to
// 	 * 
// 	 * @param name
// 	 *            A {@link String} containing the name of the table this was
// 	 *            emitted to
// 	 * 
// 	 */
// 	public EmitKey(final String index, final String name) {
// 		if (index.equals(""))
// 			throw new RuntimeException();
// 
// 		this.index = index;
// 		this.name = name;
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public void readFields(final DataInput in) throws IOException {
// 		this.index = Text.readString(in);
// 		this.name = Text.readString(in);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public void write(final DataOutput out) throws IOException {
// 		Text.writeString(out, this.index);
// 		Text.writeString(out, this.name);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int compare(final byte[] b1, final int s1, final int l1, final byte[] b2, final int s2, final int l2) {
// 		return WritableComparator.compareBytes(b1, s1, l1, b2, s2, l2);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int compare(final EmitKey k1, final EmitKey k2) {
// 		return k1.compareTo(k2);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int compareTo(final EmitKey that) {
// 		// compare the names
// 		final int c = this.name.compareTo(that.name);
// 
// 		// if the names are different
// 		if (c != 0)
// 			// return that difference
// 			return c;
// 		else
// 			// otherwise compare the indices
// 			return this.index.compareTo(that.index);
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + (this.index == null ? 0 : this.index.hashCode());
// 		result = prime * result + (this.name == null ? 0 : this.name.hashCode());
// 		return result;
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public boolean equals(final Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (this.getClass() != obj.getClass())
// 			return false;
// 		final EmitKey other = (EmitKey) obj;
// 		if (this.index == null) {
// 			if (other.index != null)
// 				return false;
// 		} else if (!this.index.equals(other.index))
// 			return false;
// 		if (this.name == null) {
// 			if (other.name != null)
// 				return false;
// 		} else if (!this.name.equals(other.name))
// 			return false;
// 		return true;
// 	}
// 
// 	/**
// 	 * Get the index into the table this key was emitted to.
// 	 * 
// 	 * @return A {@link String} containing the index into the table this key was
// 	 *         emitted to
// 	 */
// 	public String getIndex() {
// 		return this.index;
// 	}
// 
// 	/**
// 	 * Get the index into the table this key was emitted to.
// 	 * 
// 	 * @param index
// 	 *            A {@link String} containing the index into the table this key
// 	 *            was emitted to
// 	 */
// 	public void setIndex(final String index) {
// 		this.index = index;
// 	}
// 
// 	/**
// 	 * Get the name of the table this key was emitted to.
// 	 * 
// 	 * @return A {@link String} containing the name of the table this key was
// 	 *         emitted to
// 	 */
// 	public String getName() {
// 		return this.name;
// 	}
// 
// 	/**
// 	 * Set the name of the table this key was emitted to.
// 	 * 
// 	 * @param name
// 	 *            A {@link String} containing the name of the table this key was
// 	 *            emitted to
// 	 */
// 	public void setName(final String name) {
// 		this.name = name;
// 	}
// 
// 	/** {@inheritDoc} */
// 	@Override
// 	public String toString() {
// 		return this.name + this.index;
// 	}
// }


// Path: src/java/sizzle/aggregators/Table.java
import java.io.IOException;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer.Context;
import sizzle.io.EmitKey;

package sizzle.aggregators;




/**
 * A container for one or more Sizzle aggregators.
 * 
 * @author anthonyu
 * 
 */
public class Table {
	private final Aggregator[] aggregators;
	@SuppressWarnings("rawtypes")
	private Context context;
	private EmitKey key;