View Javadoc

1   package org.kohsuke.args4j.spi;
2   
3   import org.kohsuke.args4j.CmdLineParser;
4   import org.kohsuke.args4j.Option;
5   import org.kohsuke.args4j.CmdLineException;
6   
7   /***
8    * {@link Enum} {@link OptionHandler}.
9    *
10   * @author Kohsuke Kawaguchi
11   */
12  public class EnumOptionHandler extends OptionHandler {
13  
14      private final Class<? extends Enum<?>> enumType;
15  
16      public EnumOptionHandler(CmdLineParser parser, Option option, Setter setter, Class<? extends Enum<?>> enumType) {
17          super(parser, option, setter);
18          this.enumType = enumType;
19      }
20  
21      public int parseArguments(Parameters params) throws CmdLineException {
22          String s = params.getParameter(0);
23          Enum value = null;
24          for( Enum o : enumType.getEnumConstants() )
25              if(o.name().equalsIgnoreCase(s)) {
26                  value = o;
27                  break;
28              }
29  
30          if(value==null)
31              throw new CmdLineException(Messages.ILLEGAL_OPERAND.format(params.getOptionName(),s));
32          setter.addValue(value);
33          return 1;
34      }
35  
36      public String getDefaultMetaVariable() {
37          String n = enumType.getName();
38          int idx = n.lastIndexOf('.');
39          if(idx>=0)  n = n.substring(idx+1);
40          return n.toUpperCase();
41      }
42  }