package org.maltparser.core.options; import java.util.Collection; import java.util.HashMap; import java.util.TreeSet; import org.maltparser.core.options.option.Option; /** * An option group categories a group of options. * * @author Johan Hall * @since 1.0 * */ public class OptionGroup { private String name; private HashMap<String, Option> options; public static int toStringSetting = 0; public final static int WITHGROUPNAME = 0; public final static int NOGROUPNAME = 1; /** * Creates an option group with an option group name. * * @param name The name of the option group */ public OptionGroup(String name) { setName(name); options = new HashMap<String, Option>(); } /** * Returns the name of the option group * * @return the name of the option group */ public String getName() { return name; } /** * Sets the name of the option group * * @param name the name of the option group */ public void setName(String name) { this.name = name.toLowerCase(); } /** * Adds an option to the option group. * * @param option an option * @throws OptionException */ public void addOption(Option option) throws OptionException { if (option.getName() == null || option.getName().equals("")) { throw new OptionException("The option name is null or contains the empty string. "); } else if (options.containsKey(option.getName().toLowerCase())) { throw new OptionException("The option name already exists for that option group. "); } else { options.put(option.getName().toLowerCase(), option); } } /** * Returns the option according to the option name. * * @param optionname an option name * @return an option, <i>null</i> if the option name can't be found */ public Option getOption(String optionname) { return options.get(optionname); } /** * Returns all options for this option group. * * @return a list of options */ public Collection<Option> getOptionList() { return options.values(); } /* * (non-Javadoc) @see java.lang.Object#toString() */ @Override public String toString() { final StringBuilder sb = new StringBuilder(); // for (String value : new TreeSet<String>(options.keySet())) { // sb.append("super.put(\""); // sb.append("--"); // sb.append(name); // sb.append("-"); // sb.append(options.get(value).getName()); // sb.append("\", \""); // sb.append(options.get(value).getDefaultValueString()); // sb.append("\");\n"); // } if (OptionGroup.toStringSetting == OptionGroup.WITHGROUPNAME) { sb.append("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); sb.append("+ ").append(name).append("\n"); sb.append("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); } for (String value : new TreeSet<String>(options.keySet())) { sb.append(options.get(value).toString()); } return sb.toString(); } }