package mil.nga.giat.geowave.datastore.accumulo.operations; import java.io.File; import java.util.ArrayList; import java.util.List; import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterException; import com.beust.jcommander.ParametersDelegate; import mil.nga.giat.geowave.core.cli.api.DefaultOperation; import mil.nga.giat.geowave.core.cli.api.OperationParams; import mil.nga.giat.geowave.core.cli.operations.config.options.ConfigOptions; import mil.nga.giat.geowave.core.store.operations.remote.options.DataStorePluginOptions; import mil.nga.giat.geowave.core.store.operations.remote.options.StoreLoader; import mil.nga.giat.geowave.datastore.accumulo.split.SplitCommandLineOptions; public abstract class AbstractSplitsCommand extends DefaultOperation { @Parameter(description = "<storename>") private List<String> parameters = new ArrayList<String>(); @ParametersDelegate protected SplitCommandLineOptions splitOptions = new SplitCommandLineOptions(); protected DataStorePluginOptions inputStoreOptions = null; public AbstractSplitsCommand() { } public void execute( OperationParams params ) throws Exception { // Ensure we have all the required arguments if (parameters.size() != 1) { throw new ParameterException( "Requires arguments: <storename>"); } String inputStoreName = parameters.get(0); // Config file File configFile = (File) params.getContext().get( ConfigOptions.PROPERTIES_FILE_CONTEXT); // Attempt to load input store. if (inputStoreOptions == null) { StoreLoader inputStoreLoader = new StoreLoader( inputStoreName); if (!inputStoreLoader.loadFromConfig(configFile)) { throw new ParameterException( "Cannot find store name: " + inputStoreLoader.getStoreName()); } inputStoreOptions = inputStoreLoader.getDataStorePlugin(); } doSplit(); } public abstract void doSplit() throws Exception; public List<String> getParameters() { return parameters; } public void setParameters( String storeName ) { this.parameters = new ArrayList<String>(); this.parameters.add(storeName); } public SplitCommandLineOptions getSplitOptions() { return splitOptions; } public void setSplitOptions( SplitCommandLineOptions splitOptions ) { this.splitOptions = splitOptions; } public DataStorePluginOptions getInputStoreOptions() { return inputStoreOptions; } public void setInputStoreOptions( DataStorePluginOptions inputStoreOptions ) { this.inputStoreOptions = inputStoreOptions; } }