Package org.kohsuke.args4j.spi

Source Code of org.kohsuke.args4j.spi.EnumOptionHandler

package org.kohsuke.args4j.spi;

import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.OptionDef;

/**
* {@link Enum} {@link OptionHandler}.
*
* @author Kohsuke Kawaguchi
*/
public class EnumOptionHandler<T extends Enum<T>> extends OptionHandler<T> {

    private final Class<T> enumType;

    public EnumOptionHandler(CmdLineParser parser, OptionDef option, Setter<? super T> setter, Class<T> enumType) {
        super(parser, option, setter);
        this.enumType = enumType;
    }

    @Override
    public int parseArguments(Parameters params) throws CmdLineException {
        String s = params.getParameter(0);
        T value = null;
        for( T o : enumType.getEnumConstants() )
            if(o.name().equalsIgnoreCase(s)) {
                value = o;
                break;
            }

        if(value==null)
            throw new CmdLineException(Messages.ILLEGAL_OPERAND.format(option.toString(),s));
        setter.addValue(value);
        return 1;
    }

    /*
     * Returns all values of an enum type split by pipe.
     * <tt>[ one | two | three]</tt>
     * @see org.kohsuke.args4j.spi.OptionHandler#getDefaultMetaVariable()
     */
    @Override
    public String getDefaultMetaVariable() {
      StringBuffer rv = new StringBuffer();
      rv.append("[");
      for (T t : enumType.getEnumConstants()) {
      rv.append(t).append(" | ");
    }
      rv.delete(rv.length()-3, rv.length());
      rv.append("]");
      return rv.toString();
    }
}
TOP

Related Classes of org.kohsuke.args4j.spi.EnumOptionHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.