package net.sourceforge.mayfly.datastore.types; import net.sourceforge.mayfly.datastore.BinaryCell; import net.sourceforge.mayfly.datastore.Cell; import net.sourceforge.mayfly.evaluation.Value; public class BinaryDataType extends DataType { private static final int NO_SIZE = -1; private final long size; public BinaryDataType() { this(NO_SIZE); } public BinaryDataType(long size) { this.size = size; } @Override public Cell coerce(Value value, String columnName) { return genericCoerce(value, columnName, "binary", BinaryCell.class); } @Override public String dumpName() { if (hasSize()) { return "BLOB(" + size() + ")"; } else { return "BLOB"; } } private long size() { if (hasSize()) { return size; } else { throw new IllegalStateException("Asked for size without one"); } } private boolean hasSize() { return size != NO_SIZE; } }