package mil.nga.giat.geowave.analytic.param; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.mapreduce.JobContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import mil.nga.giat.geowave.analytic.PropertyManagement; import mil.nga.giat.geowave.analytic.store.PersistableStore; import mil.nga.giat.geowave.core.store.operations.remote.options.DataStorePluginOptions; import mil.nga.giat.geowave.mapreduce.output.GeoWaveOutputFormat; public class OutputStoreParameterHelper implements ParameterHelper<PersistableStore> { /** * */ private static final long serialVersionUID = 1L; final static Logger LOGGER = LoggerFactory.getLogger(OutputStoreParameterHelper.class); @Override public Class<PersistableStore> getBaseClass() { return PersistableStore.class; } @Override public void setValue( final Configuration config, final Class<?> scope, final PersistableStore value ) { final DataStorePluginOptions options = value.getDataStoreOptions(); GeoWaveOutputFormat.setStoreOptions( config, options); } @Override public PersistableStore getValue( final JobContext context, final Class<?> scope, final PersistableStore defaultValue ) { final DataStorePluginOptions pluginOptions = GeoWaveOutputFormat.getStoreOptions(context); if (pluginOptions != null) { return new PersistableStore( pluginOptions); } else { return defaultValue; } } @Override public PersistableStore getValue( final PropertyManagement propertyManagement ) { try { return (PersistableStore) propertyManagement.getProperty(StoreParameters.StoreParam.OUTPUT_STORE); } catch (final Exception e) { LOGGER.error( "Unable to deserialize data store", e); return null; } } @Override public void setValue( final PropertyManagement propertyManagement, final PersistableStore value ) { propertyManagement.store( StoreParameters.StoreParam.OUTPUT_STORE, value); } }