package mil.nga.giat.geowave.adapter.vector;
import java.util.ArrayList;
import java.util.List;
import mil.nga.giat.geowave.adapter.vector.plugin.visibility.JsonDefinitionColumnVisibilityManagement;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.store.adapter.NativeFieldHandler;
import mil.nga.giat.geowave.core.store.adapter.NativeFieldHandler.RowBuilder;
import mil.nga.giat.geowave.core.store.adapter.PersistentIndexFieldHandler;
import mil.nga.giat.geowave.core.store.data.field.FieldReader;
import mil.nga.giat.geowave.core.store.data.field.FieldVisibilityHandler;
import mil.nga.giat.geowave.core.store.data.field.FieldWriter;
import mil.nga.giat.geowave.core.store.data.visibility.VisibilityManagement;
import mil.nga.giat.geowave.core.store.index.CommonIndexValue;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
/**
*/
public class AvroFeatureDataAdapter extends
FeatureDataAdapter
{
protected AvroFeatureDataAdapter() {}
public AvroFeatureDataAdapter(
final SimpleFeatureType type ) {
super(
type,
new ArrayList<PersistentIndexFieldHandler<SimpleFeature, ? extends CommonIndexValue, Object>>());
}
public AvroFeatureDataAdapter(
final SimpleFeatureType type,
final VisibilityManagement<SimpleFeature> visibilityManagement ) {
super(
type,
new ArrayList<PersistentIndexFieldHandler<SimpleFeature, ? extends CommonIndexValue, Object>>(),
null,
visibilityManagement);
}
public AvroFeatureDataAdapter(
final SimpleFeatureType type,
final List<PersistentIndexFieldHandler<SimpleFeature, ? extends CommonIndexValue, Object>> customIndexHandlers ) {
super(
type,
customIndexHandlers);
}
public AvroFeatureDataAdapter(
final SimpleFeatureType type,
final FieldVisibilityHandler<SimpleFeature, Object> fieldVisiblityHandler ) {
super(
type,
fieldVisiblityHandler);
}
@Override
protected List<NativeFieldHandler<SimpleFeature, Object>> getFieldHandlersFromFeatureType(
final SimpleFeatureType type ) {
final List<NativeFieldHandler<SimpleFeature, Object>> nativeHandlers = new ArrayList<NativeFieldHandler<SimpleFeature, Object>>(
1);
nativeHandlers.add(new AvroFeatureAttributeHandler());
return nativeHandlers;
}
@Override
public FieldReader<Object> getReader(
final ByteArrayId fieldId ) {
return (FieldReader<Object>) new AvroFeatureReader();
}
@Override
public FieldWriter<SimpleFeature, Object> getWriter(
final ByteArrayId fieldId ) {
return (FieldWriter<SimpleFeature, Object>) new AvroFeatureWriter();
}
@Override
protected RowBuilder<SimpleFeature, Object> newBuilder() {
return new AvroAttributeRowBuilder();
}
}