package mil.nga.giat.geowave.core.store.adapter;
import java.util.List;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.store.data.PersistentDataset;
import mil.nga.giat.geowave.core.store.data.PersistentValue;
import mil.nga.giat.geowave.core.store.data.field.FieldReader;
import mil.nga.giat.geowave.core.store.index.CommonIndexModel;
import mil.nga.giat.geowave.core.store.index.CommonIndexValue;
/**
* This is an implements of persistence encoding that also contains all of the
* extended data values used to form the native type supported by this adapter.
* It also contains information about the persisted object within a particular
* index such as the insertion ID in the index and the number of duplicates for
* this entry in the index, and is used when reading data from the index.
*/
public class IndexedAdapterPersistenceEncoding extends
AbstractAdapterPersistenceEncoding
{
public IndexedAdapterPersistenceEncoding(
final ByteArrayId adapterId,
final ByteArrayId dataId,
final ByteArrayId indexInsertionId,
final int duplicateCount,
final PersistentDataset<CommonIndexValue> commonData,
final PersistentDataset<byte[]> unknownData,
final PersistentDataset<Object> adapterExtendedData ) {
super(
adapterId,
dataId,
indexInsertionId,
duplicateCount,
commonData,
unknownData,
adapterExtendedData);
}
@Override
public void convertUnknownValues(
final DataAdapter<?> adapter,
final CommonIndexModel model ) {
final List<PersistentValue<byte[]>> unknownDataValues = getUnknownData().getValues();
for (final PersistentValue<byte[]> v : unknownDataValues) {
final FieldReader<Object> reader = adapter.getReader(v.getId());
final Object value = reader.readField(v.getValue());
adapterExtendedData.addValue(new PersistentValue<Object>(
v.getId(),
value));
}
}
}