- java.lang.Object
-
- com.headius.options.Option<T>
-
- Type Parameters:
T- the type of value associated with the option
- Direct Known Subclasses:
BooleanOption,EnumerationOption,IntegerOption,StringOption
public abstract class Option<T> extends java.lang.ObjectRepresents a single option, with a category, name, value type, options, default value, and description. This type should be subclassed for specific types of values.- See Also:
StringOption,IntegerOption,BooleanOption,EnumerationOption,string(java.lang.String, java.lang.String, java.lang.Enum, java.lang.String),integer(java.lang.String, java.lang.String, java.lang.Enum, java.lang.String),bool(java.lang.String, java.lang.String, java.lang.Enum, java.lang.String),enumeration(java.lang.String, java.lang.String, java.lang.Enum, java.lang.Class<T>, java.lang.String)
-
-
Constructor Summary
Constructors Constructor Description Option(java.lang.String longName, java.lang.Class<T> type, java.lang.Enum category, T[] options, T defval, java.lang.String description)Create a new option with the given values.Option(java.lang.String prefix, java.lang.String shortName, java.lang.Class<T> type, java.lang.Enum category, T[] options, T defval, java.lang.String description)Create a new option with the given values.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static Option<java.lang.Boolean>bool(java.lang.String longName, java.lang.Enum category, java.lang.Boolean defval, java.lang.String description)Create a new Boolean option with the given configuration.static Option<java.lang.Boolean>bool(java.lang.String longName, java.lang.Enum category, java.lang.String description)Create a new Boolean option with the given configuration.static Option<java.lang.Boolean>bool(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Boolean defval, java.lang.String description)Create a new Boolean option with the given configuration.static Option<java.lang.Boolean>bool(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String description)Create a new Boolean option with the given configuration.TdefaultValue()java.lang.Stringdescription()java.lang.StringdisplayName()The display name of the option's property, either the short name or the full name.static <T extends java.lang.Enum<T>>
Option<T>enumeration(java.lang.String longName, java.lang.Enum category, java.lang.Class<T> enumClass, java.lang.String description)Create a new Enumeration-based option with the given configuration.static <T extends java.lang.Enum<T>>
Option<T>enumeration(java.lang.String longName, java.lang.Enum category, T defval, java.lang.String description)Create a new Enumeration-based option with the given configuration.static <T extends java.lang.Enum<T>>
Option<T>enumeration(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Class<T> enumClass, java.lang.String description)Create a new Enumeration-based option with the given configuration.static <T extends java.lang.Enum<T>>
Option<T>enumeration(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, T defval, java.lang.String description)Create a new Enumeration-based option with the given configuration.voidforce(java.lang.String value)Force the property value to the given value for all future loads and reloads.static java.lang.StringformatOptions(Option... options)Format the given options in a way suitable for use as a configuration file or documentation.static java.lang.StringformatOptions(java.util.Collection<Option> options)Format the given options in a way suitable for use as a configuration file or documentation.static java.lang.StringformatValues(Option... options)Format the given options to show their loaded values in the current JVM.static java.lang.StringformatValues(java.util.Collection<Option> options)Format the given options to show their loaded values in the current JVM.static Option<java.lang.Integer>integer(java.lang.String longName, java.lang.Enum category, java.lang.Integer[] options, java.lang.Integer defval, java.lang.String description)Create a new Integer option with the given configuration.static Option<java.lang.Integer>integer(java.lang.String longName, java.lang.Enum category, java.lang.Integer[] options, java.lang.String description)Create a new Integer option with the given configuration.static Option<java.lang.Integer>integer(java.lang.String longName, java.lang.Enum category, java.lang.Integer defval, java.lang.String description)Create a new Integer option with the given configuration.static Option<java.lang.Integer>integer(java.lang.String longName, java.lang.Enum category, java.lang.String description)Create a new Integer option with the given configuration.static Option<java.lang.Integer>integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Integer[] options, java.lang.Integer defval, java.lang.String description)Create a new Integer option with the given configuration.static Option<java.lang.Integer>integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Integer[] options, java.lang.String description)Create a new Integer option with the given configuration.static Option<java.lang.Integer>integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Integer defval, java.lang.String description)Create a new Integer option with the given configuration.static Option<java.lang.Integer>integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String description)Create a new Integer option with the given configuration.booleanisSpecified()Tload()java.lang.StringloadProperty()Load the option's property, as if by calling java.lang.System#getPropertyT[]options()The array of accepted values for the option, or null if any values are accepted.java.lang.Stringprefix()If the property has a prefix, return it.java.lang.StringpropertyName()Treload()Force a load of the option's property and return the loaded value.protected abstract TreloadValue()Perform the appropriate load and conversion for the option's property.java.lang.StringshortName()If the option has a short name, return it.static Option<java.lang.String>string(java.lang.String longName, java.lang.Enum category, java.lang.String description)Create a new String option with the given configuration.static Option<java.lang.String>string(java.lang.String longName, java.lang.Enum category, java.lang.String[] options, java.lang.String description)Create a new String option with the given configuration.static Option<java.lang.String>string(java.lang.String longName, java.lang.Enum category, java.lang.String[] options, java.lang.String defval, java.lang.String description)Create a new String option with the given configuration.static Option<java.lang.String>string(java.lang.String longName, java.lang.Enum category, java.lang.String defval, java.lang.String description)Create a new String option with the given configuration.static Option<java.lang.String>string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String description)Create a new String option with the given configuration.static Option<java.lang.String>string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String[] options, java.lang.String description)Create a new String option with the given configuration.static Option<java.lang.String>string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String[] options, java.lang.String defval, java.lang.String description)Create a new String option with the given configuration.static Option<java.lang.String>string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String defval, java.lang.String description)Create a new String option with the given configuration.java.lang.StringtoString()java.lang.Class<T>type()The type returned for the option.voidunforce()Undoes any previous force, and goes back to an unloaded state.
-
-
-
Constructor Detail
-
Option
public Option(java.lang.String prefix, java.lang.String shortName, java.lang.Class<T> type, java.lang.Enum category, T[] options, T defval, java.lang.String description)Create a new option with the given values.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property nametype- the value type of the optioncategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledefval- the default value for the optiondescription- a description for the option
-
Option
public Option(java.lang.String longName, java.lang.Class<T> type, java.lang.Enum category, T[] options, T defval, java.lang.String description)Create a new option with the given values.- Parameters:
longName- the property nametype- the value type of the optioncategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledefval- the default value for the optiondescription- a description for the option
-
-
Method Detail
-
string
public static Option<java.lang.String> string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new String-based option
-
string
public static Option<java.lang.String> string(java.lang.String longName, java.lang.Enum category, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new String-based option
-
string
public static Option<java.lang.String> string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String defval, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new String-based Option
-
string
public static Option<java.lang.String> string(java.lang.String longName, java.lang.Enum category, java.lang.String defval, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new String-based Option
-
string
public static Option<java.lang.String> string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String[] options, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledescription- a description for the option- Returns:
- a new String-based Option
-
string
public static Option<java.lang.String> string(java.lang.String longName, java.lang.Enum category, java.lang.String[] options, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledescription- a description for the option- Returns:
- a new String-based Option
-
string
public static Option<java.lang.String> string(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String[] options, java.lang.String defval, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledefval- the default value for the optiondescription- a description for the option- Returns:
- a new String-based Option
-
string
public static Option<java.lang.String> string(java.lang.String longName, java.lang.Enum category, java.lang.String[] options, java.lang.String defval, java.lang.String description)
Create a new String option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledefval- the default value for the optiondescription- a description for the option- Returns:
- a new String-based Option
-
bool
public static Option<java.lang.Boolean> bool(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String description)
Create a new Boolean option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new Boolean-based Option
-
bool
public static Option<java.lang.Boolean> bool(java.lang.String longName, java.lang.Enum category, java.lang.String description)
Create a new Boolean option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new Boolean-based Option
-
bool
public static Option<java.lang.Boolean> bool(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Boolean defval, java.lang.String description)
Create a new Boolean option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new Boolean-based Option
-
bool
public static Option<java.lang.Boolean> bool(java.lang.String longName, java.lang.Enum category, java.lang.Boolean defval, java.lang.String description)
Create a new Boolean option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new Boolean-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new Integer-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Integer[] options, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledescription- a description for the option- Returns:
- a new Integer-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String longName, java.lang.Enum category, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new Integer-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String longName, java.lang.Enum category, java.lang.Integer[] options, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledescription- a description for the option- Returns:
- a new Integer-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Integer defval, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new Integer-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String longName, java.lang.Enum category, java.lang.Integer defval, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new Integer-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Integer[] options, java.lang.Integer defval, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledefval- the default value for the optiondescription- a description for the option- Returns:
- a new Integer-based Option
-
integer
public static Option<java.lang.Integer> integer(java.lang.String longName, java.lang.Enum category, java.lang.Integer[] options, java.lang.Integer defval, java.lang.String description)
Create a new Integer option with the given configuration.- Parameters:
longName- the property namecategory- the category to which this option belongsoptions- a list of supported for the option, or null if the set is not applicabledefval- the default value for the optiondescription- a description for the option- Returns:
- a new Integer-based Option
-
enumeration
public static <T extends java.lang.Enum<T>> Option<T> enumeration(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, java.lang.Class<T> enumClass, java.lang.String description)
Create a new Enumeration-based option with the given configuration.- Type Parameters:
T- the type of the enum- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new Enumeration-based Option
-
enumeration
public static <T extends java.lang.Enum<T>> Option<T> enumeration(java.lang.String longName, java.lang.Enum category, java.lang.Class<T> enumClass, java.lang.String description)
Create a new Enumeration-based option with the given configuration.- Type Parameters:
T- the type of the enum- Parameters:
longName- the property namecategory- the category to which this option belongsdescription- a description for the option- Returns:
- a new Enumeration-based Option
-
enumeration
public static <T extends java.lang.Enum<T>> Option<T> enumeration(java.lang.String prefix, java.lang.String shortName, java.lang.Enum category, T defval, java.lang.String description)
Create a new Enumeration-based option with the given configuration.- Type Parameters:
T- the type of the enum- Parameters:
prefix- the prefix used for loading this option from propertiesshortName- the rest of the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new Enumeration-based Option
-
enumeration
public static <T extends java.lang.Enum<T>> Option<T> enumeration(java.lang.String longName, java.lang.Enum category, T defval, java.lang.String description)
Create a new Enumeration-based option with the given configuration.- Type Parameters:
T- the type of the enum- Parameters:
longName- the property namecategory- the category to which this option belongsdefval- the default value for the optiondescription- a description for the option- Returns:
- a new Enumeration-based Option
-
formatValues
public static java.lang.String formatValues(Option... options)
Format the given options to show their loaded values in the current JVM.- Parameters:
options- the options to format- Returns:
- a formatted string representing the options
-
formatValues
public static java.lang.String formatValues(java.util.Collection<Option> options)
Format the given options to show their loaded values in the current JVM.- Parameters:
options- the options to format- Returns:
- a formatted string representing the options
-
formatOptions
public static java.lang.String formatOptions(Option... options)
Format the given options in a way suitable for use as a configuration file or documentation.- Parameters:
options- the options to format- Returns:
- a formatted string representing the options as a config file or document
-
formatOptions
public static java.lang.String formatOptions(java.util.Collection<Option> options)
Format the given options in a way suitable for use as a configuration file or documentation.- Parameters:
options- the options to format- Returns:
- a formatted string representing the options as a config file or document
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
loadProperty
public java.lang.String loadProperty()
Load the option's property, as if by calling java.lang.System#getProperty- Returns:
- the option's property's current value, or a value previously forced
into this option by
force(String)
-
isSpecified
public boolean isSpecified()
- Returns:
- true if the option's property was specified, false otherwise.
-
load
public final T load()
- Returns:
- the value of the option, loading if it has not been already.
-
reload
public final T reload()
Force a load of the option's property and return the loaded value.- Returns:
- the loaded value
-
force
public void force(java.lang.String value)
Force the property value to the given value for all future loads and reloads.- Parameters:
value- a value to force for the Option's property, as if set in JVM
-
unforce
public void unforce()
Undoes any previous force, and goes back to an unloaded state.
-
reloadValue
protected abstract T reloadValue()
Perform the appropriate load and conversion for the option's property.- Returns:
- the updated value after reload
-
shortName
public java.lang.String shortName()
If the option has a short name, return it. Otherwise null.- Returns:
- the short name, or else null
-
propertyName
public java.lang.String propertyName()
- Returns:
- the full property name for the option.
-
prefix
public java.lang.String prefix()
If the property has a prefix, return it. Otherwise null.- Returns:
- the property prefix, or else null
-
displayName
public java.lang.String displayName()
The display name of the option's property, either the short name or the full name.- Returns:
- the full display name of this option's property
-
type
public java.lang.Class<T> type()
The type returned for the option.- Returns:
- the type of option that this is
-
options
public T[] options()
The array of accepted values for the option, or null if any values are accepted.- Returns:
- an array of accepted values, or null if any values are allowed
-
defaultValue
public T defaultValue()
- Returns:
- the default value for the option, or null if no default is provided.
-
description
public java.lang.String description()
- Returns:
- the long description of the property, as for documentation and configuration file templates.
-
-