package mil.nga.giat.geowave.adapter.vector.ingest; import org.opengis.feature.simple.SimpleFeature; import mil.nga.giat.geowave.core.ingest.avro.AvroFormatPlugin; import mil.nga.giat.geowave.core.ingest.hdfs.mapreduce.IngestFromHdfsPlugin; import mil.nga.giat.geowave.core.ingest.local.LocalFileIngestPlugin; import mil.nga.giat.geowave.core.ingest.spi.IngestFormatOptionProvider; import mil.nga.giat.geowave.core.ingest.spi.IngestFormatPluginProviderSpi; abstract public class AbstractSimpleFeatureIngestFormat<I> implements IngestFormatPluginProviderSpi<I, SimpleFeature> { protected final SimpleFeatureIngestOptions myOptions = new SimpleFeatureIngestOptions(); private AbstractSimpleFeatureIngestPlugin<I> getInstance( IngestFormatOptionProvider options ) { AbstractSimpleFeatureIngestPlugin<I> myInstance = newPluginInstance(options); myInstance.setFilterProvider(myOptions.getCqlFilterOptionProvider()); myInstance.setTypeNameProvider(myOptions.getTypeNameOptionProvider()); myInstance.setSerializationFormatProvider(myOptions.getSerializationFormatOptionProvider()); return myInstance; } abstract protected AbstractSimpleFeatureIngestPlugin<I> newPluginInstance( IngestFormatOptionProvider options ); @Override public AvroFormatPlugin<I, SimpleFeature> createAvroFormatPlugin( IngestFormatOptionProvider options ) { return getInstance(options); } @Override public IngestFromHdfsPlugin<I, SimpleFeature> createIngestFromHdfsPlugin( IngestFormatOptionProvider options ) { return getInstance(options); } @Override public LocalFileIngestPlugin<SimpleFeature> createLocalFileIngestPlugin( IngestFormatOptionProvider options ) { return getInstance(options); } /** * Create an options instance. We may want to change this code from a * singleton instance to actually allow multiple instances per format. */ @Override public IngestFormatOptionProvider createOptionsInstances() { myOptions.setPluginOptions(internalGetIngestFormatOptionProviders()); return myOptions; } protected Object internalGetIngestFormatOptionProviders() { return null; } }