From 263d085885df024dca9250cc03c807912b0a7662 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 24 Apr 2012 22:33:21 +0000
Subject: [PATCH] Reformat to comply with new Checkstyle rules.
---
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/IntegerArgument.java | 930 +++++++++++++++++++++++++++------------------------------
1 files changed, 441 insertions(+), 489 deletions(-)
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/IntegerArgument.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/IntegerArgument.java
index ff6f72f..3effa04 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/IntegerArgument.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/IntegerArgument.java
@@ -6,17 +6,16 @@
* (the "License"). You may not use this file except in compliance
* with the License.
*
- * You can obtain a copy of the license at
- * trunk/opendj3/legal-notices/CDDLv1_0.txt
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* or http://forgerock.org/license/CDDLv1.0.html.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at
- * trunk/opendj3/legal-notices/CDDLv1_0.txt. If applicable,
- * add the following below this CDDL HEADER, with the fields enclosed
- * by brackets "[]" replaced with your own identifying information:
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
@@ -26,508 +25,461 @@
*/
package com.forgerock.opendj.ldap.tools;
-
-
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_ARG_CANNOT_DECODE_AS_INT;
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND;
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_INTARG_VALUE_ABOVE_UPPER_BOUND;
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_INTARG_VALUE_BELOW_LOWER_BOUND;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
-
-
/**
* 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 final boolean hasLowerBound;
+final class IntegerArgument extends Argument {
+ // Indicates whether a lower bound will be enforced for this argument.
+ private final boolean hasLowerBound;
- // Indicates whether an upper bound will be enforced for this
- // argument.
- private final boolean hasUpperBound;
+ // Indicates whether an upper bound will be enforced for this
+ // argument.
+ private final boolean hasUpperBound;
- // The lower bound that will be enforced for this argument.
- private final double lowerBound;
+ // The lower bound that will be enforced for this argument.
+ private final double lowerBound;
- // The upper bound that will be enforced for this argument.
- private final double upperBound;
+ // The upper bound that will be enforced for this argument.
+ 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.
+ * @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 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, isMultiValued, needsValue,
+ valuePlaceholder, String.valueOf(defaultValue), propertyName, description);
+ this.hasLowerBound = hasLowerBound;
+ this.hasUpperBound = hasUpperBound;
+ this.lowerBound = lowerBound;
+ this.upperBound = upperBound;
- /**
- * 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 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, 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;
- lowerBound = Double.MIN_VALUE;
- upperBound = Double.MAX_VALUE;
- }
-
-
-
- /**
- * 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.
- */
- public double getLowerBound()
- {
- return lowerBound;
- }
-
-
-
- /**
- * Retrieves the upper bound that may be enforced for values of this argument.
- *
- * @return The upper bound that may be enforced for values of this argument.
- */
- public double getUpperBound()
- {
- return upperBound;
- }
-
-
-
- /**
- * 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;
- }
-
-
-
- /**
- * 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;
- }
-
-
-
- /**
- * Indicates whether the provided value is acceptable for use in this
- * argument.
- *
- * @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.
- */
- @Override
- public boolean valueIsAcceptable(final String valueString,
- final LocalizableMessageBuilder invalidReason)
- {
- // First, the value must be decodable as an integer.
- double intValue;
- try
- {
- intValue = Double.parseDouble(valueString);
- }
- catch (final Exception e)
- {
- invalidReason.append(ERR_ARG_CANNOT_DECODE_AS_INT.get(valueString,
- getName()));
- return false;
+ if (hasLowerBound && hasUpperBound && (lowerBound > upperBound)) {
+ final LocalizableMessage message =
+ ERR_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND.get(name, lowerBound, upperBound);
+ throw new ArgumentException(message);
+ }
}
- // If there is a lower bound, then the value must be greater than or
- // equal to it.
- if (hasLowerBound && (intValue < lowerBound))
- {
- invalidReason.append(ERR_INTARG_VALUE_BELOW_LOWER_BOUND.get(getName(),
- intValue, lowerBound));
- return false;
+ /**
+ * 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;
}
- // If there is an upper bound, then the value must be less than or
- // equal to it.
- if (hasUpperBound && (intValue > upperBound))
- {
+ /**
+ * 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);
- invalidReason.append(ERR_INTARG_VALUE_ABOVE_UPPER_BOUND.get(getName(),
- intValue, upperBound));
- return false;
+ 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);
+ }
}
- // At this point, the value should be acceptable.
- return true;
- }
+ /**
+ * 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;
+ lowerBound = Double.MIN_VALUE;
+ upperBound = Double.MAX_VALUE;
+ }
+
+ /**
+ * 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.
+ */
+ public double getLowerBound() {
+ return lowerBound;
+ }
+
+ /**
+ * Retrieves the upper bound that may be enforced for values of this
+ * argument.
+ *
+ * @return The upper bound that may be enforced for values of this argument.
+ */
+ public double getUpperBound() {
+ return upperBound;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Indicates whether the provided value is acceptable for use in this
+ * argument.
+ *
+ * @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.
+ */
+ @Override
+ public boolean valueIsAcceptable(final String valueString,
+ final LocalizableMessageBuilder invalidReason) {
+ // First, the value must be decodable as an integer.
+ double intValue;
+ try {
+ intValue = Double.parseDouble(valueString);
+ } catch (final Exception e) {
+ invalidReason.append(ERR_ARG_CANNOT_DECODE_AS_INT.get(valueString, getName()));
+ return false;
+ }
+
+ // If there is a lower bound, then the value must be greater than or
+ // equal to it.
+ if (hasLowerBound && (intValue < lowerBound)) {
+ invalidReason.append(ERR_INTARG_VALUE_BELOW_LOWER_BOUND.get(getName(), intValue,
+ lowerBound));
+ return false;
+ }
+
+ // If there is an upper bound, then the value must be less than or
+ // equal to it.
+ if (hasUpperBound && (intValue > upperBound)) {
+
+ invalidReason.append(ERR_INTARG_VALUE_ABOVE_UPPER_BOUND.get(getName(), intValue,
+ upperBound));
+ return false;
+ }
+
+ // At this point, the value should be acceptable.
+ return true;
+ }
}
--
Gitblit v1.10.0