package edu.washington.escience.myria.storage; import java.util.Objects; import org.joda.time.DateTime; import java.nio.ByteBuffer; import com.google.common.base.Preconditions; import edu.washington.escience.myria.Type; /** * A trivial wrapper to expose a single column of a {@link ReadableTable}. */ public final class ReadableSubColumn implements ReadableColumn { /** The wrapped {@link ReadableTable}. */ private final ReadableTable inner; /** The column in {@link #inner} exposed. */ private final int column; /** * Constructs a wrapper to present the specified column of the given table as a {@link ReadableColumn}. * * @param table the table to be wrapped * @param column which column this object represents */ public ReadableSubColumn(final ReadableTable table, final int column) { inner = Objects.requireNonNull(table, "inner"); this.column = Preconditions.checkElementIndex(column, table.getSchema().numColumns()); } @Override public Type getType() { return inner.getSchema().getColumnType(column); } @Override public int size() { return inner.numTuples(); } @Override public boolean getBoolean(final int row) { return inner.getBoolean(column, row); } @Override public DateTime getDateTime(final int row) { return inner.getDateTime(column, row); } @Override public double getDouble(final int row) { return inner.getDouble(column, row); } @Override public float getFloat(final int row) { return inner.getFloat(column, row); } @Override public int getInt(final int row) { return inner.getInt(column, row); } @Override public long getLong(final int row) { return inner.getLong(column, row); } @Override @Deprecated public Object getObject(final int row) { return inner.getObject(column, row); } @Override public String getString(final int row) { return inner.getString(column, row); } @Override public ByteBuffer getBlob(final int row) { return inner.getBlob(column, row); } }