package hdgl.db.query.condition;
import hdgl.db.exception.HdglException;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.Writable;
public abstract class AbstractValue implements Writable {
@Override
public abstract int hashCode();
@Override
public abstract boolean equals(Object obj);
public abstract boolean equalsTo(byte[] data);
public abstract boolean lessThan(byte[] data);
public abstract boolean largerThanOrEqualsTo(byte[] data);
public abstract boolean lessThanOrEqualsTo(byte[] data);
public abstract boolean largerThan(byte[] data);
public abstract boolean lessThan(AbstractValue obj);
public abstract boolean largerThan(AbstractValue obj);
public boolean lessThanOrEqualTo(AbstractValue value){
return lessThan(value)||equals(value);
}
public boolean largerThanOrEqualTo(AbstractValue value){
return largerThan(value)||equals(value);
}
public abstract void readTail(DataInput in) throws IOException;
public static void writeValue(DataOutput out, AbstractValue value) throws IOException{
value.write(out);
}
@Override
public void readFields(DataInput in) throws IOException {
in.readByte();
readTail(in);
}
public static AbstractValue readValue(DataInput in) throws IOException{
byte flag = in.readByte();
AbstractValue value;
switch (flag) {
case FloatNumberValue.FLAG_BYTE:
value = new FloatNumberValue();
break;
case IntNumberValue.FLAG_BYTE:
value = new IntNumberValue();
break;
case StringValue.FLAG_BYTE:
value = new StringValue();
break;
default:
throw new HdglException("Unsupported value type: " + flag);
}
value.readTail(in);
return value;
}
}