com.unboundid.util.args
Class DurationArgument

java.lang.Object
  extended by com.unboundid.util.args.Argument
      extended by 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:

There may be zero or more spaces between the integer portion and the unit portion. However, if spaces are used in the command-line argument, then the value must be enquoted or the spaces must be escaped so that the duration is not seen as multiple arguments.

See Also:
Serialized Form

Constructor Summary
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.
 
Method Summary
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.
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 long parseDuration(java.lang.String durationString, java.util.concurrent.TimeUnit timeUnit)
          Parses the provided string representation of a duration to a corresponding numeric representation.
 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, addShortIdentifier, appendBasicToStringInfo, getDescription, getIdentifierString, getLongIdentifier, getLongIdentifiers, getMaxOccurrences, getNumOccurrences, getShortIdentifier, getShortIdentifiers, getValuePlaceholder, hasLongIdentifier, hasShortIdentifier, isHidden, isPresent, isRequired, isUsageArgument, setHidden, setMaxOccurrences, setUsageArgument, takesValue, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DurationArgument

public DurationArgument(java.lang.Character shortIdentifier,
                        java.lang.String longIdentifier,
                        boolean isRequired,
                        java.lang.String valuePlaceholder,
                        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 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 must not be null.
description - A human-readable description for this argument. It must not be null.
Throws:
ArgumentException - If there is a problem with the definition of this argument.

DurationArgument

public 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)
                 throws ArgumentException
Creates a new duration argument with the provided information.

Parameters:
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 must not be null.
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.
Throws:
ArgumentException - If there is a problem with the definition of this argument.
Method Detail

getLowerBound

public long getLowerBound(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(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.

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 class Argument
Returns:
true if this argument has one or more default values, or false if not.

getDefaultValue

public java.lang.Long getDefaultValue(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

public java.lang.Long getValue(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(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 be null.

addValue

protected void addValue(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 class Argument
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(java.lang.String durationString,
                                 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

public java.lang.String getDataTypeName()
Retrieves a concise name of the data type with which this argument is associated.

Specified by:
getDataTypeName in class Argument
Returns:
A concise name of the data type with which this argument is associated.

getValueConstraints

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 class Argument
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.

getCleanCopy

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 The new parser will have all of the same arguments and constraints as this parser.

Specified by:
getCleanCopy in class Argument
Returns:
The "clean" copy of this argument.

toString

public void toString(java.lang.StringBuilder buffer)
Appends a string representation of this argument to the provided buffer.

Specified by:
toString in class Argument
Parameters:
buffer - The buffer to which the information should be appended.