package org.ow2.mind.cli; import java.util.HashMap; import java.util.Map; /** * An option that associate name to value. */ public class CmdProperties extends CmdOption { protected final String argNameDesc; protected final String argValueDesc; /** * @param id the identifier of this option. * @param shortName the short name of the option. Must have one and only one * character. * @param description the description of the option (used to generate help * message). * @param argNameDesc the description of the argument name (used to generate * help message). * @param argValueDesc the description of the argument value (used to generate * help message). */ public CmdProperties(final String id, final String shortName, final String description, final String argNameDesc, final String argValueDesc) { super(id, shortName, null, description + ". This option may be specified several times."); this.argNameDesc = argNameDesc; this.argValueDesc = argValueDesc; } @Override public String getPrototype() { return "-" + shortName + argNameDesc + "=" + argValueDesc; } @SuppressWarnings("unchecked") void setValue(final CommandLine commandLine, final String name, final String value) throws InvalidCommandLineException { if (name == null || value == null) return; Map<String, String> values = (Map<String, String>) commandLine .getOptionValue(this); if (values == null) { values = new HashMap<String, String>(); commandLine.setOptionValue(this, values); } values.put(name, value); } /** * Returns the value of this option in the given command-line. * * @param commandLine a command-line. * @return A map associating name to value, or <code>null</code> if this * option is not specified on the given command line. */ @SuppressWarnings("unchecked") public Map<String, String> getValue(final CommandLine commandLine) { return (Map<String, String>) commandLine.getOptionValue(this); } }