package mil.nga.giat.geowave.core.index.lexicoder;
import com.google.common.primitives.Ints;
/**
* A lexicoder for signed integers (in the range from Integer.MIN_VALUE to
* Integer.MAX_VALUE). Does an exclusive or on the most significant bit to
* invert the sign, so that lexicographic ordering of the byte arrays matches
* the natural order of the numbers.
*
* See Apache Accumulo
* (org.apache.accumulo.core.client.lexicoder.IntegerLexicoder)
*/
public class IntegerLexicoder implements
NumberLexicoder<Integer>
{
protected IntegerLexicoder() {}
@Override
public byte[] toByteArray(
final Integer value ) {
return Ints.toByteArray(value ^ 0x80000000);
}
@Override
public Integer fromByteArray(
final byte[] bytes ) {
final int value = Ints.fromByteArray(bytes);
return value ^ 0x80000000;
}
@Override
public Integer getMinimumValue() {
return Integer.MIN_VALUE;
}
@Override
public Integer getMaximumValue() {
return Integer.MAX_VALUE;
}
}