Class Option

  • All Implemented Interfaces:
    Serializable, Cloneable

    public class Option
    extends Object
    implements Cloneable, Serializable
    Describes a single command-line option. It maintains information regarding the short-name of the option, the long-name, if any exists, a flag indicating if an argument is required for this option, and a self-documenting description of the option.

    An Option is not created independently, but is created through an instance of Options. An Option is required to have at least a short or a long-name.

    Note: once an Option has been added to an instance of Options, it's required flag may not be changed anymore.

    See Also:
    Options, CommandLine, Serialized Form
    • Constructor Detail

      • Option

        public Option​(String opt,
                      String description)
               throws IllegalArgumentException
        Creates an Option using the specified parameters. The option does not take an argument.
        Parameters:
        opt - short representation of the option
        description - describes the function of the option
        Throws:
        IllegalArgumentException - if there are any non valid Option characters in opt.
      • Option

        public Option​(String opt,
                      boolean hasArg,
                      String description)
               throws IllegalArgumentException
        Creates an Option using the specified parameters.
        Parameters:
        opt - short representation of the option
        hasArg - specifies whether the Option takes an argument or not
        description - describes the function of the option
        Throws:
        IllegalArgumentException - if there are any non valid Option characters in opt.
      • Option

        public Option​(String opt,
                      String longOpt,
                      boolean hasArg,
                      String description)
               throws IllegalArgumentException
        Creates an Option using the specified parameters.
        Parameters:
        opt - short representation of the option
        longOpt - the long representation of the option
        hasArg - specifies whether the Option takes an argument or not
        description - describes the function of the option
        Throws:
        IllegalArgumentException - if there are any non valid Option characters in opt.
    • Method Detail

      • getId

        public int getId()
        Returns the id of this Option. This is only set when the Option shortOpt is a single character. This is used for switch statements.
        Returns:
        the id of this Option
      • getType

        public Object getType()
        Retrieve the type of this Option.
        Returns:
        The type of this option
      • setType

        @Deprecated
        public void setType​(Object type)
        Deprecated.
        since 1.3, use setType(Class) instead
        Sets the type of this Option.

        Note: this method is kept for binary compatibility and the input type is supposed to be a Class object.

        Parameters:
        type - the type of this Option
      • setType

        public void setType​(Class<?> type)
        Sets the type of this Option.
        Parameters:
        type - the type of this Option
        Since:
        1.3
      • getLongOpt

        public String getLongOpt()
        Retrieve the long name of this Option.
        Returns:
        Long name of this option, or null, if there is no long name
      • setLongOpt

        public void setLongOpt​(String longOpt)
        Sets the long name of this Option.
        Parameters:
        longOpt - the long name of this Option
      • setOptionalArg

        public void setOptionalArg​(boolean optionalArg)
        Sets whether this Option can have an optional argument.
        Parameters:
        optionalArg - specifies whether the Option can have an optional argument.
      • hasOptionalArg

        public boolean hasOptionalArg()
        Returns:
        whether this Option can have an optional argument
      • hasLongOpt

        public boolean hasLongOpt()
        Query to see if this Option has a long name
        Returns:
        boolean flag indicating existence of a long name
      • hasArg

        public boolean hasArg()
        Query to see if this Option requires an argument
        Returns:
        boolean flag indicating if an argument is required
      • getDescription

        public String getDescription()
        Retrieve the self-documenting description of this Option
        Returns:
        The string description of this option
      • setDescription

        public void setDescription​(String description)
        Sets the self-documenting description of this Option
        Parameters:
        description - The description of this option
        Since:
        1.1
      • isRequired

        public boolean isRequired()
        Query to see if this Option is mandatory
        Returns:
        boolean flag indicating whether this Option is mandatory
      • setRequired

        public void setRequired​(boolean required)
        Sets whether this Option is mandatory.
        Parameters:
        required - specifies whether this Option is mandatory
      • setArgName

        public void setArgName​(String argName)
        Sets the display name for the argument value.
        Parameters:
        argName - the display name for the argument value.
      • getArgName

        public String getArgName()
        Gets the display name for the argument value.
        Returns:
        the display name for the argument value.
      • hasArgName

        public boolean hasArgName()
        Returns whether the display name for the argument value has been set.
        Returns:
        if the display name for the argument value has been set.
      • hasArgs

        public boolean hasArgs()
        Query to see if this Option can take many values.
        Returns:
        boolean flag indicating if multiple values are allowed
      • setArgs

        public void setArgs​(int num)
        Sets the number of argument values this Option can take.
        Parameters:
        num - the number of argument values
      • setValueSeparator

        public void setValueSeparator​(char sep)
        Sets the value separator. For example if the argument value was a Java property, the value separator would be '='.
        Parameters:
        sep - The value separator.
      • getValueSeparator

        public char getValueSeparator()
        Returns the value separator character.
        Returns:
        the value separator character.
      • hasValueSeparator

        public boolean hasValueSeparator()
        Return whether this Option has specified a value separator.
        Returns:
        whether this Option has specified a value separator.
        Since:
        1.1
      • getArgs

        public int getArgs()
        Returns the number of argument values this Option can take.

        A value equal to the constant UNINITIALIZED (= -1) indicates the number of arguments has not been specified. A value equal to the constant UNLIMITED_VALUES (= -2) indicates that this options takes an unlimited amount of values.

        Returns:
        num the number of argument values
        See Also:
        UNINITIALIZED, UNLIMITED_VALUES
      • getValue

        public String getValue()
        Returns the specified value of this Option or null if there is no value.
        Returns:
        the value/first value of this Option or null if there is no value.
      • getValue

        public String getValue​(int index)
                        throws IndexOutOfBoundsException
        Returns the specified value of this Option or null if there is no value.
        Parameters:
        index - The index of the value to be returned.
        Returns:
        the specified value of this Option or null if there is no value.
        Throws:
        IndexOutOfBoundsException - if index is less than 1 or greater than the number of the values for this Option.
      • getValue

        public String getValue​(String defaultValue)
        Returns the value/first value of this Option or the defaultValue if there is no value.
        Parameters:
        defaultValue - The value to be returned if there is no value.
        Returns:
        the value/first value of this Option or the defaultValue if there are no values.
      • getValues

        public String[] getValues()
        Return the values of this Option as a String array or null if there are no values
        Returns:
        the values of this Option as a String array or null if there are no values
      • getValuesList

        public List<StringgetValuesList()
        Returns:
        the values of this Option as a List or null if there are no values
      • toString

        public String toString()
        Dump state, suitable for debugging.
        Overrides:
        toString in class Object
        Returns:
        Stringified form of this object
      • clone

        public Object clone()
        A rather odd clone method - due to incorrect code in 1.0 it is public and in 1.1 rather than throwing a CloneNotSupportedException it throws a RuntimeException so as to maintain backwards compat at the API level. After calling this method, it is very likely you will want to call clearValues().
        Overrides:
        clone in class Object
        Returns:
        a clone of this Option instance
        Throws:
        RuntimeException - if a CloneNotSupportedException has been thrown by super.clone()