a83f51cf05f3cb36af6fbe3522b1a98104af840d
[openflowjava.git] / third-party / openflow-codec / src / main / java / org / openflow / codec / example / cli / Options.java
1 package org.openflow.codec.example.cli;
2
3 import java.util.Collection;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 /**
8  * Very basic CLI options listing
9  *
10  * @author Rob Sherwood (rob.sherwood@stanford.edu)
11  *
12  */
13
14 public class Options {
15     Map<String, Option> shortOptionsMap;
16     Map<String, Option> longOptionsMap;
17
18     public Options() {
19         this.shortOptionsMap = new HashMap<String, Option>();
20         this.longOptionsMap = new HashMap<String, Option>();
21     }
22
23     public static Options make(Option opts[]) {
24         Options options = new Options();
25         for (int i = 0; i < opts.length; i++)
26             options.addOption(opts[i]);
27         return options;
28     }
29
30     private void addOption(Option option) {
31         if (option.shortOpt != null)
32             this.shortOptionsMap.put(option.shortOpt, option);
33         if (option.longOpt != null)
34             this.longOptionsMap.put(option.longOpt, option);
35     }
36
37     protected void addOption(String shortName, String longName, Object o, String comment) {
38         Option option = new Option(shortName, longName, o, comment);
39         addOption(option);
40     }
41
42     public void addOption(String shortName, String longName, boolean b, String comment) {
43         this.addOption(shortName, longName, Boolean.valueOf(b), comment);
44     }
45
46     public void addOption(String shortName, String longName, int i, String comment) {
47         this.addOption(shortName, longName, Integer.valueOf(i), comment);
48     }
49
50     public Option getOption(String shortName) {
51         return this.shortOptionsMap.get(shortName);
52     }
53
54     public Option getOptionByLongName(String longName) {
55         return this.longOptionsMap.get(longName);
56     }
57
58     public Collection<Option> getOptions() {
59         return this.shortOptionsMap.values();
60     }
61
62     public void addOption(String shortName, String longName, String comment) {
63         this.addOption(shortName, longName, null, comment);
64     }
65
66 }