package mil.nga.giat.geowave.core.geotime.store.dimension;
import mil.nga.giat.geowave.core.geotime.store.dimension.Time.TimeRange;
import mil.nga.giat.geowave.core.geotime.store.dimension.Time.Timestamp;
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.FieldWriter;
/**
* This adapter can be used for reading and writing Time fields within GeoWave
* and enables a temporal field definition.
*
*/
public class TimeAdapter implements
FieldReader<Time>,
FieldWriter<Object, Time>
{
public TimeAdapter() {}
@Override
public byte[] writeField(
final Time time ) {
return time.toBinary();
}
@Override
public Time readField(
final byte[] bytes ) {
Time retVal;
// this is less generic than using reflection but essential for
// performance
if (bytes.length > 8) {
// it must be a time range
retVal = new TimeRange();
}
else {
// it must be a timestamp
retVal = new Timestamp();
}
retVal.fromBinary(bytes);
return retVal;
}
@Override
public byte[] getVisibility(
final Object rowValue,
final ByteArrayId fieldId,
final Time time ) {
return time.getVisibility();
}
}