001    /*
002     * CDDL HEADER START
003     *
004     * The contents of this file are subject to the terms of the
005     * Common Development and Distribution License, Version 1.0 only
006     * (the "License").  You may not use this file except in compliance
007     * with the License.
008     *
009     * You can obtain a copy of the license at
010     * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011     * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012     * See the License for the specific language governing permissions
013     * and limitations under the License.
014     *
015     * When distributing Covered Code, include this CDDL HEADER in each
016     * file and include the License file at
017     * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
018     * add the following below this CDDL HEADER, with the fields enclosed
019     * by brackets "[]" replaced with your own identifying information:
020     *      Portions Copyright [yyyy] [name of copyright owner]
021     *
022     * CDDL HEADER END
023     *
024     *
025     *      Copyright 2006-2008 Sun Microsystems, Inc.
026     */
027    package org.opends.server.util.args;
028    import org.opends.messages.Message;
029    
030    import org.opends.messages.MessageBuilder;
031    
032    
033    /**
034     * This class defines an argument type that will accept any string value.
035     */
036    public class StringArgument
037           extends Argument
038    {
039      /**
040       * Creates a new string argument with the provided information.
041       *
042       * @param  name              The generic name that should be used to refer to
043       *                           this argument.
044       * @param  shortIdentifier   The single-character identifier for this
045       *                           argument, or <CODE>null</CODE> if there is none.
046       * @param  longIdentifier    The long identifier for this argument, or
047       *                           <CODE>null</CODE> if there is none.
048       * @param  isRequired        Indicates whether this argument must be specified
049       *                           on the command line.
050       * @param  needsValue        Indicates whether this argument requires a value.
051       * @param  valuePlaceholder  The placeholder for the argument value that will
052       *                           be displayed in usage information, or
053       *                           <CODE>null</CODE> if this argument does not
054       *                           require a value.
055       * @param  description       Message for the description of this
056       *                           argument.
057       *
058       * @throws  ArgumentException  If there is a problem with any of the
059       *                             parameters used to create this argument.
060       */
061      public StringArgument(String name, Character shortIdentifier,
062                            String longIdentifier, boolean isRequired,
063                            boolean needsValue, Message valuePlaceholder,
064                            Message description)
065             throws ArgumentException
066      {
067        super(name, shortIdentifier, longIdentifier, isRequired, false, needsValue,
068              valuePlaceholder, null, null, description);
069      }
070    
071    
072    
073      /**
074       * Creates a new string argument with the provided information.
075       *
076       * @param  name              The generic name that should be used to refer to
077       *                           this argument.
078       * @param  shortIdentifier   The single-character identifier for this
079       *                           argument, or <CODE>null</CODE> if there is none.
080       * @param  longIdentifier    The long identifier for this argument, or
081       *                           <CODE>null</CODE> if there is none.
082       * @param  isRequired        Indicates whether this argument must be specified
083       *                           on the command line.
084       * @param  isMultiValued     Indicates whether this argument may be specified
085       *                           more than once to provide multiple values.
086       * @param  needsValue        Indicates whether this argument requires a value.
087       * @param  valuePlaceholder  The placeholder for the argument value that will
088       *                           be displayed in usage information, or
089       *                           <CODE>null</CODE> if this argument does not
090       *                           require a value.
091       * @param  defaultValue      The default value that should be used for this
092       *                           argument if none is provided in a properties file
093       *                           or on the command line.  This may be
094       *                           <CODE>null</CODE> if there is no generic default.
095       * @param  propertyName      The name of the property in a property file that
096       *                           may be used to override the default value but
097       *                           will be overridden by a command-line argument.
098       * @param  description       Message for the description of this
099       *                           argument.
100       *
101       * @throws  ArgumentException  If there is a problem with any of the
102       *                             parameters used to create this argument.
103       */
104      public StringArgument(String name, Character shortIdentifier,
105                            String longIdentifier, boolean isRequired,
106                            boolean isMultiValued, boolean needsValue,
107                            Message valuePlaceholder, String defaultValue,
108                            String propertyName, Message description)
109             throws ArgumentException
110      {
111        super(name, shortIdentifier, longIdentifier, isRequired, isMultiValued,
112              needsValue, valuePlaceholder, defaultValue, propertyName,
113              description);
114      }
115    
116    
117    
118      /**
119       * Indicates whether the provided value is acceptable for use in this
120       * argument.
121       *
122       * @param  valueString    The value for which to make the determination.
123       * @param  invalidReason  A buffer into which the invalid reason may be
124       *                        written if the value is not acceptable.
125       *
126       * @return  <CODE>true</CODE> if the value is acceptable, or
127       *          <CODE>false</CODE> if it is not.
128       */
129      public boolean valueIsAcceptable(String valueString,
130                                       MessageBuilder invalidReason)
131      {
132        // All values will be acceptable for this argument.
133        return true;
134      }
135    }
136