Package com.unboundid.util.args
Class DurationArgument
- java.lang.Object
-
- com.unboundid.util.args.Argument
-
- com.unboundid.util.args.DurationArgument
-
- All Implemented Interfaces:
java.io.Serializable
@Mutable @ThreadSafety(level=NOT_THREADSAFE) public final class DurationArgument extends Argument
Creates a new argument that is intended to represent a duration. Duration values contain an integer portion and a unit portion which represents the time unit. The unit must be one of the following:- Nanoseconds -- ns, nano, nanos, nanosecond, nanoseconds
- Microseconds -- us, micro, micros, microsecond, microseconds
- Milliseconds -- ms, milli, millis, millisecond, milliseconds
- Seconds -- s, sec, secs, second, seconds
- Minutes -- m, min, mins, minute, minutes
- Hours -- h, hr, hrs, hour, hours
- Days -- d, day, days
- Weeks -- w, week, weeks
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description DurationArgument(java.lang.Character shortIdentifier, java.lang.String longIdentifier, boolean isRequired, java.lang.String valuePlaceholder, java.lang.String description)
Creates a new duration argument with no default value and no bounds on the set of allowed values.DurationArgument(java.lang.Character shortIdentifier, java.lang.String longIdentifier, boolean isRequired, java.lang.String valuePlaceholder, java.lang.String description, java.lang.Long defaultValue, java.util.concurrent.TimeUnit defaultValueUnit, java.lang.Long lowerBound, java.util.concurrent.TimeUnit lowerBoundUnit, java.lang.Long upperBound, java.util.concurrent.TimeUnit upperBoundUnit)
Creates a new duration argument with the provided information.DurationArgument(java.lang.Character shortIdentifier, java.lang.String longIdentifier, java.lang.String description)
Creates a new duration argument that will not be required, will use a default placeholder, and will have no default value and no bounds on the set of allowed values.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addToCommandLine(java.util.List<java.lang.String> argStrings)
Updates the provided list to add any strings that should be included on the command line in order to represent this argument's current state.protected void
addValue(java.lang.String valueString)
Adds the provided value to the set of values for this argument.void
addValueValidator(ArgumentValueValidator validator)
Updates this argument to ensure that the provided validator will be invoked for any values provided to this argument.DurationArgument
getCleanCopy()
Creates a copy of this argument that is "clean" and appears as if it has not been used in the course of parsing an argument set.java.lang.String
getDataTypeName()
Retrieves a concise name of the data type with which this argument is associated.java.lang.Long
getDefaultValue(java.util.concurrent.TimeUnit unit)
Retrieves the default value for this argument using the specified time unit, if defined.long
getLowerBound(java.util.concurrent.TimeUnit unit)
Retrieves the lower bound for this argument using the specified time unit.long
getUpperBound(java.util.concurrent.TimeUnit unit)
Retrieves the upper bound for this argument using the specified time unit.java.lang.Long
getValue(java.util.concurrent.TimeUnit unit)
Retrieves the value for this argument using the specified time unit, if one was provided.java.lang.String
getValueConstraints()
Retrieves a human-readable string with information about any constraints that may be imposed for values of this argument.java.util.List<java.lang.String>
getValueStringRepresentations(boolean useDefault)
Retrieves a list containing the string representations of the values for this argument, if any.protected boolean
hasDefaultValue()
Indicates whether this argument has one or more default values that will be used if it is not provided on the command line.static java.lang.String
nanosToDuration(long nanos)
Converts the specified number of nanoseconds into a duration string using the largest possible whole unit (e.g., if the value represents a whole number of seconds, then the returned string will be expressed in seconds).static long
parseDuration(java.lang.String durationString, java.util.concurrent.TimeUnit timeUnit)
Parses the provided string representation of a duration to a corresponding numeric representation.protected void
reset()
Resets this argument so that it appears in the same form as before it was used to parse arguments.void
toString(java.lang.StringBuilder buffer)
Appends a string representation of this argument to the provided buffer.-
Methods inherited from class com.unboundid.util.args.Argument
addLongIdentifier, addLongIdentifier, addShortIdentifier, addShortIdentifier, appendBasicToStringInfo, getArgumentGroupName, getDescription, getIdentifierString, getLongIdentifier, getLongIdentifiers, getLongIdentifiers, getMaxOccurrences, getNumOccurrences, getShortIdentifier, getShortIdentifiers, getShortIdentifiers, getValuePlaceholder, hasLongIdentifier, hasShortIdentifier, isHidden, isPresent, isRequired, isSensitive, isUsageArgument, setArgumentGroupName, setHidden, setMaxOccurrences, setSensitive, setUsageArgument, takesValue, toString
-
-
-
-
Constructor Detail
-
DurationArgument
public DurationArgument(@Nullable java.lang.Character shortIdentifier, @Nullable java.lang.String longIdentifier, @NotNull java.lang.String description) throws ArgumentException
Creates a new duration argument that will not be required, will use a default placeholder, and will have no default value and no bounds on the set of allowed values.- Parameters:
shortIdentifier
- The short identifier for this argument. It may not benull
if the long identifier isnull
.longIdentifier
- The long identifier for this argument. It may not benull
if the short identifier isnull
.description
- A human-readable description for this argument. It must not benull
.- Throws:
ArgumentException
- If there is a problem with the definition of this argument.
-
DurationArgument
public DurationArgument(@Nullable java.lang.Character shortIdentifier, @Nullable java.lang.String longIdentifier, boolean isRequired, @Nullable java.lang.String valuePlaceholder, @NotNull java.lang.String description) throws ArgumentException
Creates a new duration argument with no default value and no bounds on the set of allowed values.- Parameters:
shortIdentifier
- The short identifier for this argument. It may not benull
if the long identifier isnull
.longIdentifier
- The long identifier for this argument. It may not benull
if the short identifier isnull
.isRequired
- Indicates whether this argument is required to be provided.valuePlaceholder
- A placeholder to display in usage information to indicate that a value must be provided. It may benull
if a default placeholder should be used.description
- A human-readable description for this argument. It must not benull
.- Throws:
ArgumentException
- If there is a problem with the definition of this argument.
-
DurationArgument
public DurationArgument(@Nullable java.lang.Character shortIdentifier, @Nullable java.lang.String longIdentifier, boolean isRequired, @Nullable java.lang.String valuePlaceholder, @NotNull java.lang.String description, @Nullable java.lang.Long defaultValue, @Nullable java.util.concurrent.TimeUnit defaultValueUnit, @Nullable java.lang.Long lowerBound, @Nullable java.util.concurrent.TimeUnit lowerBoundUnit, @Nullable java.lang.Long upperBound, @Nullable java.util.concurrent.TimeUnit upperBoundUnit) throws ArgumentException
Creates a new duration argument with the provided information.- Parameters:
shortIdentifier
- The short identifier for this argument. It may not benull
if the long identifier isnull
.longIdentifier
- The long identifier for this argument. It may not benull
if the short identifier isnull
.isRequired
- Indicates whether this argument is required to be provided.valuePlaceholder
- A placeholder to display in usage information to indicate that a value must be provided. It may benull
if a default placeholder should be used.description
- A human-readable description for this argument. It must not benull
.defaultValue
- The default value that will be used for this argument if none is provided. It may benull
if there should not be a default value.defaultValueUnit
- The time unit for the default value. It may benull
only if the default value is alsonull
.lowerBound
- The value for the minimum duration that may be represented using this argument, in conjunction with thelowerBoundUnit
parameter to specify the unit for this value. If this isnull
, then a lower bound of 0 nanoseconds will be used.lowerBoundUnit
- The time unit for the lower bound value. It may benull
only if the lower bound is alsonull
.upperBound
- The value for the maximum duration that may be represented using this argument, in conjunction with theupperBoundUnit
parameter to specify the unit for this value. If this isnull
, then an upper bound ofLong.MAX_VALUE
nanoseconds will be used.upperBoundUnit
- The time unit for the upper bound value. It may benull
only if the upper bound is alsonull
.- Throws:
ArgumentException
- If there is a problem with the definition of this argument.
-
-
Method Detail
-
getLowerBound
public long getLowerBound(@NotNull java.util.concurrent.TimeUnit unit)
Retrieves the lower bound for this argument using the specified time unit.- Parameters:
unit
- The time unit in which the lower bound value may be expressed.- Returns:
- The lower bound for this argument using the specified time unit.
-
getUpperBound
public long getUpperBound(@NotNull java.util.concurrent.TimeUnit unit)
Retrieves the upper bound for this argument using the specified time unit.- Parameters:
unit
- The time unit in which the upper bound value may be expressed.- Returns:
- The upper bound for this argument using the specified time unit.
-
getValueStringRepresentations
@NotNull public java.util.List<java.lang.String> getValueStringRepresentations(boolean useDefault)
Retrieves a list containing the string representations of the values for this argument, if any. The list returned does not necessarily need to include values that will be acceptable to the argument, but it should imply what the values are (e.g., in the case of a boolean argument that doesn't take a value, it may be the string "true" or "false" even if those values are not acceptable to the argument itself).- Specified by:
getValueStringRepresentations
in classArgument
- Parameters:
useDefault
- Indicates whether to use any configured default value if the argument doesn't have a user-specified value.- Returns:
- A string representation of the value for this argument, or an empty list if the argument does not have a value.
-
hasDefaultValue
protected boolean hasDefaultValue()
Indicates whether this argument has one or more default values that will be used if it is not provided on the command line.- Specified by:
hasDefaultValue
in classArgument
- Returns:
true
if this argument has one or more default values, orfalse
if not.
-
getDefaultValue
@Nullable public java.lang.Long getDefaultValue(@NotNull java.util.concurrent.TimeUnit unit)
Retrieves the default value for this argument using the specified time unit, if defined.- Parameters:
unit
- The time unit in which the default value should be expressed.- Returns:
- The default value for this argument using the specified time unit,
or
null
if none is defined.
-
getValue
@Nullable public java.lang.Long getValue(@NotNull java.util.concurrent.TimeUnit unit)
Retrieves the value for this argument using the specified time unit, if one was provided.- Parameters:
unit
- The time unit in which to express the value for this argument.- Returns:
- The value for this argument using the specified time unit. If no
value was provided but a default value was defined, then the
default value will be returned. If no value was provided and no
default value was defined, then
null
will be returned.
-
addValueValidator
public void addValueValidator(@NotNull ArgumentValueValidator validator)
Updates this argument to ensure that the provided validator will be invoked for any values provided to this argument. This validator will be invoked after all other validation has been performed for this argument.- Parameters:
validator
- The argument value validator to be invoked. It must not benull
.
-
addValue
protected void addValue(@NotNull java.lang.String valueString) throws ArgumentException
Adds the provided value to the set of values for this argument. This method should only be called by the argument parser.- Specified by:
addValue
in classArgument
- Parameters:
valueString
- The string representation of the value.- Throws:
ArgumentException
- If the provided value is not acceptable, if this argument does not accept values, or if this argument already has the maximum allowed number of values.
-
parseDuration
public static long parseDuration(@NotNull java.lang.String durationString, @NotNull java.util.concurrent.TimeUnit timeUnit) throws ArgumentException
Parses the provided string representation of a duration to a corresponding numeric representation.- Parameters:
durationString
- The string representation of the duration to be parsed.timeUnit
- The time unit to use for the return value.- Returns:
- The parsed duration as a count in the specified time unit.
- Throws:
ArgumentException
- If the provided string cannot be parsed as a valid duration.
-
getDataTypeName
@NotNull public java.lang.String getDataTypeName()
Retrieves a concise name of the data type with which this argument is associated.- Specified by:
getDataTypeName
in classArgument
- Returns:
- A concise name of the data type with which this argument is associated.
-
getValueConstraints
@NotNull public java.lang.String getValueConstraints()
Retrieves a human-readable string with information about any constraints that may be imposed for values of this argument.- Overrides:
getValueConstraints
in classArgument
- Returns:
- A human-readable string with information about any constraints
that may be imposed for values of this argument, or
null
if there are none.
-
reset
protected void reset()
Resets this argument so that it appears in the same form as before it was used to parse arguments. Subclasses that override this method must callsuper.reset()
to ensure that all necessary reset processing is performed.
-
getCleanCopy
@NotNull public DurationArgument getCleanCopy()
Creates a copy of this argument that is "clean" and appears as if it has not been used in the course of parsing an argument set. The new argument will have all of the same identifiers and constraints as this parser.- Specified by:
getCleanCopy
in classArgument
- Returns:
- The "clean" copy of this argument.
-
nanosToDuration
@NotNull public static java.lang.String nanosToDuration(long nanos)
Converts the specified number of nanoseconds into a duration string using the largest possible whole unit (e.g., if the value represents a whole number of seconds, then the returned string will be expressed in seconds).- Parameters:
nanos
- The number of nanoseconds to convert to a duration string.- Returns:
- The duration string for the specified number of nanoseconds.
-
addToCommandLine
protected void addToCommandLine(@NotNull java.util.List<java.lang.String> argStrings)
Updates the provided list to add any strings that should be included on the command line in order to represent this argument's current state.- Specified by:
addToCommandLine
in classArgument
- Parameters:
argStrings
- The list to update with the string representation of the command-line arguments.
-
-