From f2160f4bd1c8ac67e5a86a6710d431e8932877f9 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 28 May 2010 11:47:51 +0000
Subject: [PATCH] Synchronize SDK on java.net with internal repository.
---
sdk/src/com/sun/opends/sdk/tools/Argument.java | 1048 ++++++++++++++++++++++++++++-----------------------------
1 files changed, 514 insertions(+), 534 deletions(-)
diff --git a/sdk/src/com/sun/opends/sdk/tools/Argument.java b/sdk/src/com/sun/opends/sdk/tools/Argument.java
index e501d99..a87c623 100644
--- a/sdk/src/com/sun/opends/sdk/tools/Argument.java
+++ b/sdk/src/com/sun/opends/sdk/tools/Argument.java
@@ -29,7 +29,7 @@
import static com.sun.opends.sdk.messages.Messages.*;
-import static com.sun.opends.sdk.util.StaticUtils.*;
+import static com.sun.opends.sdk.util.StaticUtils.toLowerCase;
import java.util.Iterator;
import java.util.LinkedList;
@@ -39,11 +39,10 @@
-
/**
- * This class defines a generic argument that may be used in the
- * argument list for an application. This is an abstract class that must
- * be subclassed in order to provide specific functionality.
+ * This class defines a generic argument that may be used in the argument list
+ * for an application. This is an abstract class that must be subclassed in
+ * order to provide specific functionality.
*/
abstract class Argument
{
@@ -67,22 +66,22 @@
private boolean needsValue;
// The single-character identifier for this argument.
- private Character shortIdentifier;
+ private final Character shortIdentifier;
// The unique ID of the description for this argument.
- private LocalizableMessage description;
+ private final LocalizableMessage description;
// The set of values for this argument.
- private LinkedList<String> values;
+ private final LinkedList<String> values;
// The default value for the argument if none other is provided.
private String defaultValue;
// The long identifier for this argument.
- private String longIdentifier;
+ private final String longIdentifier;
// The generic name that will be used to refer to this argument.
- private String name;
+ private final String name;
// The name of the property that can be used to set the default value.
private String propertyName;
@@ -103,45 +102,44 @@
* Creates a new 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.
+ * 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.
+ * 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.
+ * 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.
+ * If there is a problem with any of the parameters used to create
+ * this argument.
*/
- protected Argument(String name, Character shortIdentifier,
- String longIdentifier, boolean isRequired, boolean isMultiValued,
- boolean needsValue, LocalizableMessage valuePlaceholder,
- String defaultValue, String propertyName, LocalizableMessage description)
+ protected Argument(final String name, final Character shortIdentifier,
+ final String longIdentifier, final boolean isRequired,
+ final boolean isMultiValued, final boolean needsValue,
+ final LocalizableMessage valuePlaceholder, final String defaultValue,
+ final String propertyName, final LocalizableMessage description)
throws ArgumentException
{
this.name = name;
@@ -158,13 +156,13 @@
if ((shortIdentifier == null) && (longIdentifier == null))
{
- LocalizableMessage message = ERR_ARG_NO_IDENTIFIER.get(name);
+ final LocalizableMessage message = ERR_ARG_NO_IDENTIFIER.get(name);
throw new ArgumentException(message);
}
if (needsValue && (valuePlaceholder == null))
{
- LocalizableMessage message = ERR_ARG_NO_VALUE_PLACEHOLDER.get(name);
+ final LocalizableMessage message = ERR_ARG_NO_VALUE_PLACEHOLDER.get(name);
throw new ArgumentException(message);
}
@@ -176,241 +174,87 @@
/**
- * Retrieves the generic name that will be used to refer to this
- * argument.
+ * Adds a value to the set of values for this argument. This should only be
+ * called if the value is allowed by the <CODE>valueIsAcceptable</CODE>
+ * method.
*
- * @return The generic name that will be used to refer to this
- * argument.
+ * @param valueString
+ * The string representation of the value to add to this argument.
*/
- public String getName()
+ public void addValue(final String valueString)
{
- return name;
+ values.add(valueString);
}
/**
- * Retrieves the single-character identifier that may be used to
- * specify the value of this argument.
- *
- * @return The single-character identifier that may be used to specify
- * the value of this argument, or <CODE>null</CODE> if there
- * is none.
+ * Clears the set of values assigned to this argument.
*/
- public Character getShortIdentifier()
+ public void clearValues()
{
- return shortIdentifier;
+ values.clear();
}
/**
- * Retrieves the long (multi-character) identifier that may be used to
- * specify the value of this argument.
+ * Retrieves the value of this argument as a <CODE>Boolean</CODE>.
*
- * @return The long (multi-character) identifier that may be used to
- * specify the value of this argument.
+ * @return The value of this argument as a <CODE>Boolean</CODE>.
+ * @throws ArgumentException
+ * If this argument cannot be interpreted as a Boolean value.
*/
- public String getLongIdentifier()
+ public boolean getBooleanValue() throws ArgumentException
{
- return longIdentifier;
+ if (values.isEmpty())
+ {
+ final LocalizableMessage message = ERR_ARG_NO_BOOLEAN_VALUE.get(name);
+ throw new ArgumentException(message);
+ }
+
+ final Iterator<String> iterator = values.iterator();
+ final String valueString = toLowerCase(iterator.next());
+
+ boolean booleanValue;
+ if (valueString.equals("true") || valueString.equals("yes")
+ || valueString.equals("on") || valueString.equals("1"))
+ {
+ booleanValue = true;
+ }
+ else if (valueString.equals("false") || valueString.equals("no")
+ || valueString.equals("off") || valueString.equals("0"))
+ {
+ booleanValue = false;
+ }
+ else
+ {
+ final LocalizableMessage message = ERR_ARG_CANNOT_DECODE_AS_BOOLEAN.get(
+ valueString, name);
+ throw new ArgumentException(message);
+ }
+
+ if (iterator.hasNext())
+ {
+ final LocalizableMessage message = ERR_ARG_BOOLEAN_MULTIPLE_VALUES
+ .get(name);
+ throw new ArgumentException(message);
+ }
+ else
+ {
+ return booleanValue;
+ }
}
/**
- * Indicates whether this argument is required to have at least one
- * value.
+ * Retrieves the default value that will be used for this argument if it is
+ * not specified on the command line and it is not set from a properties file.
*
- * @return <CODE>true</CODE> if this argument is required to have at
- * least one value, or <CODE>false</CODE> if it does not need
- * to have a value.
- */
- public boolean isRequired()
- {
- return isRequired;
- }
-
-
-
- /**
- * Specifies whether this argument is required to have at least one
- * value.
- *
- * @param isRequired
- * Indicates whether this argument is required to have at
- * least one value.
- */
- public void setRequired(boolean isRequired)
- {
- this.isRequired = isRequired;
- }
-
-
-
- /**
- * Indicates whether this argument is present in the parsed set of
- * command-line arguments.
- *
- * @return <CODE>true</CODE> if this argument is present in the parsed
- * set of command-line arguments, or <CODE>false</CODE> if
- * not.
- */
- public boolean isPresent()
- {
- return isPresent;
- }
-
-
-
- /**
- * Specifies whether this argument is present in the parsed set of
- * command-line arguments.
- *
- * @param isPresent
- * Indicates whether this argument is present in the set of
- * command-line arguments.
- */
- public void setPresent(boolean isPresent)
- {
- this.isPresent = isPresent;
- }
-
-
-
- /**
- * Indicates whether this argument should be hidden from the usage
- * information.
- *
- * @return <CODE>true</CODE> if this argument should be hidden from
- * the usage information, or <CODE>false</CODE> if not.
- */
- public boolean isHidden()
- {
- return isHidden;
- }
-
-
-
- /**
- * Specifies whether this argument should be hidden from the usage
- * information.
- *
- * @param isHidden
- * Indicates whether this argument should be hidden from the
- * usage information.
- */
- public void setHidden(boolean isHidden)
- {
- this.isHidden = isHidden;
- }
-
-
-
- /**
- * Indicates whether this argument may be provided more than once on
- * the command line to specify multiple values.
- *
- * @return <CODE>true</CODE> if this argument may be provided more
- * than once on the command line to specify multiple values,
- * or <CODE>false</CODE> if it may have at most one value.
- */
- public boolean isMultiValued()
- {
- return isMultiValued;
- }
-
-
-
- /**
- * Specifies whether this argument may be provided more than once on
- * the command line to specify multiple values.
- *
- * @param isMultiValued
- * Indicates whether this argument may be provided more than
- * once on the command line to specify multiple values.
- */
- public void setMultiValued(boolean isMultiValued)
- {
- this.isMultiValued = isMultiValued;
- }
-
-
-
- /**
- * Indicates whether a value must be provided with this argument if it
- * is present.
- *
- * @return <CODE>true</CODE> if a value must be provided with the
- * argument if it is present, or <CODE>false</CODE> if the
- * argument does not take a value and the presence of the
- * argument identifier itself is sufficient to convey the
- * necessary information.
- */
- public boolean needsValue()
- {
- return needsValue;
- }
-
-
-
- /**
- * Specifies whether a value must be provided with this argument if it
- * is present. If this is changed from <CODE>false</CODE> to
- * <CODE>true</CODE>, then a value placeholder must also be provided.
- *
- * @param needsValue
- * Indicates whether a value must be provided with this
- * argument if it is present.
- */
- public void setNeedsValue(boolean needsValue)
- {
- this.needsValue = needsValue;
- }
-
-
-
- /**
- * Retrieves the value placeholder that will be displayed for this
- * argument in the generated usage information.
- *
- * @return The value placeholder that will be displayed for this
- * argument in the generated usage information, or
- * <CODE>null</CODE> if there is none.
- */
- public LocalizableMessage getValuePlaceholder()
- {
- return valuePlaceholder;
- }
-
-
-
- /**
- * Specifies the value placeholder that will be displayed for this
- * argument in the generated usage information. It may be
- * <CODE>null</CODE> only if <CODE>needsValue()</CODE> returns
- * <CODE>false</CODE>.
- *
- * @param valuePlaceholder
- * The value placeholder that will be displayed for this
- * argument in the generated usage information.
- */
- public void setValuePlaceholder(LocalizableMessage valuePlaceholder)
- {
- this.valuePlaceholder = valuePlaceholder;
- }
-
-
-
- /**
- * Retrieves the default value that will be used for this argument if
- * it is not specified on the command line and it is not set from a
- * properties file.
- *
- * @return The default value that will be used for this argument if it
- * is not specified on the command line and it is not set from
- * a properties file, or <CODE>null</CODE> if there is no
- * default value.
+ * @return The default value that will be used for this argument if it is not
+ * specified on the command line and it is not set from a properties
+ * file, or <CODE>null</CODE> if there is no default value.
*/
public String getDefaultValue()
{
@@ -420,88 +264,6 @@
/**
- * Specifies the default value that will be used for this argument if
- * it is not specified on the command line and it is not set from a
- * properties file.
- *
- * @param defaultValue
- * The default value that will be used for this argument if
- * it is not specified on the command line and it is not set
- * from a properties file.
- */
- public void setDefaultValue(String defaultValue)
- {
- this.defaultValue = defaultValue;
- }
-
-
-
- /**
- * Retrieves the name of a property in a properties file that may be
- * used to set the default value for this argument if it is present. A
- * value read from a properties file will override the default value
- * returned from the <CODE>getDefaultValue</CODE>, but the properties
- * file value will be overridden by a value supplied on the command
- * line.
- *
- * @return The name of a property in a properties file that may be
- * used to set the default value for this argument if it is
- * present.
- */
- public String getPropertyName()
- {
- return propertyName;
- }
-
-
-
- /**
- * Specifies the name of a property in a properties file that may be
- * used to set the default value for this argument if it is present.
- *
- * @param propertyName
- * The name of a property in a properties file that may be
- * used to set the default value for this argument if it is
- * present.
- */
- public void setPropertyName(String propertyName)
- {
- this.propertyName = propertyName;
- }
-
-
-
- /**
- * Indicates whether this argument was provided in the set of
- * properties found is a properties file.
- *
- * @return <CODE>true</CODE> if this argument was provided in the set
- * of properties found is a properties file, or
- * <CODE>false</CODE> if not.
- */
- public boolean isValueSetByProperty()
- {
- return isValueSetByProperty;
- }
-
-
-
- /**
- * Specifies whether this argument was provided in the set of
- * properties found is a properties file.
- *
- * @param isValueSetByProperty
- * Specify whether this argument was provided in the set of
- * properties found is a properties file.
- */
- public void setValueSetByProperty(boolean isValueSetByProperty)
- {
- this.isValueSetByProperty = isValueSetByProperty;
- }
-
-
-
- /**
* Retrieves the human-readable description for this argument.
*
* @return The human-readable description for this argument.
@@ -514,25 +276,225 @@
/**
- * Indicates whether this argument has at least one value.
+ * Retrieves the value of this argument as an integer.
*
- * @return <CODE>true</CODE> if this argument has at least one value,
- * or <CODE>false</CODE> if it does not have any values.
+ * @return The value of this argument as an integer.
+ * @throws ArgumentException
+ * If there are multiple values, or the value cannot be parsed as an
+ * integer.
*/
- public boolean hasValue()
+ public double getDoubleValue() throws ArgumentException
{
- return (!values.isEmpty());
+ if (values.isEmpty())
+ {
+ final LocalizableMessage message = ERR_ARG_NO_INT_VALUE.get(name);
+ throw new ArgumentException(message);
+ }
+
+ final Iterator<String> iterator = values.iterator();
+ final String valueString = iterator.next();
+
+ double intValue;
+ try
+ {
+ intValue = Double.parseDouble(valueString);
+ }
+ catch (final Exception e)
+ {
+ final LocalizableMessage message = ERR_ARG_CANNOT_DECODE_AS_INT.get(
+ valueString, name);
+ throw new ArgumentException(message, e);
+ }
+
+ if (iterator.hasNext())
+ {
+ final LocalizableMessage message = ERR_ARG_INT_MULTIPLE_VALUES.get(name);
+ throw new ArgumentException(message);
+ }
+ else
+ {
+ return intValue;
+ }
}
/**
- * Retrieves the string vale for this argument. If it has multiple
- * values, then the first will be returned. If it does not have any
- * values, then the default value will be returned.
+ * Retrieves the set of values for this argument as a list of integers.
*
- * @return The string value for this argument, or <CODE>null</CODE> if
- * there are no values and no default value has been given.
+ * @return A list of the integer representations of the values for this
+ * argument.
+ * @throws ArgumentException
+ * If any of the values cannot be parsed as an integer.
+ */
+ public LinkedList<Double> getDoubleValues() throws ArgumentException
+ {
+ final LinkedList<Double> intList = new LinkedList<Double>();
+
+ final Iterator<String> iterator = values.iterator();
+ while (iterator.hasNext())
+ {
+ final String valueString = iterator.next();
+
+ try
+ {
+ intList.add(Double.valueOf(valueString));
+ }
+ catch (final Exception e)
+ {
+ final LocalizableMessage message = ERR_ARG_CANNOT_DECODE_AS_INT.get(
+ valueString, name);
+ throw new ArgumentException(message, e);
+ }
+ }
+
+ return intList;
+ }
+
+
+
+ /**
+ * Retrieves the value of this argument as an integer.
+ *
+ * @return The value of this argument as an integer.
+ * @throws ArgumentException
+ * If there are multiple values, or the value cannot be parsed as an
+ * integer.
+ */
+ public int getIntValue() throws ArgumentException
+ {
+ if (values.isEmpty())
+ {
+ final LocalizableMessage message = ERR_ARG_NO_INT_VALUE.get(name);
+ throw new ArgumentException(message);
+ }
+
+ final Iterator<String> iterator = values.iterator();
+ final String valueString = iterator.next();
+
+ int intValue;
+ try
+ {
+ intValue = Integer.parseInt(valueString);
+ }
+ catch (final Exception e)
+ {
+ final LocalizableMessage message = ERR_ARG_CANNOT_DECODE_AS_INT.get(
+ valueString, name);
+ throw new ArgumentException(message, e);
+ }
+
+ if (iterator.hasNext())
+ {
+ final LocalizableMessage message = ERR_ARG_INT_MULTIPLE_VALUES.get(name);
+ throw new ArgumentException(message);
+ }
+ else
+ {
+ return intValue;
+ }
+ }
+
+
+
+ /**
+ * Retrieves the set of values for this argument as a list of integers.
+ *
+ * @return A list of the integer representations of the values for this
+ * argument.
+ * @throws ArgumentException
+ * If any of the values cannot be parsed as an integer.
+ */
+ public LinkedList<Integer> getIntValues() throws ArgumentException
+ {
+ final LinkedList<Integer> intList = new LinkedList<Integer>();
+
+ final Iterator<String> iterator = values.iterator();
+ while (iterator.hasNext())
+ {
+ final String valueString = iterator.next();
+
+ try
+ {
+ intList.add(Integer.valueOf(valueString));
+ }
+ catch (final Exception e)
+ {
+ final LocalizableMessage message = ERR_ARG_CANNOT_DECODE_AS_INT.get(
+ valueString, name);
+ throw new ArgumentException(message, e);
+ }
+ }
+
+ return intList;
+ }
+
+
+
+ /**
+ * Retrieves the long (multi-character) identifier that may be used to specify
+ * the value of this argument.
+ *
+ * @return The long (multi-character) identifier that may be used to specify
+ * the value of this argument.
+ */
+ public String getLongIdentifier()
+ {
+ return longIdentifier;
+ }
+
+
+
+ /**
+ * Retrieves the generic name that will be used to refer to this argument.
+ *
+ * @return The generic name that will be used to refer to this argument.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+
+
+ /**
+ * Retrieves the name of a property in a properties file that may be used to
+ * set the default value for this argument if it is present. A value read from
+ * a properties file will override the default value returned from the
+ * <CODE>getDefaultValue</CODE>, but the properties file value will be
+ * overridden by a value supplied on the command line.
+ *
+ * @return The name of a property in a properties file that may be used to set
+ * the default value for this argument if it is present.
+ */
+ public String getPropertyName()
+ {
+ return propertyName;
+ }
+
+
+
+ /**
+ * Retrieves the single-character identifier that may be used to specify the
+ * value of this argument.
+ *
+ * @return The single-character identifier that may be used to specify the
+ * value of this argument, or <CODE>null</CODE> if there is none.
+ */
+ public Character getShortIdentifier()
+ {
+ return shortIdentifier;
+ }
+
+
+
+ /**
+ * Retrieves the string vale for this argument. If it has multiple values,
+ * then the first will be returned. If it does not have any values, then the
+ * default value will be returned.
+ *
+ * @return The string value for this argument, or <CODE>null</CODE> if there
+ * are no values and no default value has been given.
*/
public String getValue()
{
@@ -547,6 +509,21 @@
/**
+ * Retrieves the value placeholder that will be displayed for this argument in
+ * the generated usage information.
+ *
+ * @return The value placeholder that will be displayed for this argument in
+ * the generated usage information, or <CODE>null</CODE> if there is
+ * none.
+ */
+ public LocalizableMessage getValuePlaceholder()
+ {
+ return valuePlaceholder;
+ }
+
+
+
+ /**
* Retrieves the set of string values for this argument.
*
* @return The set of string values for this argument.
@@ -559,209 +536,238 @@
/**
- * Retrieves the value of this argument as an integer.
+ * Indicates whether this argument has at least one value.
*
- * @return The value of this argument as an integer.
- * @throws ArgumentException
- * If there are multiple values, or the value cannot be
- * parsed as an integer.
+ * @return <CODE>true</CODE> if this argument has at least one value, or
+ * <CODE>false</CODE> if it does not have any values.
*/
- public int getIntValue() throws ArgumentException
+ public boolean hasValue()
{
- if (values.isEmpty())
- {
- LocalizableMessage message = ERR_ARG_NO_INT_VALUE.get(name);
- throw new ArgumentException(message);
- }
-
- Iterator<String> iterator = values.iterator();
- String valueString = iterator.next();
-
- int intValue;
- try
- {
- intValue = Integer.parseInt(valueString);
- }
- catch (Exception e)
- {
- LocalizableMessage message =
- ERR_ARG_CANNOT_DECODE_AS_INT.get(valueString, name);
- throw new ArgumentException(message, e);
- }
-
- if (iterator.hasNext())
- {
- LocalizableMessage message = ERR_ARG_INT_MULTIPLE_VALUES.get(name);
- throw new ArgumentException(message);
- }
- else
- {
- return intValue;
- }
+ return (!values.isEmpty());
}
/**
- * Retrieves the set of values for this argument as a list of
- * integers.
+ * Indicates whether this argument should be hidden from the usage
+ * information.
*
- * @return A list of the integer representations of the values for
- * this argument.
- * @throws ArgumentException
- * If any of the values cannot be parsed as an integer.
+ * @return <CODE>true</CODE> if this argument should be hidden from the usage
+ * information, or <CODE>false</CODE> if not.
*/
- public LinkedList<Integer> getIntValues() throws ArgumentException
+ public boolean isHidden()
{
- LinkedList<Integer> intList = new LinkedList<Integer>();
-
- Iterator<String> iterator = values.iterator();
- while (iterator.hasNext())
- {
- String valueString = iterator.next();
-
- try
- {
- intList.add(Integer.valueOf(valueString));
- }
- catch (Exception e)
- {
- LocalizableMessage message =
- ERR_ARG_CANNOT_DECODE_AS_INT.get(valueString, name);
- throw new ArgumentException(message, e);
- }
- }
-
- return intList;
+ return isHidden;
}
/**
- * Retrieves the value of this argument as an integer.
+ * Indicates whether this argument may be provided more than once on the
+ * command line to specify multiple values.
*
- * @return The value of this argument as an integer.
- * @throws ArgumentException
- * If there are multiple values, or the value cannot be
- * parsed as an integer.
+ * @return <CODE>true</CODE> if this argument may be provided more than once
+ * on the command line to specify multiple values, or
+ * <CODE>false</CODE> if it may have at most one value.
*/
- public double getDoubleValue() throws ArgumentException
+ public boolean isMultiValued()
{
- if (values.isEmpty())
- {
- LocalizableMessage message = ERR_ARG_NO_INT_VALUE.get(name);
- throw new ArgumentException(message);
- }
-
- Iterator<String> iterator = values.iterator();
- String valueString = iterator.next();
-
- double intValue;
- try
- {
- intValue = Double.parseDouble(valueString);
- }
- catch (Exception e)
- {
- LocalizableMessage message =
- ERR_ARG_CANNOT_DECODE_AS_INT.get(valueString, name);
- throw new ArgumentException(message, e);
- }
-
- if (iterator.hasNext())
- {
- LocalizableMessage message = ERR_ARG_INT_MULTIPLE_VALUES.get(name);
- throw new ArgumentException(message);
- }
- else
- {
- return intValue;
- }
+ return isMultiValued;
}
/**
- * Retrieves the set of values for this argument as a list of
- * integers.
+ * Indicates whether this argument is present in the parsed set of
+ * command-line arguments.
*
- * @return A list of the integer representations of the values for
- * this argument.
- * @throws ArgumentException
- * If any of the values cannot be parsed as an integer.
+ * @return <CODE>true</CODE> if this argument is present in the parsed set of
+ * command-line arguments, or <CODE>false</CODE> if not.
*/
- public LinkedList<Double> getDoubleValues() throws ArgumentException
+ public boolean isPresent()
{
- LinkedList<Double> intList = new LinkedList<Double>();
-
- Iterator<String> iterator = values.iterator();
- while (iterator.hasNext())
- {
- String valueString = iterator.next();
-
- try
- {
- intList.add(Double.valueOf(valueString));
- }
- catch (Exception e)
- {
- LocalizableMessage message =
- ERR_ARG_CANNOT_DECODE_AS_INT.get(valueString, name);
- throw new ArgumentException(message, e);
- }
- }
-
- return intList;
+ return isPresent;
}
/**
- * Retrieves the value of this argument as a <CODE>Boolean</CODE>.
+ * Indicates whether this argument is required to have at least one value.
*
- * @return The value of this argument as a <CODE>Boolean</CODE>.
- * @throws ArgumentException
- * If this argument cannot be interpreted as a Boolean
- * value.
+ * @return <CODE>true</CODE> if this argument is required to have at least one
+ * value, or <CODE>false</CODE> if it does not need to have a value.
*/
- public boolean getBooleanValue() throws ArgumentException
+ public boolean isRequired()
{
- if (values.isEmpty())
- {
- LocalizableMessage message = ERR_ARG_NO_BOOLEAN_VALUE.get(name);
- throw new ArgumentException(message);
- }
+ return isRequired;
+ }
- Iterator<String> iterator = values.iterator();
- String valueString = toLowerCase(iterator.next());
- boolean booleanValue;
- if (valueString.equals("true") || valueString.equals("yes")
- || valueString.equals("on") || valueString.equals("1"))
- {
- booleanValue = true;
- }
- else if (valueString.equals("false") || valueString.equals("no")
- || valueString.equals("off") || valueString.equals("0"))
- {
- booleanValue = false;
- }
- else
- {
- LocalizableMessage message =
- ERR_ARG_CANNOT_DECODE_AS_BOOLEAN.get(valueString, name);
- throw new ArgumentException(message);
- }
- if (iterator.hasNext())
- {
- LocalizableMessage message = ERR_ARG_BOOLEAN_MULTIPLE_VALUES.get(name);
- throw new ArgumentException(message);
- }
- else
- {
- return booleanValue;
- }
+ /**
+ * Indicates whether this argument was provided in the set of properties found
+ * is a properties file.
+ *
+ * @return <CODE>true</CODE> if this argument was provided in the set of
+ * properties found is a properties file, or <CODE>false</CODE> if
+ * not.
+ */
+ public boolean isValueSetByProperty()
+ {
+ return isValueSetByProperty;
+ }
+
+
+
+ /**
+ * Indicates whether a value must be provided with this argument if it is
+ * present.
+ *
+ * @return <CODE>true</CODE> if a value must be provided with the argument if
+ * it is present, or <CODE>false</CODE> if the argument does not take
+ * a value and the presence of the argument identifier itself is
+ * sufficient to convey the necessary information.
+ */
+ public boolean needsValue()
+ {
+ return needsValue;
+ }
+
+
+
+ /**
+ * Specifies the default value that will be used for this argument if it is
+ * not specified on the command line and it is not set from a properties file.
+ *
+ * @param defaultValue
+ * The default value that will be used for this argument if it is not
+ * specified on the command line and it is not set from a properties
+ * file.
+ */
+ public void setDefaultValue(final String defaultValue)
+ {
+ this.defaultValue = defaultValue;
+ }
+
+
+
+ /**
+ * Specifies whether this argument should be hidden from the usage
+ * information.
+ *
+ * @param isHidden
+ * Indicates whether this argument should be hidden from the usage
+ * information.
+ */
+ public void setHidden(final boolean isHidden)
+ {
+ this.isHidden = isHidden;
+ }
+
+
+
+ /**
+ * Specifies whether this argument may be provided more than once on the
+ * command line to specify multiple values.
+ *
+ * @param isMultiValued
+ * Indicates whether this argument may be provided more than once on
+ * the command line to specify multiple values.
+ */
+ public void setMultiValued(final boolean isMultiValued)
+ {
+ this.isMultiValued = isMultiValued;
+ }
+
+
+
+ /**
+ * Specifies whether a value must be provided with this argument if it is
+ * present. If this is changed from <CODE>false</CODE> to <CODE>true</CODE>,
+ * then a value placeholder must also be provided.
+ *
+ * @param needsValue
+ * Indicates whether a value must be provided with this argument if
+ * it is present.
+ */
+ public void setNeedsValue(final boolean needsValue)
+ {
+ this.needsValue = needsValue;
+ }
+
+
+
+ /**
+ * Specifies whether this argument is present in the parsed set of
+ * command-line arguments.
+ *
+ * @param isPresent
+ * Indicates whether this argument is present in the set of
+ * command-line arguments.
+ */
+ public void setPresent(final boolean isPresent)
+ {
+ this.isPresent = isPresent;
+ }
+
+
+
+ /**
+ * Specifies the name of a property in a properties file that may be used to
+ * set the default value for this argument if it is present.
+ *
+ * @param propertyName
+ * The name of a property in a properties file that may be used to
+ * set the default value for this argument if it is present.
+ */
+ public void setPropertyName(final String propertyName)
+ {
+ this.propertyName = propertyName;
+ }
+
+
+
+ /**
+ * Specifies whether this argument is required to have at least one value.
+ *
+ * @param isRequired
+ * Indicates whether this argument is required to have at least one
+ * value.
+ */
+ public void setRequired(final boolean isRequired)
+ {
+ this.isRequired = isRequired;
+ }
+
+
+
+ /**
+ * Specifies the value placeholder that will be displayed for this argument in
+ * the generated usage information. It may be <CODE>null</CODE> only if
+ * <CODE>needsValue()</CODE> returns <CODE>false</CODE>.
+ *
+ * @param valuePlaceholder
+ * The value placeholder that will be displayed for this argument in
+ * the generated usage information.
+ */
+ public void setValuePlaceholder(final LocalizableMessage valuePlaceholder)
+ {
+ this.valuePlaceholder = valuePlaceholder;
+ }
+
+
+
+ /**
+ * Specifies whether this argument was provided in the set of properties found
+ * is a properties file.
+ *
+ * @param isValueSetByProperty
+ * Specify whether this argument was provided in the set of
+ * properties found is a properties file.
+ */
+ public void setValueSetByProperty(final boolean isValueSetByProperty)
+ {
+ this.isValueSetByProperty = isValueSetByProperty;
}
@@ -773,37 +779,11 @@
* @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 abstract boolean valueIsAcceptable(String valueString,
LocalizableMessageBuilder invalidReason);
-
-
-
- /**
- * Adds a value to the set of values for this argument. This should
- * only be called if the value is allowed by the
- * <CODE>valueIsAcceptable</CODE> method.
- *
- * @param valueString
- * The string representation of the value to add to this
- * argument.
- */
- public void addValue(String valueString)
- {
- values.add(valueString);
- }
-
-
-
- /**
- * Clears the set of values assigned to this argument.
- */
- public void clearValues()
- {
- values.clear();
- }
}
--
Gitblit v1.10.0