package edu.washington.escience.myria.column.mutable;
import java.io.Serializable;
import javax.annotation.Nonnull;
import org.joda.time.DateTime;
import java.nio.ByteBuffer;
import edu.washington.escience.myria.Type;
import edu.washington.escience.myria.column.Column;
import edu.washington.escience.myria.storage.ReadableColumn;
import edu.washington.escience.myria.storage.ReplaceableColumn;
/**
* A mutable column of a batch of tuples.
*
* @param <T> type of the objects in this column.
*
*/
public abstract class MutableColumn<T extends Comparable<?>>
implements Cloneable, ReadableColumn, ReplaceableColumn, Serializable {
/** Required for Java serialization. */
private static final long serialVersionUID = 1L;
@Override
public boolean getBoolean(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public DateTime getDateTime(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public double getDouble(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public float getFloat(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public int getInt(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public long getLong(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public ByteBuffer getBlob(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Deprecated
@Override
public abstract T getObject(int row);
@Override
public String getString(final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public abstract Type getType();
@Override
public abstract int size();
@Override
public void replaceBoolean(final boolean value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public void replaceDateTime(@Nonnull final DateTime value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public void replaceDouble(final double value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public void replaceFloat(final float value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public void replaceInt(final int value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public void replaceLong(final long value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public void replaceString(@Nonnull final String value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
@Override
public void replaceBlob(@Nonnull final ByteBuffer value, final int row) {
throw new UnsupportedOperationException(getClass().getName());
}
/**
* return the column representation of this mutable column. It copies data.
*
* @return the column representation of this mutable column.
*/
public abstract Column<T> toColumn();
@Override
public abstract MutableColumn<T> clone();
}