--- /dev/null
+package org.openflow.example.cli;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Very basic CLI options listing
+ *
+ * @author Rob Sherwood (rob.sherwood@stanford.edu)
+ *
+ */
+
+public class Options {
+ Map<String, Option> shortOptionsMap;
+ Map<String, Option> longOptionsMap;
+
+ public Options() {
+ this.shortOptionsMap = new HashMap<String, Option>();
+ this.longOptionsMap = new HashMap<String, Option>();
+ }
+
+ public static Options make(Option opts[]) {
+ Options options = new Options();
+ for (int i = 0; i < opts.length; i++)
+ options.addOption(opts[i]);
+ return options;
+ }
+
+ private void addOption(Option option) {
+ if (option.shortOpt != null)
+ this.shortOptionsMap.put(option.shortOpt, option);
+ if (option.longOpt != null)
+ this.longOptionsMap.put(option.longOpt, option);
+ }
+
+ protected void addOption(String shortName, String longName, Object o,
+ String comment) {
+ Option option = new Option(shortName, longName, o, comment);
+ addOption(option);
+ }
+
+ public void addOption(String shortName, String longName, boolean b,
+ String comment) {
+ this.addOption(shortName, longName, Boolean.valueOf(b), comment);
+ }
+
+ public void addOption(String shortName, String longName, int i,
+ String comment) {
+ this.addOption(shortName, longName, Integer.valueOf(i), comment);
+ }
+
+ public Option getOption(String shortName) {
+ return this.shortOptionsMap.get(shortName);
+ }
+
+ public Option getOptionByLongName(String longName) {
+ return this.longOptionsMap.get(longName);
+ }
+
+ public Collection<Option> getOptions() {
+ return this.shortOptionsMap.values();
+ }
+
+ public void addOption(String shortName, String longName, String comment) {
+ this.addOption(shortName, longName, null, comment);
+ }
+
+}