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;
}
}