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
031
032 import static org.opends.messages.UtilityMessages.*;
033 import org.opends.messages.MessageBuilder;
034
035
036 /**
037 * This class defines an argument type that will be used to represent Boolean
038 * values. These arguments will never take values from the command line but
039 * and will never be required. If the argument is provided, then it will be
040 * considered true, and if not then it will be considered false. As such,
041 * the default value will always be "false".
042 */
043 public class BooleanArgument
044 extends Argument
045 {
046 /**
047 * Creates a new Boolean argument with the provided information.
048 *
049 * @param name The generic name that should be used to refer to
050 * this argument.
051 * @param shortIdentifier The single-character identifier for this
052 * argument, or <CODE>null</CODE> if there is none.
053 * @param longIdentifier The long identifier for this argument, or
054 * <CODE>null</CODE> if there is none.
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 BooleanArgument(String name, Character shortIdentifier,
062 String longIdentifier,
063 Message description)
064 throws ArgumentException
065 {
066 super(name, shortIdentifier, longIdentifier, false, false, false, null,
067 String.valueOf(false), null, description);
068 }
069
070
071
072 /**
073 * Indicates whether the provided value is acceptable for use in this
074 * argument.
075 *
076 * @param valueString The value for which to make the determination.
077 * @param invalidReason A buffer into which the invalid reason may be
078 * written if the value is not acceptable.
079 *
080 * @return <CODE>true</CODE> if the value is acceptable, or
081 * <CODE>false</CODE> if it is not.
082 */
083 public boolean valueIsAcceptable(String valueString,
084 MessageBuilder invalidReason)
085 {
086 // This argument type should never have a value, so any value provided will
087 // be unacceptable.
088
089 invalidReason.append(ERR_BOOLEANARG_NO_VALUE_ALLOWED.get(getName()));
090
091 return false;
092 }
093
094
095 /**
096 * {@inheritDoc}
097 */
098 final public void addValue(String valueString) {
099 if (valueString != null) {
100 clearValues();
101 super.addValue(valueString);
102 super.setPresent(Boolean.valueOf(valueString));
103 }
104 }
105
106
107 /**
108 * {@inheritDoc}
109 */
110 final public void setPresent(boolean isPresent) {
111 addValue(String.valueOf(isPresent));
112 }
113
114 }
115