@Mutable @ThreadSafety(level=NOT_THREADSAFE) public final class DurationArgument extends Argument
Constructor and 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.
|
Modifier and Type | Method and 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.
|
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
public DurationArgument(@Nullable java.lang.Character shortIdentifier, @Nullable java.lang.String longIdentifier, @NotNull java.lang.String description) throws ArgumentException
shortIdentifier
- The short identifier for this argument. It may
not be null
if the long identifier is
null
.longIdentifier
- The long identifier for this argument. It may
not be null
if the short identifier is
null
.description
- A human-readable description for this argument.
It must not be null
.ArgumentException
- If there is a problem with the definition of
this argument.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
shortIdentifier
- The short identifier for this argument. It may
not be null
if the long identifier is
null
.longIdentifier
- The long identifier for this argument. It may
not be null
if the short identifier is
null
.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
be null
if a default placeholder should
be used.description
- A human-readable description for this argument.
It must not be null
.ArgumentException
- If there is a problem with the definition of
this argument.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
shortIdentifier
- The short identifier for this argument. It may
not be null
if the long identifier is
null
.longIdentifier
- The long identifier for this argument. It may
not be null
if the short identifier is
null
.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
be null
if a default placeholder should
be used.description
- A human-readable description for this argument.
It must not be null
.defaultValue
- The default value that will be used for this
argument if none is provided. It may be
null
if there should not be a default
value.defaultValueUnit
- The time unit for the default value. It may be
null
only if the default value is also
null
.lowerBound
- The value for the minimum duration that may be
represented using this argument, in conjunction
with the lowerBoundUnit
parameter to
specify the unit for this value. If this is
null
, then a lower bound of 0 nanoseconds
will be used.lowerBoundUnit
- The time unit for the lower bound value. It may
be null
only if the lower bound is also
null
.upperBound
- The value for the maximum duration that may be
represented using this argument, in conjunction
with the upperBoundUnit
parameter to
specify the unit for this value. If this is
null
, then an upper bound of
Long.MAX_VALUE
nanoseconds will be used.upperBoundUnit
- The time unit for the upper bound value. It may
be null
only if the upper bound is also
null
.ArgumentException
- If there is a problem with the definition of
this argument.public long getLowerBound(@NotNull java.util.concurrent.TimeUnit unit)
unit
- The time unit in which the lower bound value may be
expressed.public long getUpperBound(@NotNull java.util.concurrent.TimeUnit unit)
unit
- The time unit in which the upper bound value may be
expressed.@NotNull public java.util.List<java.lang.String> getValueStringRepresentations(boolean useDefault)
getValueStringRepresentations
in class Argument
useDefault
- Indicates whether to use any configured default value
if the argument doesn't have a user-specified value.protected boolean hasDefaultValue()
hasDefaultValue
in class Argument
true
if this argument has one or more default values, or
false
if not.@Nullable public java.lang.Long getDefaultValue(@NotNull java.util.concurrent.TimeUnit unit)
unit
- The time unit in which the default value should be expressed.null
if none is defined.@Nullable public java.lang.Long getValue(@NotNull java.util.concurrent.TimeUnit unit)
unit
- The time unit in which to express the value for this
argument.null
will be returned.public void addValueValidator(@NotNull ArgumentValueValidator validator)
validator
- The argument value validator to be invoked. It must not
be null
.protected void addValue(@NotNull java.lang.String valueString) throws ArgumentException
addValue
in class Argument
valueString
- The string representation of the value.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.public static long parseDuration(@NotNull java.lang.String durationString, @NotNull java.util.concurrent.TimeUnit timeUnit) throws ArgumentException
durationString
- The string representation of the duration to be
parsed.timeUnit
- The time unit to use for the return value.ArgumentException
- If the provided string cannot be parsed as a
valid duration.@NotNull public java.lang.String getDataTypeName()
getDataTypeName
in class Argument
@NotNull public java.lang.String getValueConstraints()
getValueConstraints
in class Argument
null
if there are none.protected void reset()
super.reset()
to ensure that all necessary reset processing is
performed.@NotNull public DurationArgument getCleanCopy()
getCleanCopy
in class Argument
@NotNull public static java.lang.String nanosToDuration(long nanos)
nanos
- The number of nanoseconds to convert to a duration string.protected void addToCommandLine(@NotNull java.util.List<java.lang.String> argStrings)
addToCommandLine
in class Argument
argStrings
- The list to update with the string representation of
the command-line arguments.