package mil.nga.giat.geowave.core.store.data.field.base; import mil.nga.giat.geowave.core.index.ByteArrayId; import mil.nga.giat.geowave.core.index.StringUtils; 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; public class StringSerializationProvider implements FieldSerializationProviderSpi<String> { @Override public FieldReader<String> getFieldReader() { return new StringReader(); } @Override public FieldWriter<Object, String> getFieldWriter() { return new StringWriter(); } protected static class StringReader implements FieldReader<String> { @Override public String readField( final byte[] fieldData ) { if ((fieldData == null) || (fieldData.length < 1)) { return null; } return StringUtils.stringFromBinary(fieldData); // for field serialization ensure UTF-8? // return new String( // fieldData, // StringUtils.UTF8_CHAR_SET); } } protected static class StringWriter implements FieldWriter<Object, String> { @Override public byte[] writeField( final String fieldValue ) { if (fieldValue == null) { return new byte[] {}; } return StringUtils.stringToBinary(fieldValue); // for field serialization ensure UTF-8? // return fieldValue.getBytes(StringUtils.UTF8_CHAR_SET); } @Override public byte[] getVisibility( final Object rowValue, final ByteArrayId fieldId, final String fieldValue ) { return new byte[] {}; } } }