Class Option

java.lang.Object
com.aspectran.shell.command.option.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:
  • Field Details

    • UNINITIALIZED

      public static final int UNINITIALIZED
      Constant that specifies the number of argument values has not been specified
      See Also:
    • UNLIMITED_VALUES

      public static final int UNLIMITED_VALUES
      Constant that specifies the number of argument values is infinite
      See Also:
  • Constructor Details

    • Option

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

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

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

    • 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
    • getKey

      public String getKey()
      Returns the 'unique' Option identifier.
      Returns:
      the 'unique' Option identifier
    • getName

      public String getName()
      Retrieve the name of this Option. It is this String which can be used with ParsedOptions.hasOption(String name) and ParsedOptions.getValue(String name) to check for existence and argument.
      Returns:
      the name of this option
    • getLongName

      public String getLongName()
      Retrieve the long name of this Option.
      Returns:
      the long name of this Option, or null, if there is no long name
    • setLongName

      public void setLongName(String longName)
      Sets the long name of this Option.
      Parameters:
      longName - the long name of this Option
    • hasLongName

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

      public String getValueName()
      Gets the display name for the argument value.
      Returns:
      the display name for the argument value
    • setValueName

      public void setValueName(String valueName)
      Sets the display name for the argument value.
      Parameters:
      valueName - the display name for the argument value
    • hasValueName

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

      public OptionValueType getValueType()
      Retrieve the type of this Option.
      Returns:
      the type of this option
    • setValueType

      public void setValueType(OptionValueType valueType)
      Sets the type of this Option.
      Parameters:
      valueType - the type of this Option
    • setOptionalValue

      public void setOptionalValue(boolean optionalValue)
      Sets whether this Option can have an optional argument.
      Parameters:
      optionalValue - specifies whether the Option can have an optional argument.
    • hasOptionalValue

      public boolean hasOptionalValue()
      Returns whether this Option can have an optional argument.
      Returns:
      whether this Option can have an optional argument
    • getNumberOfValues

      public int getNumberOfValues()
      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:
    • setNumberOfValues

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

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

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

      public void withEqualSign()
    • isWithEqualSign

      public boolean isWithEqualSign()
    • setWithEqualSign

      public void setWithEqualSign(boolean withEqualSign)
    • addValue

      public void addValue(String value)
      Adds the specified value to this Option.
      Parameters:
      value - is a/the value of this Option
    • 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<String> getValuesList()
      Returns the values of this Option as a List or null if there are no values.
      Returns:
      the values of this Option as a List or null if there are no values
    • 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
    • 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
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • clone

      public Option clone() throws CloneNotSupportedException
      Overrides:
      clone in class Object
      Throws:
      CloneNotSupportedException
    • toString

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

      @NonNull public static Option.Builder builder()
      Returns a Option.Builder to create an Option using descriptive methods.
      Returns:
      a new Option.Builder instance
    • builder

      @NonNull public static Option.Builder builder(String name)
      Returns a Option.Builder to create an Option using descriptive methods.
      Parameters:
      name - short representation of the option
      Returns:
      a new Option.Builder instance
      Throws:
      IllegalArgumentException - if there are any non-valid Option characters in name