package org.ow2.mind.cli; import java.io.File; import java.util.ArrayList; import java.util.List; /** * An option that have a value and that may be specified several time on a * command-line. The resulting option value is the concatenation of the values * of each occurrence of this option separated by {@link File#pathSeparator}. */ public class CmdPathOption extends CmdAppendOption { /** * @param id the identifier of this option. * @param shortName the short name of the option. Must have one and only one * character. May be <code>null</code>. * @param longName the long name of the option. Must have more than one * character. May be <code>null</code>. * @param description the description of the option (used to generate help * message). * @param argDesc the description of the argument value (used to generate help * message). */ public CmdPathOption(final String id, final String shortName, final String longName, final String description, final String argDesc) { super(id, shortName, longName, description, argDesc, null, File.pathSeparator); } /** * @param commandLine a command-line * @return the value of this option on the given command-line as a list of * String, or <code>null</code>. */ public List<String> getPathValue(final CommandLine commandLine) { final String value = getValue(commandLine); if (value == null) return null; else return parsePathList(value); } protected List<String> parsePathList(String paths) { final List<String> l = new ArrayList<String>(); int index = paths.indexOf(File.pathSeparatorChar); while (index != -1) { l.add(paths.substring(0, index)); paths = paths.substring(index + 1); index = paths.indexOf(File.pathSeparatorChar); } l.add(paths); return l; } }