package edu.brown.catalog.special; import java.util.Collection; import java.util.Iterator; import org.voltdb.catalog.Catalog; import org.voltdb.catalog.CatalogType; import org.voltdb.catalog.Column; /** * @author pavlo */ public class MultiColumn extends Column implements MultiAttributeCatalogType<Column> { public static final String PREFIX = "*MultiColumn*"; private final InnerMultiAttributeCatalogType<Column> inner; /** * <B>THIS SHOULD NOT BE CALLED DIRECTLY.</B> * Use MultiColumn.get() * @param attributes */ @SuppressWarnings("unchecked") public MultiColumn(Collection<? extends Column> attributes) { this.inner = new InnerMultiAttributeCatalogType<Column>(MultiColumn.class, (Collection<Column>) attributes); } public static MultiColumn get(Column... cols) { return InnerMultiAttributeCatalogType.get(MultiColumn.class, cols); } @Override public Collection<Column> getAttributes() { return this.inner.getAttributes(); } @Override public Iterator<Column> iterator() { return this.inner.iterator(); } @Override public String getPrefix() { return (PREFIX); } @Override public int size() { return this.inner.size(); } @Override public Column get(int idx) { return (Column) this.inner.get(idx); } @SuppressWarnings("unchecked") @Override public <U extends CatalogType> U getParent() { return (U) this.inner.getParent(); } @Override public Catalog getCatalog() { return this.inner.getCatalog(); } @Override public String getName() { return this.inner.getTypeName(); } @Override public String getTypeName() { return this.inner.getTypeName(); } @Override public int hashCode() { return this.inner.hashCode(); } @Override public boolean equals(Object obj) { if (obj instanceof MultiColumn == false) return (false); return this.inner.equals(((MultiColumn) obj).inner); } @Override public boolean add(Column e) { return this.inner.add(e); } @Override public boolean addAll(Collection<? extends Column> c) { return this.inner.addAll(c); } @Override public void clear() { this.inner.clear(); } @Override public boolean contains(Object o) { return this.inner.contains(o); } @Override public boolean containsAll(Collection<?> c) { return this.inner.containsAll(c); } @Override public boolean isEmpty() { return this.inner.isEmpty(); } @Override public boolean remove(Object o) { return this.inner.remove(o); } @Override public boolean removeAll(Collection<?> c) { return this.inner.removeAll(c); } @Override public boolean retainAll(Collection<?> c) { return this.inner.retainAll(c); } @Override public Object[] toArray() { return this.inner.toArray(); } @Override public <T> T[] toArray(T[] a) { return this.inner.toArray(a); } }