package mil.nga.giat.geowave.core.store.operations.config; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Properties; import java.util.Set; import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterException; 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; /** * Common code for removing an entry from the properties file. */ public abstract class AbstractRemoveCommand extends DefaultOperation { @Parameter(description = "<name>", required = true, arity = 1) private List<String> parameters = new ArrayList<String>(); public String getEntryName() { if (parameters.size() < 1) { throw new ParameterException( "Must specify entry name to delete"); } return parameters.get( 0).trim(); } public void execute( OperationParams params, String pattern ) { Properties existingProps = getGeoWaveConfigProperties(params); // Find properties to remove Set<String> keysToRemove = new HashSet<String>(); for (String key : existingProps.stringPropertyNames()) { if (key.startsWith(pattern)) { keysToRemove.add(key); } } // Remove each property. for (String key : keysToRemove) { existingProps.remove(key); } // Write properties file ConfigOptions.writeProperties( getGeoWaveConfigFile(params), existingProps); } public void setEntryName( String entryName ) { this.parameters = new ArrayList<String>(); this.parameters.add(entryName); } }