package mil.nga.giat.geowave.core.store.data.field.base;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.store.data.field.FieldReader;
import mil.nga.giat.geowave.core.store.data.field.FieldSerializationProviderSpi;
import mil.nga.giat.geowave.core.store.data.field.FieldWriter;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
public class BooleanSerializationProvider implements
FieldSerializationProviderSpi<Boolean>
{
@Override
public FieldReader<Boolean> getFieldReader() {
return new BooleanReader();
}
@Override
public FieldWriter<Object, Boolean> getFieldWriter() {
return new BooleanWriter();
}
private static class BooleanReader implements
FieldReader<Boolean>
{
@SuppressFBWarnings(value = {
"NP_BOOLEAN_RETURN_NULL"
}, justification = "matches pattern of other read* methods")
@Override
public Boolean readField(
final byte[] fieldData ) {
if ((fieldData == null) || (fieldData.length < 1)) {
return null;
}
return fieldData[0] > 0;
}
}
private static class BooleanWriter implements
FieldWriter<Object, Boolean>
{
@Override
public byte[] getVisibility(
final Object rowValue,
final ByteArrayId fieldId,
final Boolean fieldValue ) {
return new byte[] {};
}
@Override
public byte[] writeField(
final Boolean fieldValue ) {
return new byte[] {
((fieldValue == null) || !fieldValue) ? (byte) 0 : (byte) 1
};
}
}
}