package mil.nga.giat.geowave.core.geotime.store.dimension;
import mil.nga.giat.geowave.core.geotime.GeometryUtils;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.index.ByteArrayUtils;
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.FieldWriter;
/**
* This adapter can be used for reading and writing Geometry fields within
* GeoWave. The GeometryWrapper wraps JTS geometries with a visibility tag. This
* enables spatial field definitions that can use JTS geometries.
*
*/
public class GeometryAdapter implements
FieldReader<GeometryWrapper>,
FieldWriter<Object, GeometryWrapper>
{
public final static ByteArrayId DEFAULT_GEOMETRY_FIELD_ID = new ByteArrayId(
ByteArrayUtils.combineArrays(
StringUtils.stringToBinary("geom"),
new byte[] {
0,
0
}));
public GeometryAdapter() {}
@Override
public byte[] writeField(
final GeometryWrapper geometry ) {
return GeometryUtils.geometryToBinary(geometry.getGeometry());
}
@Override
public GeometryWrapper readField(
final byte[] fieldData ) {
return new GeometryWrapper(
GeometryUtils.geometryFromBinary(fieldData));
}
@Override
public byte[] getVisibility(
final Object rowValue,
final ByteArrayId fieldId,
final GeometryWrapper geometry ) {
return geometry.getVisibility();
}
}