package mil.nga.giat.geowave.core.store.operations.remote;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
import com.beust.jcommander.Parameters;
import mil.nga.giat.geowave.core.cli.annotations.GeowaveOperation;
import mil.nga.giat.geowave.core.cli.api.Command;
import mil.nga.giat.geowave.core.cli.api.OperationParams;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.store.adapter.DataAdapter;
import mil.nga.giat.geowave.core.store.adapter.statistics.DataStatisticsStore;
import mil.nga.giat.geowave.core.store.operations.remote.options.DataStorePluginOptions;
import mil.nga.giat.geowave.core.store.operations.remote.options.StatsCommandLineOptions;
@GeowaveOperation(name = "rmstat", parentOperation = RemoteSection.class)
@Parameters(commandDescription = "Remove a statistic from the remote store. You will be prompted with are you sure")
public class RemoveStatCommand extends
AbstractStatsCommand implements
Command
{
@Parameter(description = "<store name> <adapterId> <statId>")
private List<String> parameters = new ArrayList<String>();
private String statId = null;
@Override
public void execute(
OperationParams params ) {
// Ensure we have all the required arguments
if (parameters.size() != 3) {
throw new ParameterException(
"Requires arguments: <store name> <adapterId> <statId>");
}
statId = parameters.get(2);
super.run(
params,
parameters);
}
@Override
protected boolean performStatsCommand(
final DataStorePluginOptions storeOptions,
final DataAdapter<?> adapter,
final StatsCommandLineOptions statsOptions )
throws IOException {
// Remove the stat
DataStatisticsStore statStore = storeOptions.createDataStatisticsStore();
final String[] authorizations = getAuthorizations(statsOptions.getAuthorizations());
if (!statStore.removeStatistics(
adapter.getAdapterId(),
new ByteArrayId(
statId),
authorizations)) {
throw new RuntimeException(
"Unable to remove statistic: " + statId);
}
return true;
}
}