Initial opendaylight infrastructure commit!!
[controller.git] / third-party / openflowj / src / main / java / org / openflow / example / cli / Options.java
diff --git a/third-party/openflowj/src/main/java/org/openflow/example/cli/Options.java b/third-party/openflowj/src/main/java/org/openflow/example/cli/Options.java
new file mode 100644 (file)
index 0000000..7f55b50
--- /dev/null
@@ -0,0 +1,69 @@
+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);
+    }
+
+}