| | |
| | | |
| | | |
| | | |
| | | import static com.sun.opends.sdk.messages.Messages.*; |
| | | import static com.sun.opends.sdk.messages.Messages.ERR_ARG_CANNOT_DECODE_AS_INT; |
| | | import static com.sun.opends.sdk.messages.Messages.ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND; |
| | | import static com.sun.opends.sdk.messages.Messages.ERR_INTARG_VALUE_ABOVE_UPPER_BOUND; |
| | | import static com.sun.opends.sdk.messages.Messages.ERR_INTARG_VALUE_BELOW_LOWER_BOUND; |
| | | |
| | | import org.opends.sdk.LocalizableMessage; |
| | | import org.opends.sdk.LocalizableMessageBuilder; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * This class defines an argument type that will only accept integer |
| | | * values, and potentially only those in a given range. |
| | | * This class defines an argument type that will only accept integer values, and |
| | | * potentially only those in a given range. |
| | | */ |
| | | final class IntegerArgument extends Argument |
| | | { |
| | | // Indicates whether a lower bound will be enforced for this argument. |
| | | private boolean hasLowerBound; |
| | | private final boolean hasLowerBound; |
| | | |
| | | // Indicates whether an upper bound will be enforced for this |
| | | // argument. |
| | | private boolean hasUpperBound; |
| | | private final boolean hasUpperBound; |
| | | |
| | | // The lower bound that will be enforced for this argument. |
| | | private double lowerBound; |
| | | private final double lowerBound; |
| | | |
| | | // The upper bound that will be enforced for this argument. |
| | | private double upperBound; |
| | | private final double upperBound; |
| | | |
| | | |
| | | |
| | |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this |
| | | * argument. |
| | | * The generic name that should be used to refer to this argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * The long identifier for this argument, or <CODE>null</CODE> if |
| | | * there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the |
| | | * command line. |
| | | * Indicates whether this argument must be specified on the command |
| | | * line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than once to |
| | | * provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be |
| | | * displayed in usage information, or <CODE>null</CODE> if |
| | | * this argument does not require a value. |
| | | * The placeholder for the argument value that will be displayed in |
| | | * usage information, or <CODE>null</CODE> if this argument does not |
| | | * require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if none is |
| | | * provided in a properties file or on the command line. This may be |
| | | * <CODE>null</CODE> if there is no generic default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be used to |
| | | * override the default value but will be overridden by a |
| | | * command-line argument. |
| | | * @param hasLowerBound |
| | | * Indicates whether a lower bound should be enforced for values of |
| | | * this argument. |
| | | * @param lowerBound |
| | | * The lower bound that should be enforced for values of this |
| | | * argument. |
| | | * @param hasUpperBound |
| | | * Indicates whether an upperbound should be enforced for values of |
| | | * this argument. |
| | | * @param upperBound |
| | | * The upper bound that should be enforced for values of this |
| | | * argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to |
| | | * create this argument. |
| | | * If there is a problem with any of the parameters used to create |
| | | * this argument. |
| | | */ |
| | | public IntegerArgument(String name, Character shortIdentifier, |
| | | String longIdentifier, boolean isRequired, boolean needsValue, |
| | | LocalizableMessage valuePlaceholder, LocalizableMessage description) |
| | | public IntegerArgument(final String name, final Character shortIdentifier, |
| | | final String longIdentifier, final boolean isRequired, |
| | | final boolean isMultiValued, final boolean needsValue, |
| | | final LocalizableMessage valuePlaceholder, final double defaultValue, |
| | | final String propertyName, final boolean hasLowerBound, |
| | | final double lowerBound, final boolean hasUpperBound, |
| | | final double upperBound, final LocalizableMessage description) |
| | | throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, false, |
| | | needsValue, valuePlaceholder, null, null, description); |
| | | super(name, shortIdentifier, longIdentifier, isRequired, isMultiValued, |
| | | needsValue, valuePlaceholder, String.valueOf(defaultValue), |
| | | propertyName, description); |
| | | |
| | | this.hasLowerBound = hasLowerBound; |
| | | this.hasUpperBound = hasUpperBound; |
| | | this.lowerBound = lowerBound; |
| | | this.upperBound = upperBound; |
| | | |
| | | if (hasLowerBound && hasUpperBound && (lowerBound > upperBound)) |
| | | { |
| | | final LocalizableMessage message = ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND |
| | | .get(name, lowerBound, upperBound); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or <CODE>null</CODE> if |
| | | * there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the command |
| | | * line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than once to |
| | | * provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be displayed in |
| | | * usage information, or <CODE>null</CODE> if this argument does not |
| | | * require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if none is |
| | | * provided in a properties file or on the command line. This may be |
| | | * <CODE>null</CODE> if there is no generic default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be used to |
| | | * override the default value but will be overridden by a |
| | | * command-line argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to create |
| | | * this argument. |
| | | */ |
| | | public IntegerArgument(final String name, final Character shortIdentifier, |
| | | final String longIdentifier, final boolean isRequired, |
| | | final boolean isMultiValued, final boolean needsValue, |
| | | final LocalizableMessage valuePlaceholder, final double defaultValue, |
| | | final String propertyName, final LocalizableMessage description) |
| | | throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, isMultiValued, |
| | | needsValue, valuePlaceholder, String.format("%f", defaultValue), |
| | | propertyName, description); |
| | | |
| | | hasLowerBound = false; |
| | | hasUpperBound = false; |
| | | lowerBound = Integer.MIN_VALUE; |
| | | upperBound = Integer.MAX_VALUE; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or <CODE>null</CODE> if |
| | | * there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the command |
| | | * line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than once to |
| | | * provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be displayed in |
| | | * usage information, or <CODE>null</CODE> if this argument does not |
| | | * require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if none is |
| | | * provided in a properties file or on the command line. This may be |
| | | * <CODE>null</CODE> if there is no generic default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be used to |
| | | * override the default value but will be overridden by a |
| | | * command-line argument. |
| | | * @param hasLowerBound |
| | | * Indicates whether a lower bound should be enforced for values of |
| | | * this argument. |
| | | * @param lowerBound |
| | | * The lower bound that should be enforced for values of this |
| | | * argument. |
| | | * @param hasUpperBound |
| | | * Indicates whether an upperbound should be enforced for values of |
| | | * this argument. |
| | | * @param upperBound |
| | | * The upper bound that should be enforced for values of this |
| | | * argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to create |
| | | * this argument. |
| | | */ |
| | | public IntegerArgument(final String name, final Character shortIdentifier, |
| | | final String longIdentifier, final boolean isRequired, |
| | | final boolean isMultiValued, final boolean needsValue, |
| | | final LocalizableMessage valuePlaceholder, final int defaultValue, |
| | | final String propertyName, final boolean hasLowerBound, |
| | | final double lowerBound, final boolean hasUpperBound, |
| | | final double upperBound, final LocalizableMessage description) |
| | | throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, isMultiValued, |
| | | needsValue, valuePlaceholder, String.valueOf(defaultValue), |
| | | propertyName, description); |
| | | |
| | | this.hasLowerBound = hasLowerBound; |
| | | this.hasUpperBound = hasUpperBound; |
| | | this.lowerBound = lowerBound; |
| | | this.upperBound = upperBound; |
| | | |
| | | if (hasLowerBound && hasUpperBound && (lowerBound > upperBound)) |
| | | { |
| | | final LocalizableMessage message = ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND |
| | | .get(name, lowerBound, upperBound); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or <CODE>null</CODE> if |
| | | * there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the command |
| | | * line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than once to |
| | | * provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be displayed in |
| | | * usage information, or <CODE>null</CODE> if this argument does not |
| | | * require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if none is |
| | | * provided in a properties file or on the command line. This may be |
| | | * <CODE>null</CODE> if there is no generic default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be used to |
| | | * override the default value but will be overridden by a |
| | | * command-line argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to create |
| | | * this argument. |
| | | */ |
| | | public IntegerArgument(final String name, final Character shortIdentifier, |
| | | final String longIdentifier, final boolean isRequired, |
| | | final boolean isMultiValued, final boolean needsValue, |
| | | final LocalizableMessage valuePlaceholder, final int defaultValue, |
| | | final String propertyName, final LocalizableMessage description) |
| | | throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, isMultiValued, |
| | | needsValue, valuePlaceholder, String.valueOf(defaultValue), |
| | | propertyName, description); |
| | | |
| | | hasLowerBound = false; |
| | | hasUpperBound = false; |
| | | lowerBound = Integer.MIN_VALUE; |
| | | upperBound = Integer.MAX_VALUE; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or <CODE>null</CODE> if |
| | | * there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the command |
| | | * line. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be displayed in |
| | | * usage information, or <CODE>null</CODE> if this argument does not |
| | | * require a value. |
| | | * @param hasLowerBound |
| | | * Indicates whether a lower bound should be enforced for values of |
| | | * this argument. |
| | | * @param lowerBound |
| | | * The lower bound that should be enforced for values of this |
| | | * argument. |
| | | * @param hasUpperBound |
| | | * Indicates whether an upperbound should be enforced for values of |
| | | * this argument. |
| | | * @param upperBound |
| | | * The upper bound that should be enforced for values of this |
| | | * argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to create |
| | | * this argument. |
| | | */ |
| | | public IntegerArgument(final String name, final Character shortIdentifier, |
| | | final String longIdentifier, final boolean isRequired, |
| | | final boolean needsValue, final LocalizableMessage valuePlaceholder, |
| | | final boolean hasLowerBound, final double lowerBound, |
| | | final boolean hasUpperBound, final double upperBound, |
| | | final LocalizableMessage description) throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, false, needsValue, |
| | | valuePlaceholder, null, null, description); |
| | | |
| | | this.hasLowerBound = hasLowerBound; |
| | | this.hasUpperBound = hasUpperBound; |
| | | this.lowerBound = lowerBound; |
| | | this.upperBound = upperBound; |
| | | |
| | | if (hasLowerBound && hasUpperBound && (lowerBound > upperBound)) |
| | | { |
| | | final LocalizableMessage message = ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND |
| | | .get(name, lowerBound, upperBound); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or <CODE>null</CODE> if |
| | | * there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the command |
| | | * line. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be displayed in |
| | | * usage information, or <CODE>null</CODE> if this argument does not |
| | | * require a value. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to create |
| | | * this argument. |
| | | */ |
| | | public IntegerArgument(final String name, final Character shortIdentifier, |
| | | final String longIdentifier, final boolean isRequired, |
| | | final boolean needsValue, final LocalizableMessage valuePlaceholder, |
| | | final LocalizableMessage description) throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, false, needsValue, |
| | | valuePlaceholder, null, null, description); |
| | | |
| | | hasLowerBound = false; |
| | | hasUpperBound = false; |
| | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * Retrieves the lower bound that may be enforced for values of this argument. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this |
| | | * argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the |
| | | * command line. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be |
| | | * displayed in usage information, or <CODE>null</CODE> if |
| | | * this argument does not require a value. |
| | | * @param hasLowerBound |
| | | * Indicates whether a lower bound should be enforced for |
| | | * values of this argument. |
| | | * @param lowerBound |
| | | * The lower bound that should be enforced for values of this |
| | | * argument. |
| | | * @param hasUpperBound |
| | | * Indicates whether an upperbound should be enforced for |
| | | * values of this argument. |
| | | * @param upperBound |
| | | * The upper bound that should be enforced for values of this |
| | | * argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to |
| | | * create this argument. |
| | | */ |
| | | public IntegerArgument(String name, Character shortIdentifier, |
| | | String longIdentifier, boolean isRequired, boolean needsValue, |
| | | LocalizableMessage valuePlaceholder, boolean hasLowerBound, |
| | | double lowerBound, boolean hasUpperBound, double upperBound, |
| | | LocalizableMessage description) throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, false, |
| | | needsValue, valuePlaceholder, null, null, description); |
| | | |
| | | this.hasLowerBound = hasLowerBound; |
| | | this.hasUpperBound = hasUpperBound; |
| | | this.lowerBound = lowerBound; |
| | | this.upperBound = upperBound; |
| | | |
| | | if (hasLowerBound && hasUpperBound && (lowerBound > upperBound)) |
| | | { |
| | | LocalizableMessage message = |
| | | ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND.get(name, |
| | | lowerBound, upperBound); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this |
| | | * argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the |
| | | * command line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than |
| | | * once to provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be |
| | | * displayed in usage information, or <CODE>null</CODE> if |
| | | * this argument does not require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if |
| | | * none is provided in a properties file or on the command |
| | | * line. This may be <CODE>null</CODE> if there is no generic |
| | | * default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be |
| | | * used to override the default value but will be overridden |
| | | * by a command-line argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to |
| | | * create this argument. |
| | | */ |
| | | public IntegerArgument(String name, Character shortIdentifier, |
| | | String longIdentifier, boolean isRequired, boolean isMultiValued, |
| | | boolean needsValue, LocalizableMessage valuePlaceholder, int defaultValue, |
| | | String propertyName, LocalizableMessage description) |
| | | throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, |
| | | isMultiValued, needsValue, valuePlaceholder, String |
| | | .valueOf(defaultValue), propertyName, description); |
| | | |
| | | hasLowerBound = false; |
| | | hasUpperBound = false; |
| | | lowerBound = Integer.MIN_VALUE; |
| | | upperBound = Integer.MAX_VALUE; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this |
| | | * argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the |
| | | * command line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than |
| | | * once to provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be |
| | | * displayed in usage information, or <CODE>null</CODE> if |
| | | * this argument does not require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if |
| | | * none is provided in a properties file or on the command |
| | | * line. This may be <CODE>null</CODE> if there is no generic |
| | | * default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be |
| | | * used to override the default value but will be overridden |
| | | * by a command-line argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to |
| | | * create this argument. |
| | | */ |
| | | public IntegerArgument(String name, Character shortIdentifier, |
| | | String longIdentifier, boolean isRequired, boolean isMultiValued, |
| | | boolean needsValue, LocalizableMessage valuePlaceholder, |
| | | double defaultValue, String propertyName, LocalizableMessage description) |
| | | throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, |
| | | isMultiValued, needsValue, valuePlaceholder, String.format( |
| | | "%f", defaultValue), propertyName, description); |
| | | |
| | | hasLowerBound = false; |
| | | hasUpperBound = false; |
| | | lowerBound = Integer.MIN_VALUE; |
| | | upperBound = Integer.MAX_VALUE; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this |
| | | * argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the |
| | | * command line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than |
| | | * once to provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be |
| | | * displayed in usage information, or <CODE>null</CODE> if |
| | | * this argument does not require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if |
| | | * none is provided in a properties file or on the command |
| | | * line. This may be <CODE>null</CODE> if there is no generic |
| | | * default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be |
| | | * used to override the default value but will be overridden |
| | | * by a command-line argument. |
| | | * @param hasLowerBound |
| | | * Indicates whether a lower bound should be enforced for |
| | | * values of this argument. |
| | | * @param lowerBound |
| | | * The lower bound that should be enforced for values of this |
| | | * argument. |
| | | * @param hasUpperBound |
| | | * Indicates whether an upperbound should be enforced for |
| | | * values of this argument. |
| | | * @param upperBound |
| | | * The upper bound that should be enforced for values of this |
| | | * argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to |
| | | * create this argument. |
| | | */ |
| | | public IntegerArgument(String name, Character shortIdentifier, |
| | | String longIdentifier, boolean isRequired, boolean isMultiValued, |
| | | boolean needsValue, LocalizableMessage valuePlaceholder, int defaultValue, |
| | | String propertyName, boolean hasLowerBound, double lowerBound, |
| | | boolean hasUpperBound, double upperBound, LocalizableMessage description) |
| | | throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, |
| | | isMultiValued, needsValue, valuePlaceholder, String |
| | | .valueOf(defaultValue), propertyName, description); |
| | | |
| | | this.hasLowerBound = hasLowerBound; |
| | | this.hasUpperBound = hasUpperBound; |
| | | this.lowerBound = lowerBound; |
| | | this.upperBound = upperBound; |
| | | |
| | | if (hasLowerBound && hasUpperBound && (lowerBound > upperBound)) |
| | | { |
| | | LocalizableMessage message = |
| | | ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND.get(name, |
| | | lowerBound, upperBound); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Creates a new integer argument with the provided information. |
| | | * |
| | | * @param name |
| | | * The generic name that should be used to refer to this |
| | | * argument. |
| | | * @param shortIdentifier |
| | | * The single-character identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param longIdentifier |
| | | * The long identifier for this argument, or |
| | | * <CODE>null</CODE> if there is none. |
| | | * @param isRequired |
| | | * Indicates whether this argument must be specified on the |
| | | * command line. |
| | | * @param isMultiValued |
| | | * Indicates whether this argument may be specified more than |
| | | * once to provide multiple values. |
| | | * @param needsValue |
| | | * Indicates whether this argument requires a value. |
| | | * @param valuePlaceholder |
| | | * The placeholder for the argument value that will be |
| | | * displayed in usage information, or <CODE>null</CODE> if |
| | | * this argument does not require a value. |
| | | * @param defaultValue |
| | | * The default value that should be used for this argument if |
| | | * none is provided in a properties file or on the command |
| | | * line. This may be <CODE>null</CODE> if there is no generic |
| | | * default. |
| | | * @param propertyName |
| | | * The name of the property in a property file that may be |
| | | * used to override the default value but will be overridden |
| | | * by a command-line argument. |
| | | * @param hasLowerBound |
| | | * Indicates whether a lower bound should be enforced for |
| | | * values of this argument. |
| | | * @param lowerBound |
| | | * The lower bound that should be enforced for values of this |
| | | * argument. |
| | | * @param hasUpperBound |
| | | * Indicates whether an upperbound should be enforced for |
| | | * values of this argument. |
| | | * @param upperBound |
| | | * The upper bound that should be enforced for values of this |
| | | * argument. |
| | | * @param description |
| | | * LocalizableMessage for the description of this argument. |
| | | * @throws ArgumentException |
| | | * If there is a problem with any of the parameters used to |
| | | * create this argument. |
| | | */ |
| | | public IntegerArgument(String name, Character shortIdentifier, |
| | | String longIdentifier, boolean isRequired, boolean isMultiValued, |
| | | boolean needsValue, LocalizableMessage valuePlaceholder, |
| | | double defaultValue, String propertyName, boolean hasLowerBound, |
| | | double lowerBound, boolean hasUpperBound, double upperBound, |
| | | LocalizableMessage description) throws ArgumentException |
| | | { |
| | | super(name, shortIdentifier, longIdentifier, isRequired, |
| | | isMultiValued, needsValue, valuePlaceholder, String |
| | | .valueOf(defaultValue), propertyName, description); |
| | | |
| | | this.hasLowerBound = hasLowerBound; |
| | | this.hasUpperBound = hasUpperBound; |
| | | this.lowerBound = lowerBound; |
| | | this.upperBound = upperBound; |
| | | |
| | | if (hasLowerBound && hasUpperBound && (lowerBound > upperBound)) |
| | | { |
| | | LocalizableMessage message = |
| | | ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND.get(name, |
| | | lowerBound, upperBound); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Indicates whether a lower bound should be enforced for values of |
| | | * this argument. |
| | | * |
| | | * @return <CODE>true</CODE> if a lower bound should be enforced for |
| | | * values of this argument, or <CODE>false</CODE> if not. |
| | | */ |
| | | public boolean hasLowerBound() |
| | | { |
| | | return hasLowerBound; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Retrieves the lower bound that may be enforced for values of this |
| | | * argument. |
| | | * |
| | | * @return The lower bound that may be enforced for values of this |
| | | * argument. |
| | | * @return The lower bound that may be enforced for values of this argument. |
| | | */ |
| | | public double getLowerBound() |
| | | { |
| | |
| | | |
| | | |
| | | /** |
| | | * Indicates whether a upper bound should be enforced for values of |
| | | * this argument. |
| | | * Retrieves the upper bound that may be enforced for values of this argument. |
| | | * |
| | | * @return <CODE>true</CODE> if a upper bound should be enforced for |
| | | * values of this argument, or <CODE>false</CODE> if not. |
| | | * @return The upper bound that may be enforced for values of this argument. |
| | | */ |
| | | public boolean hasUpperBound() |
| | | public double getUpperBound() |
| | | { |
| | | return hasUpperBound; |
| | | return upperBound; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Retrieves the upper bound that may be enforced for values of this |
| | | * Indicates whether a lower bound should be enforced for values of this |
| | | * argument. |
| | | * |
| | | * @return The upper bound that may be enforced for values of this |
| | | * argument. |
| | | * @return <CODE>true</CODE> if a lower bound should be enforced for values of |
| | | * this argument, or <CODE>false</CODE> if not. |
| | | */ |
| | | public double getUpperBound() |
| | | public boolean hasLowerBound() |
| | | { |
| | | return upperBound; |
| | | return hasLowerBound; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Indicates whether a upper bound should be enforced for values of this |
| | | * argument. |
| | | * |
| | | * @return <CODE>true</CODE> if a upper bound should be enforced for values of |
| | | * this argument, or <CODE>false</CODE> if not. |
| | | */ |
| | | public boolean hasUpperBound() |
| | | { |
| | | return hasUpperBound; |
| | | } |
| | | |
| | | |
| | |
| | | * @param valueString |
| | | * The value for which to make the determination. |
| | | * @param invalidReason |
| | | * A buffer into which the invalid reason may be written if |
| | | * the value is not acceptable. |
| | | * @return <CODE>true</CODE> if the value is acceptable, or |
| | | * <CODE>false</CODE> if it is not. |
| | | * A buffer into which the invalid reason may be written if the value |
| | | * is not acceptable. |
| | | * @return <CODE>true</CODE> if the value is acceptable, or <CODE>false</CODE> |
| | | * if it is not. |
| | | */ |
| | | public boolean valueIsAcceptable(String valueString, |
| | | LocalizableMessageBuilder invalidReason) |
| | | @Override |
| | | public boolean valueIsAcceptable(final String valueString, |
| | | final LocalizableMessageBuilder invalidReason) |
| | | { |
| | | // First, the value must be decodable as an integer. |
| | | double intValue; |
| | |
| | | { |
| | | intValue = Double.parseDouble(valueString); |
| | | } |
| | | catch (Exception e) |
| | | catch (final Exception e) |
| | | { |
| | | invalidReason.append(ERR_ARG_CANNOT_DECODE_AS_INT.get( |
| | | valueString, getName())); |
| | | invalidReason.append(ERR_ARG_CANNOT_DECODE_AS_INT.get(valueString, |
| | | getName())); |
| | | return false; |
| | | } |
| | | |
| | |
| | | // to it. |
| | | if (hasLowerBound && (intValue < lowerBound)) |
| | | { |
| | | invalidReason.append(ERR_INTARG_VALUE_BELOW_LOWER_BOUND.get( |
| | | getName(), intValue, lowerBound)); |
| | | invalidReason.append(ERR_INTARG_VALUE_BELOW_LOWER_BOUND.get(getName(), |
| | | intValue, lowerBound)); |
| | | return false; |
| | | } |
| | | |
| | |
| | | if (hasUpperBound && (intValue > upperBound)) |
| | | { |
| | | |
| | | invalidReason.append(ERR_INTARG_VALUE_ABOVE_UPPER_BOUND.get( |
| | | getName(), intValue, upperBound)); |
| | | invalidReason.append(ERR_INTARG_VALUE_ABOVE_UPPER_BOUND.get(getName(), |
| | | intValue, upperBound)); |
| | | return false; |
| | | } |
| | | |