You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2008/03/22 03:49:46 UTC
svn commit: r639941 [2/17] - in /commons/proper/cli/trunk: ./
src/java/org/apache/commons/cli2/ src/java/org/apache/commons/cli2/builder/
src/java/org/apache/commons/cli2/commandline/
src/java/org/apache/commons/cli2/option/ src/java/org/apache/commons...
Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,286 +1 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.cli2.builder;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.option.ArgumentImpl;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-import org.apache.commons.cli2.validation.Validator;
-
-/**
- * Builds Argument instances.
- */
-public class ArgumentBuilder {
-
- /** i18n */
- private final static ResourceHelper resources = ResourceHelper.getResourceHelper();
-
- /** name of the argument. Used for display and lookups in CommandLine */
- private String name;
-
- /** description of the argument. Used in the automated online help */
- private String description;
-
- /** minimum number of values required */
- private int minimum;
-
- /** maximum number of values permitted */
- private int maximum;
-
- /** character used to separate the values from the option */
- private char initialSeparator;
-
- /** character used to separate the values from each other */
- private char subsequentSeparator;
-
- /** object that should be used to ensure the values are valid */
- private Validator validator;
-
- /** used to identify the consume remaining option, typically "--" */
- private String consumeRemaining;
-
- /** default values for argument */
- private List defaultValues;
-
- /** id of the argument */
- private int id;
-
- /**
- * Creates a new ArgumentBuilder instance
- */
- public ArgumentBuilder() {
- reset();
- }
-
- /**
- * Creates a new Argument instance using the options specified in this
- * ArgumentBuilder.
- *
- * @return A new Argument instance using the options specified in this
- * ArgumentBuilder.
- */
- public final Argument create() {
- final Argument argument =
- new ArgumentImpl(
- name,
- description,
- minimum,
- maximum,
- initialSeparator,
- subsequentSeparator,
- validator,
- consumeRemaining,
- defaultValues,
- id);
-
- reset();
-
- return argument;
- }
-
- /**
- * Resets the ArgumentBuilder to the defaults for a new Argument. The
- * method is called automatically at the end of a create() call.
- */
- public final ArgumentBuilder reset() {
- name = "arg";
- description = null;
- minimum = 0;
- maximum = Integer.MAX_VALUE;
- initialSeparator = ArgumentImpl.DEFAULT_INITIAL_SEPARATOR;
- subsequentSeparator = ArgumentImpl.DEFAULT_SUBSEQUENT_SEPARATOR;
- validator = null;
- consumeRemaining = "--";
- defaultValues = null;
- id = 0;
- return this;
- }
-
- /**
- * Sets the name of the argument. The name is used when displaying usage
- * information and to allow lookups in the CommandLine object.
- *
- * @see org.apache.commons.cli2.CommandLine#getValue(String)
- *
- * @param newName the name of the argument
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withName(final String newName) {
- if (newName == null) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_NAME));
- }
- if ("".equals(newName)) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_NAME));
- }
- this.name = newName;
- return this;
- }
-
- /**
- * Sets the description of the argument.
- *
- * The description is used when displaying online help.
- *
- * @param newDescription a description of the argument
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withDescription(final String newDescription) {
- this.description = newDescription;
- return this;
- }
-
- /**
- * Sets the minimum number of values needed for the argument to be valid.
- *
- * @param newMinimum the number of values needed
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withMinimum(final int newMinimum) {
- if (newMinimum < 0) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MINIMUM));
- }
- this.minimum = newMinimum;
- return this;
- }
-
- /**
- * Sets the maximum number of values allowed for the argument to be valid.
- *
- * @param newMaximum the number of values allowed
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withMaximum(final int newMaximum) {
- if (newMaximum < 0) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MAXIMUM));
- }
- this.maximum = newMaximum;
- return this;
- }
-
- /**
- * Sets the character used to separate the values from the option. When an
- * argument is of the form -libs:dir1,dir2,dir3 the initialSeparator would
- * be ':'.
- *
- * @param newInitialSeparator the character used to separate the values
- * from the option
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withInitialSeparator(
- final char newInitialSeparator) {
-
- this.initialSeparator = newInitialSeparator;
- return this;
- }
-
- /**
- * Sets the character used to separate the values from each other. When an
- * argument is of the form -libs:dir1,dir2,dir3 the subsequentSeparator
- * would be ','.
- *
- * @param newSubsequentSeparator the character used to separate the values
- * from each other
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withSubsequentSeparator(
- final char newSubsequentSeparator) {
-
- this.subsequentSeparator = newSubsequentSeparator;
- return this;
- }
-
- /**
- * Sets the validator instance used to perform validation on the Argument
- * values.
- *
- * @param newValidator a Validator instance
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withValidator(final Validator newValidator) {
- if (newValidator == null) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_VALIDATOR));
- }
- this.validator = newValidator;
- return this;
- }
-
- /**
- * Sets the "consume remaining" option, defaults to "--". Use this if you
- * want to allow values that might be confused with option strings.
- *
- * @param newConsumeRemaining the string to use for the consume
- * remaining option
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withConsumeRemaining(final String newConsumeRemaining) {
- if (newConsumeRemaining == null) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_CONSUME_REMAINING));
- }
- if ( "".equals(newConsumeRemaining)) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_CONSUME_REMAINING));
- }
- this.consumeRemaining = newConsumeRemaining;
- return this;
- }
-
- /**
- * Sets the default value.
- *
- * @param defaultValue the default value for the Argument
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withDefault(final Object defaultValue) {
- if (defaultValue == null) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULT));
- }
-
- if (this.defaultValues == null) {
- this.defaultValues = new ArrayList(1);
- }
- this.defaultValues.add(defaultValue);
- return this;
- }
-
- /**
- * Sets the default values.
- *
- * @param newDefaultValues the default values for the Argument
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withDefaults(final List newDefaultValues) {
- if (newDefaultValues == null) {
- throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULTS));
- }
- this.defaultValues = newDefaultValues;
- return this;
- }
-
- /**
- * Sets the id
- *
- * @param newId the id of the Argument
- * @return this ArgumentBuilder
- */
- public final ArgumentBuilder withId(final int newId) {
- this.id = newId;
- return this;
- }
-}
+/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.cli2.builder;import java.util.ArrayList;import java.util.List;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.option.ArgumentImpl;import org.apache.commo
ns.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;import org.apache.commons.cli2.validation.Validator;/** * Builds Argument instances. */public class ArgumentBuilder { /** i18n */ private final static ResourceHelper resources = ResourceHelper.getResourceHelper(); /** name of the argument. Used for display and lookups in CommandLine */ private String name; /** description of the argument. Used in the automated online help */ private String description; /** minimum number of values required */ private int minimum; /** maximum number of values permitted */ private int maximum; /** character used to separate the values from the option */ private char initialSeparator; /** character used to separate the values from each other */ private char subsequentSeparator; /** object that should be used to ensure the values are valid */ private Validator validator; /** used to identify the consume remaining
option, typically "--" */ private String consumeRemaining; /** default values for argument */ private List defaultValues; /** id of the argument */ private int id; /** * Creates a new ArgumentBuilder instance */ public ArgumentBuilder() { reset(); } /** * Creates a new Argument instance using the options specified in this * ArgumentBuilder. * * @return A new Argument instance using the options specified in this * ArgumentBuilder. */ public final Argument create() { final Argument argument = new ArgumentImpl( name, description, minimum, maximum, initialSeparator, subsequentSeparator, validator, consumeRemaining, defaultValues, id); reset(); return argument; } /** * Resets the ArgumentBuilder to the defaults for a new A
rgument. The * method is called automatically at the end of a create() call. */ public final ArgumentBuilder reset() { name = "arg"; description = null; minimum = 0; maximum = Integer.MAX_VALUE; initialSeparator = ArgumentImpl.DEFAULT_INITIAL_SEPARATOR; subsequentSeparator = ArgumentImpl.DEFAULT_SUBSEQUENT_SEPARATOR; validator = null; consumeRemaining = "--"; defaultValues = null; id = 0; return this; } /** * Sets the name of the argument. The name is used when displaying usage * information and to allow lookups in the CommandLine object. * * @see org.apache.commons.cli2.CommandLine#getValue(String) * * @param newName the name of the argument * @return this ArgumentBuilder */ public final ArgumentBuilder withName(final String newName) { if (newName == null) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMEN
T_BUILDER_NULL_NAME)); } if ("".equals(newName)) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_NAME)); } this.name = newName; return this; } /** * Sets the description of the argument. * * The description is used when displaying online help. * * @param newDescription a description of the argument * @return this ArgumentBuilder */ public final ArgumentBuilder withDescription(final String newDescription) { this.description = newDescription; return this; } /** * Sets the minimum number of values needed for the argument to be valid. * * @param newMinimum the number of values needed * @return this ArgumentBuilder */ public final ArgumentBuilder withMinimum(final int newMinimum) { if (newMinimum < 0) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MINIMUM));
} this.minimum = newMinimum; return this; } /** * Sets the maximum number of values allowed for the argument to be valid. * * @param newMaximum the number of values allowed * @return this ArgumentBuilder */ public final ArgumentBuilder withMaximum(final int newMaximum) { if (newMaximum < 0) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MAXIMUM)); } this.maximum = newMaximum; return this; } /** * Sets the character used to separate the values from the option. When an * argument is of the form -libs:dir1,dir2,dir3 the initialSeparator would * be ':'. * * @param newInitialSeparator the character used to separate the values * from the option * @return this ArgumentBuilder */ public final ArgumentBuilder withInitialSeparator( final char newInitialSeparator) { this.initialSeparator = newInitialSepa
rator; return this; } /** * Sets the character used to separate the values from each other. When an * argument is of the form -libs:dir1,dir2,dir3 the subsequentSeparator * would be ','. * * @param newSubsequentSeparator the character used to separate the values * from each other * @return this ArgumentBuilder */ public final ArgumentBuilder withSubsequentSeparator( final char newSubsequentSeparator) { this.subsequentSeparator = newSubsequentSeparator; return this; } /** * Sets the validator instance used to perform validation on the Argument * values. * * @param newValidator a Validator instance * @return this ArgumentBuilder */ public final ArgumentBuilder withValidator(final Validator newValidator) { if (newValidator == null) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_VALIDATOR)); } this.validator
= newValidator; return this; } /** * Sets the "consume remaining" option, defaults to "--". Use this if you * want to allow values that might be confused with option strings. * * @param newConsumeRemaining the string to use for the consume * remaining option * @return this ArgumentBuilder */ public final ArgumentBuilder withConsumeRemaining(final String newConsumeRemaining) { if (newConsumeRemaining == null) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_CONSUME_REMAINING)); } if ( "".equals(newConsumeRemaining)) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_CONSUME_REMAINING)); } this.consumeRemaining = newConsumeRemaining; return this; } /** * Sets the default value. * * @param defaultValue the default value for the Argument * @return this ArgumentBuilder */ p
ublic final ArgumentBuilder withDefault(final Object defaultValue) { if (defaultValue == null) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULT)); } if (this.defaultValues == null) { this.defaultValues = new ArrayList(1); } this.defaultValues.add(defaultValue); return this; } /** * Sets the default values. * * @param newDefaultValues the default values for the Argument * @return this ArgumentBuilder */ public final ArgumentBuilder withDefaults(final List newDefaultValues) { if (newDefaultValues == null) { throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULTS)); } this.defaultValues = newDefaultValues; return this; } /** * Sets the id * * @param newId the id of the Argument * @return this ArgumentBuilder */ public final ArgumentBuilder
withId(final int newId) { this.id = newId; return this; }}
\ No newline at end of file
Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,187 +1 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.cli2.builder;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.option.Command;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Builds Command instances
- */
-public class CommandBuilder {
- /** the preferred name of the command */
- private String preferredName;
-
- /** the description of the command */
- private String description;
-
- /** the aliases of the command */
- private Set aliases;
-
- /** whether the command is required or not */
- private boolean required;
-
- /** the argument of the command */
- private Argument argument;
-
- /** the children of the command */
- private Group children;
-
- /** the id of the command */
- private int id;
-
- /**
- * Creates a new <code>CommandBuilder</code> instance.
- */
- public CommandBuilder() {
- reset();
- }
-
- /**
- * Creates a new <code>Command</code> instance using the properties of the
- * <code>CommandBuilder</code>.
- *
- * @return the new Command instance
- */
- public Command create() {
- // check we have a valid name
- if (preferredName == null) {
- throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME));
- }
-
- // build the command
- final Command option =
- new Command(preferredName, description, aliases, required, argument, children, id);
-
- // reset the builder
- reset();
-
- return option;
- }
-
- /**
- * Resets the CommandBuilder to the defaults for a new Command.
- *
- * This method is called automatically at the end of the
- * {@link #create() create} method.
- */
- public CommandBuilder reset() {
- preferredName = null;
- description = null;
- aliases = new HashSet();
- required = false;
- argument = null;
- children = null;
- id = 0;
-
- return this;
- }
-
- /**
- * Specifies the name for the next <code>Command</code>
- * that is created. The first name is used as the preferred
- * display name for the <code>Command</code> and then
- * later names are used as aliases.
- *
- * @param name the name for the next <code>Command</code>
- * that is created.
- * @return this <code>CommandBuilder</code>.
- */
- public CommandBuilder withName(final String name) {
- if (preferredName == null) {
- preferredName = name;
- } else {
- aliases.add(name);
- }
-
- return this;
- }
-
- /**
- * Specifies the description for the next <code>Command</code>
- * that is created. This description is used to produce
- * help documentation for the <code>Command</code>.
- *
- * @param newDescription the description for the next
- * <code>Command</code> that is created.
- * @return this <code>CommandBuilder</code>.
- */
- public CommandBuilder withDescription(final String newDescription) {
- this.description = newDescription;
-
- return this;
- }
-
- /**
- * Specifies whether the next <code>Command</code> created is
- * required or not.
- * @param newRequired whether the next <code>Command</code> created is
- * required or not.
- * @return this <code>CommandBuilder</code>.
- */
- public CommandBuilder withRequired(final boolean newRequired) {
- this.required = newRequired;
-
- return this;
- }
-
- /**
- * Specifies the children for the next <code>Command</code>
- * that is created.
- *
- * @param newChildren the child options for the next <code>Command</code>
- * that is created.
- * @return this <code>CommandBuilder</code>.
- */
- public CommandBuilder withChildren(final Group newChildren) {
- this.children = newChildren;
-
- return this;
- }
-
- /**
- * Specifies the argument for the next <code>Command</code>
- * that is created.
- *
- * @param newArgument the argument for the next <code>Command</code>
- * that is created.
- * @return this <code>CommandBuilder</code>.
- */
- public CommandBuilder withArgument(final Argument newArgument) {
- this.argument = newArgument;
-
- return this;
- }
-
- /**
- * Specifies the id for the next <code>Command</code> that is created.
- *
- * @param newId the id for the next <code>Command</code> that is created.
- * @return this <code>CommandBuilder</code>.
- */
- public final CommandBuilder withId(final int newId) {
- this.id = newId;
-
- return this;
- }
-}
+/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.cli2.builder;import java.util.HashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.option.Co
mmand;import org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Builds Command instances */public class CommandBuilder { /** the preferred name of the command */ private String preferredName; /** the description of the command */ private String description; /** the aliases of the command */ private Set aliases; /** whether the command is required or not */ private boolean required; /** the argument of the command */ private Argument argument; /** the children of the command */ private Group children; /** the id of the command */ private int id; /** * Creates a new <code>CommandBuilder</code> instance. */ public CommandBuilder() { reset(); } /** * Creates a new <code>Command</code> instance using the properties of the * <code>CommandBuilder</code>. * * @return the new Command instance */ public Command create() { // ch
eck we have a valid name if (preferredName == null) { throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME)); } // build the command final Command option = new Command(preferredName, description, aliases, required, argument, children, id); // reset the builder reset(); return option; } /** * Resets the CommandBuilder to the defaults for a new Command. * * This method is called automatically at the end of the * {@link #create() create} method. */ public CommandBuilder reset() { preferredName = null; description = null; aliases = new HashSet(); required = false; argument = null; children = null; id = 0; return this; } /** * Specifies the name for the next <code>Command</code> * that is created. The first name is used as the preferred * display name
for the <code>Command</code> and then * later names are used as aliases. * * @param name the name for the next <code>Command</code> * that is created. * @return this <code>CommandBuilder</code>. */ public CommandBuilder withName(final String name) { if (preferredName == null) { preferredName = name; } else { aliases.add(name); } return this; } /** * Specifies the description for the next <code>Command</code> * that is created. This description is used to produce * help documentation for the <code>Command</code>. * * @param newDescription the description for the next * <code>Command</code> that is created. * @return this <code>CommandBuilder</code>. */ public CommandBuilder withDescription(final String newDescription) { this.description = newDescription; return this; } /** * Specifies whether the next <code>Command</code> created is
* required or not. * @param newRequired whether the next <code>Command</code> created is * required or not. * @return this <code>CommandBuilder</code>. */ public CommandBuilder withRequired(final boolean newRequired) { this.required = newRequired; return this; } /** * Specifies the children for the next <code>Command</code> * that is created. * * @param newChildren the child options for the next <code>Command</code> * that is created. * @return this <code>CommandBuilder</code>. */ public CommandBuilder withChildren(final Group newChildren) { this.children = newChildren; return this; } /** * Specifies the argument for the next <code>Command</code> * that is created. * * @param newArgument the argument for the next <code>Command</code> * that is created. * @return this <code>CommandBuilder</code>. */ public CommandBuilder withArgument(final Argument newAr
gument) { this.argument = newArgument; return this; } /** * Specifies the id for the next <code>Command</code> that is created. * * @param newId the id for the next <code>Command</code> that is created. * @return this <code>CommandBuilder</code>. */ public final CommandBuilder withId(final int newId) { this.id = newId; return this; }}
\ No newline at end of file
Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,215 +1 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.cli2.builder;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.option.DefaultOption;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Builds DefaultOption instances.
- */
-public class DefaultOptionBuilder {
- private final String shortPrefix;
- private final String longPrefix;
- private final boolean burstEnabled;
- private String preferredName;
- private Set aliases;
- private Set burstAliases;
- private boolean required;
- private String description;
- private Argument argument;
- private Group children;
- private int id;
-
- /**
- * Creates a new DefaultOptionBuilder using defaults
- * @see DefaultOption#DEFAULT_SHORT_PREFIX
- * @see DefaultOption#DEFAULT_LONG_PREFIX
- * @see DefaultOption#DEFAULT_BURST_ENABLED
- */
- public DefaultOptionBuilder() {
- this(DefaultOption.DEFAULT_SHORT_PREFIX, DefaultOption.DEFAULT_LONG_PREFIX,
- DefaultOption.DEFAULT_BURST_ENABLED);
- }
-
- /**
- * Creates a new DefaultOptionBuilder
- * @param shortPrefix the prefix to use for short options
- * @param longPrefix the prefix to use for long options
- * @param burstEnabled whether to allow gnu style bursting
- * @throws IllegalArgumentException if either prefix is less than on
- * character long
- */
- public DefaultOptionBuilder(final String shortPrefix,
- final String longPrefix,
- final boolean burstEnabled)
- throws IllegalArgumentException {
- if ((shortPrefix == null) || (shortPrefix.length() == 0)) {
- throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_SHORT_PREFIX));
- }
-
- if ((longPrefix == null) || (longPrefix.length() == 0)) {
- throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_LONG_PREFIX));
- }
-
- this.shortPrefix = shortPrefix;
- this.longPrefix = longPrefix;
- this.burstEnabled = burstEnabled;
- reset();
- }
-
- /**
- * Creates a DefaultOption instance
- * @return the new instance
- * @throws IllegalStateException if no names have been supplied
- */
- public DefaultOption create()
- throws IllegalStateException {
- if (preferredName == null) {
- throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME));
- }
-
- final DefaultOption option =
- new DefaultOption(shortPrefix, longPrefix, burstEnabled, preferredName, description,
- aliases, burstAliases, required, argument, children, id);
-
- reset();
-
- return option;
- }
-
- /**
- * Resets the builder
- */
- public DefaultOptionBuilder reset() {
- preferredName = null;
- description = null;
- aliases = new HashSet();
- burstAliases = new HashSet();
- required = false;
- argument = null;
- children = null;
- id = 0;
-
- return this;
- }
-
- /**
- * Use this short option name. The first name is used as the preferred
- * display name for the Command and then later names are used as aliases.
- *
- * @param shortName the name to use
- * @return this builder
- */
- public DefaultOptionBuilder withShortName(final String shortName) {
- final String name = shortPrefix + shortName;
-
- if (preferredName == null) {
- preferredName = name;
- } else {
- aliases.add(name);
- }
-
- if (burstEnabled && (name.length() == (shortPrefix.length() + 1))) {
- burstAliases.add(name);
- }
-
- return this;
- }
-
- /**
- * Use this long option name. The first name is used as the preferred
- * display name for the Command and then later names are used as aliases.
- *
- * @param longName the name to use
- * @return this builder
- */
- public DefaultOptionBuilder withLongName(final String longName) {
- final String name = longPrefix + longName;
-
- if (preferredName == null) {
- preferredName = name;
- } else {
- aliases.add(name);
- }
-
- return this;
- }
-
- /**
- * Use this option description
- * @param newDescription the description to use
- * @return this builder
- */
- public DefaultOptionBuilder withDescription(final String newDescription) {
- this.description = newDescription;
-
- return this;
- }
-
- /**
- * Use this optionality
- * @param newRequired true iff the Option is required
- * @return this builder
- */
- public DefaultOptionBuilder withRequired(final boolean newRequired) {
- this.required = newRequired;
-
- return this;
- }
-
- /**
- * Use this child Group
- * @param newChildren the child Group to use
- * @return this builder
- */
- public DefaultOptionBuilder withChildren(final Group newChildren) {
- this.children = newChildren;
-
- return this;
- }
-
- /**
- * Use this Argument
- * @param newArgument the argument to use
- * @return this builder
- */
- public DefaultOptionBuilder withArgument(final Argument newArgument) {
- this.argument = newArgument;
-
- return this;
- }
-
- /**
- * Sets the id
- *
- * @param newId
- * the id of the DefaultOption
- * @return this DefaultOptionBuilder
- */
- public final DefaultOptionBuilder withId(final int newId) {
- this.id = newId;
-
- return this;
- }
-}
+/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.cli2.builder;import java.util.HashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.option.De
faultOption;import org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Builds DefaultOption instances. */public class DefaultOptionBuilder { private final String shortPrefix; private final String longPrefix; private final boolean burstEnabled; private String preferredName; private Set aliases; private Set burstAliases; private boolean required; private String description; private Argument argument; private Group children; private int id; /** * Creates a new DefaultOptionBuilder using defaults * @see DefaultOption#DEFAULT_SHORT_PREFIX * @see DefaultOption#DEFAULT_LONG_PREFIX * @see DefaultOption#DEFAULT_BURST_ENABLED */ public DefaultOptionBuilder() { this(DefaultOption.DEFAULT_SHORT_PREFIX, DefaultOption.DEFAULT_LONG_PREFIX, DefaultOption.DEFAULT_BURST_ENABLED); } /** * Creates a new DefaultOptionBuilder * @param shortPrefix
the prefix to use for short options * @param longPrefix the prefix to use for long options * @param burstEnabled whether to allow gnu style bursting * @throws IllegalArgumentException if either prefix is less than on * character long */ public DefaultOptionBuilder(final String shortPrefix, final String longPrefix, final boolean burstEnabled) throws IllegalArgumentException { if ((shortPrefix == null) || (shortPrefix.length() == 0)) { throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_SHORT_PREFIX)); } if ((longPrefix == null) || (longPrefix.length() == 0)) { throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_LONG_PREFIX)); } this.shortPrefix = shortPrefix; this.long
Prefix = longPrefix; this.burstEnabled = burstEnabled; reset(); } /** * Creates a DefaultOption instance * @return the new instance * @throws IllegalStateException if no names have been supplied */ public DefaultOption create() throws IllegalStateException { if (preferredName == null) { throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME)); } final DefaultOption option = new DefaultOption(shortPrefix, longPrefix, burstEnabled, preferredName, description, aliases, burstAliases, required, argument, children, id); reset(); return option; } /** * Resets the builder */ public DefaultOptionBuilder reset() { preferredName = null; description = null; aliases = new HashSet(); burstAliases = new HashSet(); required = false; argument = null
; children = null; id = 0; return this; } /** * Use this short option name. The first name is used as the preferred * display name for the Command and then later names are used as aliases. * * @param shortName the name to use * @return this builder */ public DefaultOptionBuilder withShortName(final String shortName) { final String name = shortPrefix + shortName; if (preferredName == null) { preferredName = name; } else { aliases.add(name); } if (burstEnabled && (name.length() == (shortPrefix.length() + 1))) { burstAliases.add(name); } return this; } /** * Use this long option name. The first name is used as the preferred * display name for the Command and then later names are used as aliases. * * @param longName the name to use * @return this builder */ public DefaultOptionBuilder withLongName(final String l
ongName) { final String name = longPrefix + longName; if (preferredName == null) { preferredName = name; } else { aliases.add(name); } return this; } /** * Use this option description * @param newDescription the description to use * @return this builder */ public DefaultOptionBuilder withDescription(final String newDescription) { this.description = newDescription; return this; } /** * Use this optionality * @param newRequired true iff the Option is required * @return this builder */ public DefaultOptionBuilder withRequired(final boolean newRequired) { this.required = newRequired; return this; } /** * Use this child Group * @param newChildren the child Group to use * @return this builder */ public DefaultOptionBuilder withChildren(final Group newChildren) { this.children = newChildren; return this; }
/** * Use this Argument * @param newArgument the argument to use * @return this builder */ public DefaultOptionBuilder withArgument(final Argument newArgument) { this.argument = newArgument; return this; } /** * Sets the id * * @param newId * the id of the DefaultOption * @return this DefaultOptionBuilder */ public final DefaultOptionBuilder withId(final int newId) { this.id = newId; return this; }}
\ No newline at end of file
Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,118 +1 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.cli2.builder;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.Option;
-import org.apache.commons.cli2.option.GroupImpl;
-
-/**
- * Builds Group instances
- */
-public class GroupBuilder {
-
- private String name;
- private String description;
- private List options;
- private int minimum;
- private int maximum;
-
- /**
- * Creates a new GroupBuilder
- */
- public GroupBuilder() {
- reset();
- }
-
- /**
- * Creates a new Group instance
- * @return the new Group instance
- */
- public Group create() {
- final GroupImpl group =
- new GroupImpl(options, name, description, minimum, maximum);
-
- reset();
-
- return group;
- }
-
- /**
- * Resets the builder
- */
- public GroupBuilder reset() {
- name = null;
- description = null;
- options = new ArrayList();
- minimum = 0;
- maximum = Integer.MAX_VALUE;
- return this;
- }
-
- /**
- * Use this option description
- * @param newDescription the description to use
- * @return this builder
- */
- public GroupBuilder withDescription(final String newDescription) {
- this.description = newDescription;
- return this;
- }
-
- /**
- * Use this option name
- * @param newName the name to use
- * @return this builder
- */
- public GroupBuilder withName(final String newName) {
- this.name = newName;
- return this;
- }
-
- /**
- * A valid group requires at least this many options present
- * @param newMinimum the minimum Options required
- * @return this builder
- */
- public GroupBuilder withMinimum(final int newMinimum) {
- this.minimum = newMinimum;
- return this;
- }
-
- /**
- * A valid group requires at most this many options present
- * @param newMaximum the maximum Options allowed
- * @return this builder
- */
- public GroupBuilder withMaximum(final int newMaximum) {
- this.maximum = newMaximum;
- return this;
- }
-
- /**
- * Add this option to the group
- * @param option the Option to add
- * @return this builder
- */
- public GroupBuilder withOption(final Option option) {
- this.options.add(option);
- return this;
- }
-}
+/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.cli2.builder;import java.util.ArrayList;import java.util.List;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.Option;import org.apache.commons.cli2.option.
GroupImpl;/** * Builds Group instances */public class GroupBuilder { private String name; private String description; private List options; private int minimum; private int maximum; /** * Creates a new GroupBuilder */ public GroupBuilder() { reset(); } /** * Creates a new Group instance * @return the new Group instance */ public Group create() { final GroupImpl group = new GroupImpl(options, name, description, minimum, maximum); reset(); return group; } /** * Resets the builder */ public GroupBuilder reset() { name = null; description = null; options = new ArrayList(); minimum = 0; maximum = Integer.MAX_VALUE; return this; } /** * Use this option description * @param newDescription the description to use * @return this builder */ public GroupBuilder withDescription(final String newDescription) { th
is.description = newDescription; return this; } /** * Use this option name * @param newName the name to use * @return this builder */ public GroupBuilder withName(final String newName) { this.name = newName; return this; } /** * A valid group requires at least this many options present * @param newMinimum the minimum Options required * @return this builder */ public GroupBuilder withMinimum(final int newMinimum) { this.minimum = newMinimum; return this; } /** * A valid group requires at most this many options present * @param newMaximum the maximum Options allowed * @return this builder */ public GroupBuilder withMaximum(final int newMaximum) { this.maximum = newMaximum; return this; } /** * Add this option to the group * @param option the Option to add * @return this builder */ public GroupBuilder withOption(final Option option
) { this.options.add(option); return this; }}
\ No newline at end of file
Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,202 +1 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.cli2.builder;
-
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Option;
-import org.apache.commons.cli2.validation.ClassValidator;
-import org.apache.commons.cli2.validation.DateValidator;
-import org.apache.commons.cli2.validation.FileValidator;
-import org.apache.commons.cli2.validation.NumberValidator;
-import org.apache.commons.cli2.validation.UrlValidator;
-import org.apache.commons.cli2.validation.Validator;
-
-/**
- * Builds Options using a String pattern
- */
-//TODO Document and link to the acceptable patterns
-public class PatternBuilder {
-
- private final GroupBuilder gbuilder;
- private final DefaultOptionBuilder obuilder;
- private final ArgumentBuilder abuilder;
-
- /**
- * Creates a new PatternBuilder
- */
- public PatternBuilder() {
- this(
- new GroupBuilder(),
- new DefaultOptionBuilder(),
- new ArgumentBuilder());
- }
-
- /**
- * Creates a new PatternBuilder
- * @param gbuilder the GroupBuilder to use
- * @param obuilder the DefaultOptionBuilder to use
- * @param abuilder the ArgumentBuilder to use
- */
- public PatternBuilder(
- final GroupBuilder gbuilder,
- final DefaultOptionBuilder obuilder,
- final ArgumentBuilder abuilder) {
- this.gbuilder = gbuilder;
- this.obuilder = obuilder;
- this.abuilder = abuilder;
- }
-
- private final Set options = new LinkedHashSet();
-
- /**
- * Creates a new Option instance.
- * @return a new Option instance
- */
- public Option create() {
- final Option option;
-
- if (options.size() == 1) {
- option = (Option)options.iterator().next();
- }
- else {
- gbuilder.reset();
- for (final Iterator i = options.iterator(); i.hasNext();) {
- gbuilder.withOption((Option)i.next());
- }
- option = gbuilder.create();
- }
-
- reset();
-
- return option;
- }
-
- /**
- * Resets this builder
- */
- public PatternBuilder reset() {
- options.clear();
- return this;
- }
-
- private void createOption(
- final char type,
- final boolean required,
- final char opt) {
- final Argument argument;
- if (type != ' ') {
- abuilder.reset();
- abuilder.withValidator(validator(type));
- if (required) {
- abuilder.withMinimum(1);
- }
- if (type != '*') {
- abuilder.withMaximum(1);
- }
- argument = abuilder.create();
- }
- else {
- argument = null;
- }
-
- obuilder.reset();
- obuilder.withArgument(argument);
- obuilder.withShortName(String.valueOf(opt));
- obuilder.withRequired(required);
-
- options.add(obuilder.create());
- }
-
- /**
- * Builds an Option using a pattern string.
- * @param pattern the pattern to build from
- */
- public void withPattern(final String pattern) {
- int sz = pattern.length();
-
- char opt = ' ';
- char ch = ' ';
- char type = ' ';
- boolean required = false;
-
- for (int i = 0; i < sz; i++) {
- ch = pattern.charAt(i);
-
- switch (ch) {
- case '!' :
- required = true;
- break;
- case '@' :
- case ':' :
- case '%' :
- case '+' :
- case '#' :
- case '<' :
- case '>' :
- case '*' :
- case '/' :
- type = ch;
- break;
- default :
- if (opt != ' ') {
- createOption(type, required, opt);
- required = false;
- type = ' ';
- }
-
- opt = ch;
- }
- }
-
- if (opt != ' ') {
- createOption(type, required, opt);
- }
- }
-
- private static Validator validator(final char c) {
- switch (c) {
- case '@' :
- final ClassValidator classv = new ClassValidator();
- classv.setInstance(true);
- return classv;
- case '+' :
- final ClassValidator instancev = new ClassValidator();
- return instancev;
- //case ':':// no validator needed for a string
- case '%' :
- return NumberValidator.getNumberInstance();
- case '#' :
- return DateValidator.getDateInstance();
- case '<' :
- final FileValidator existingv = new FileValidator();
- existingv.setExisting(true);
- existingv.setFile(true);
- return existingv;
- case '>' :
- case '*' :
- return new FileValidator();
- case '/' :
- return new UrlValidator();
- default :
- return null;
- }
- }
-}
+/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.cli2.builder;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Option;import
org.apache.commons.cli2.validation.ClassValidator;import org.apache.commons.cli2.validation.DateValidator;import org.apache.commons.cli2.validation.FileValidator;import org.apache.commons.cli2.validation.NumberValidator;import org.apache.commons.cli2.validation.UrlValidator;import org.apache.commons.cli2.validation.Validator;/** * Builds Options using a String pattern *///TODO Document and link to the acceptable patternspublic class PatternBuilder { private final GroupBuilder gbuilder; private final DefaultOptionBuilder obuilder; private final ArgumentBuilder abuilder; /** * Creates a new PatternBuilder */ public PatternBuilder() { this( new GroupBuilder(), new DefaultOptionBuilder(), new ArgumentBuilder()); } /** * Creates a new PatternBuilder * @param gbuilder the GroupBuilder to use * @param obuilder the DefaultOptionBuilder to use * @param abuilder the ArgumentBuilder to use */ p
ublic PatternBuilder( final GroupBuilder gbuilder, final DefaultOptionBuilder obuilder, final ArgumentBuilder abuilder) { this.gbuilder = gbuilder; this.obuilder = obuilder; this.abuilder = abuilder; } private final Set options = new LinkedHashSet(); /** * Creates a new Option instance. * @return a new Option instance */ public Option create() { final Option option; if (options.size() == 1) { option = (Option)options.iterator().next(); } else { gbuilder.reset(); for (final Iterator i = options.iterator(); i.hasNext();) { gbuilder.withOption((Option)i.next()); } option = gbuilder.create(); } reset(); return option; } /** * Resets this builder */ public PatternBuilder reset() { options.clear(); return this; } private void createOption( final char type,
final boolean required, final char opt) { final Argument argument; if (type != ' ') { abuilder.reset(); abuilder.withValidator(validator(type)); if (required) { abuilder.withMinimum(1); } if (type != '*') { abuilder.withMaximum(1); } argument = abuilder.create(); } else { argument = null; } obuilder.reset(); obuilder.withArgument(argument); obuilder.withShortName(String.valueOf(opt)); obuilder.withRequired(required); options.add(obuilder.create()); } /** * Builds an Option using a pattern string. * @param pattern the pattern to build from */ public void withPattern(final String pattern) { int sz = pattern.length(); char opt = ' '; char ch = ' '; char type = ' '; boolean required = false; for (int i = 0; i < sz; i+
+) { ch = pattern.charAt(i); switch (ch) { case '!' : required = true; break; case '@' : case ':' : case '%' : case '+' : case '#' : case '<' : case '>' : case '*' : case '/' : type = ch; break; default : if (opt != ' ') { createOption(type, required, opt); required = false; type = ' '; } opt = ch; } } if (opt != ' ') { createOption(type, required, opt); } } private static Validator validator(final char c) { switch (c) { case '@' : final ClassValidator classv = new ClassValidator(); classv.setInsta
nce(true); return classv; case '+' : final ClassValidator instancev = new ClassValidator(); return instancev; //case ':':// no validator needed for a string case '%' : return NumberValidator.getNumberInstance(); case '#' : return DateValidator.getDateInstance(); case '<' : final FileValidator existingv = new FileValidator(); existingv.setExisting(true); existingv.setFile(true); return existingv; case '>' : case '*' : return new FileValidator(); case '/' : return new UrlValidator(); default : return null; } }}
\ No newline at end of file
Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,194 +1 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.cli2.builder;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.option.Switch;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Builds Switch instance.
- */
-public class SwitchBuilder {
- private final String enabledPrefix;
- private final String disabledPrefix;
- private String description;
- private String preferredName;
- private Set aliases;
- private boolean required;
- private Argument argument;
- private Group children;
- private int id;
- private Boolean switchDefault;
-
- /**
- * Creates a new SwitchBuilder using defaults.
- * @see Switch#DEFAULT_ENABLED_PREFIX
- * @see Switch#DEFAULT_DISABLED_PREFIX
- */
- public SwitchBuilder() {
- this(Switch.DEFAULT_ENABLED_PREFIX, Switch.DEFAULT_DISABLED_PREFIX);
- }
-
- /**
- * Creates a new SwitchBuilder
- * @param enabledPrefix the prefix to use for enabling the option
- * @param disabledPrefix the prefix to use for disabling the option
- * @throws IllegalArgumentException if either prefix is less than 1
- * character long or the prefixes match
- */
- public SwitchBuilder(final String enabledPrefix,
- final String disabledPrefix)
- throws IllegalArgumentException {
- if ((enabledPrefix == null) || (enabledPrefix.length() < 1)) {
- throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_ENABLED_PREFIX));
- }
-
- if ((disabledPrefix == null) || (disabledPrefix.length() < 1)) {
- throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_DISABLED_PREFIX));
- }
-
- if (enabledPrefix.equals(disabledPrefix)) {
- throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_IDENTICAL_PREFIXES));
- }
-
- this.enabledPrefix = enabledPrefix;
- this.disabledPrefix = disabledPrefix;
- reset();
- }
-
- /**
- * Creates a new Switch instance
- * @return a new Switch instance
- */
- public Switch create() {
- final Switch option =
- new Switch(enabledPrefix, disabledPrefix, preferredName, aliases, description,
- required, argument, children, id, switchDefault);
-
- reset();
-
- return option;
- }
-
- /**
- * Resets the builder
- */
- public SwitchBuilder reset() {
- description = null;
- preferredName = null;
- required = false;
- aliases = new HashSet();
- argument = null;
- children = null;
- id = 0;
- switchDefault = null;
-
- return this;
- }
-
- /**
- * Use this option description
- * @param newDescription the description to use
- * @return this builder
- */
- public SwitchBuilder withDescription(final String newDescription) {
- this.description = newDescription;
-
- return this;
- }
-
- /**
- * Use this option name. The first name is used as the preferred
- * display name for the Command and then later names are used as aliases.
- *
- * @param name the name to use
- * @return this builder
- */
- public SwitchBuilder withName(final String name) {
- if (preferredName == null) {
- preferredName = name;
- } else {
- aliases.add(name);
- }
-
- return this;
- }
-
- /**
- * Use this optionality
- * @param newRequired true iff the Option is required
- * @return this builder
- */
- public SwitchBuilder withRequired(final boolean newRequired) {
- this.required = newRequired;
-
- return this;
- }
-
- /**
- * Use this Argument
- * @param newArgument the argument to use
- * @return this builder
- */
- public SwitchBuilder withArgument(final Argument newArgument) {
- this.argument = newArgument;
-
- return this;
- }
-
- /**
- * Use this child Group
- * @param newChildren the child Group to use
- * @return this builder
- */
- public SwitchBuilder withChildren(final Group newChildren) {
- this.children = newChildren;
-
- return this;
- }
-
- /**
- * Sets the id
- *
- * @param newId
- * the id of the Switch
- * @return this SwitchBuilder
- */
- public final SwitchBuilder withId(final int newId) {
- this.id = newId;
-
- return this;
- }
-
- /**
- * Sets the default state for this switch
- *
- * @param newSwitchDefault the default state
- * @return this SwitchBuilder
- */
- public final SwitchBuilder withSwitchDefault(final Boolean newSwitchDefault) {
- this.switchDefault = newSwitchDefault;
-
- return this;
- }
-}
+/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.cli2.builder;import java.util.HashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.option.Sw
itch;import org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Builds Switch instance. */public class SwitchBuilder { private final String enabledPrefix; private final String disabledPrefix; private String description; private String preferredName; private Set aliases; private boolean required; private Argument argument; private Group children; private int id; private Boolean switchDefault; /** * Creates a new SwitchBuilder using defaults. * @see Switch#DEFAULT_ENABLED_PREFIX * @see Switch#DEFAULT_DISABLED_PREFIX */ public SwitchBuilder() { this(Switch.DEFAULT_ENABLED_PREFIX, Switch.DEFAULT_DISABLED_PREFIX); } /** * Creates a new SwitchBuilder * @param enabledPrefix the prefix to use for enabling the option * @param disabledPrefix the prefix to use for disabling the option * @throws IllegalArgumentException if either prefix is less tha
n 1 * character long or the prefixes match */ public SwitchBuilder(final String enabledPrefix, final String disabledPrefix) throws IllegalArgumentException { if ((enabledPrefix == null) || (enabledPrefix.length() < 1)) { throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_ENABLED_PREFIX)); } if ((disabledPrefix == null) || (disabledPrefix.length() < 1)) { throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_DISABLED_PREFIX)); } if (enabledPrefix.equals(disabledPrefix)) { throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_IDENTICAL_PREFIXES)); } this.enabledPrefix = enabledPrefix; this.disabledPrefix = disabledPrefix; reset(); }
/** * Creates a new Switch instance * @return a new Switch instance */ public Switch create() { final Switch option = new Switch(enabledPrefix, disabledPrefix, preferredName, aliases, description, required, argument, children, id, switchDefault); reset(); return option; } /** * Resets the builder */ public SwitchBuilder reset() { description = null; preferredName = null; required = false; aliases = new HashSet(); argument = null; children = null; id = 0; switchDefault = null; return this; } /** * Use this option description * @param newDescription the description to use * @return this builder */ public SwitchBuilder withDescription(final String newDescription) { this.description = newDescription; return this; } /** * Use this option name. The first name is used as the preferred
* display name for the Command and then later names are used as aliases. * * @param name the name to use * @return this builder */ public SwitchBuilder withName(final String name) { if (preferredName == null) { preferredName = name; } else { aliases.add(name); } return this; } /** * Use this optionality * @param newRequired true iff the Option is required * @return this builder */ public SwitchBuilder withRequired(final boolean newRequired) { this.required = newRequired; return this; } /** * Use this Argument * @param newArgument the argument to use * @return this builder */ public SwitchBuilder withArgument(final Argument newArgument) { this.argument = newArgument; return this; } /** * Use this child Group * @param newChildren the child Group to use * @return this builder */ public SwitchBuilder withC
hildren(final Group newChildren) { this.children = newChildren; return this; } /** * Sets the id * * @param newId * the id of the Switch * @return this SwitchBuilder */ public final SwitchBuilder withId(final int newId) { this.id = newId; return this; } /** * Sets the default state for this switch * * @param newSwitchDefault the default state * @return this SwitchBuilder */ public final SwitchBuilder withSwitchDefault(final Boolean newSwitchDefault) { this.switchDefault = newSwitchDefault; return this; }}
\ No newline at end of file
Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.java Fri Mar 21 19:49:41 2008
@@ -1,120 +1 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.cli2.commandline;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.cli2.CommandLine;
-import org.apache.commons.cli2.Option;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Instances of CommandLine represent a command line that has been processed
- * according to the definition supplied to the parser.
- */
-public abstract class CommandLineImpl implements CommandLine {
- public final boolean hasOption(final String trigger) {
- return hasOption(getOption(trigger));
- }
-
- public final List getValues(final String trigger) {
- return getValues(getOption(trigger), Collections.EMPTY_LIST);
- }
-
- public final List getValues(final String trigger,
- final List defaultValues) {
- return getValues(getOption(trigger), defaultValues);
- }
-
- public final List getValues(final Option option) {
- return getValues(option, Collections.EMPTY_LIST);
- }
-
- public final Object getValue(final String trigger) {
- return getValue(getOption(trigger), null);
- }
-
- public final Object getValue(final String trigger,
- final Object defaultValue) {
- return getValue(getOption(trigger), defaultValue);
- }
-
- public final Object getValue(final Option option) {
- return getValue(option, null);
- }
-
- public final Object getValue(final Option option,
- final Object defaultValue) {
- final List values;
-
- if (defaultValue == null) {
- values = getValues(option);
- } else {
- values = getValues(option, Collections.singletonList(defaultValue));
- }
-
- if (values.size() > 1) {
- throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.ARGUMENT_TOO_MANY_VALUES));
- }
-
- if (values.isEmpty()) {
- return defaultValue;
- }
-
- return values.get(0);
- }
-
- public final Boolean getSwitch(final String trigger) {
- return getSwitch(getOption(trigger), null);
- }
-
- public final Boolean getSwitch(final String trigger,
- final Boolean defaultValue) {
- return getSwitch(getOption(trigger), defaultValue);
- }
-
- public final Boolean getSwitch(final Option option) {
- return getSwitch(option, null);
- }
-
- public final String getProperty(final String property) {
- return getProperty(property, null);
- }
-
- public final int getOptionCount(final String trigger) {
- return getOptionCount(getOption(trigger));
- }
-
- public final int getOptionCount(final Option option) {
- if (option == null) {
- return 0;
- }
-
- int count = 0;
-
- for (Iterator i = getOptions().iterator(); i.hasNext();) {
- if (option.equals(i.next())) {
- ++count;
- }
- }
-
- return count;
- }
-}
+/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.commons.cli2.commandline;import java.util.Collections;import java.util.Iterator;import java.util.List;import org.apache.commons.cli2.CommandLine;import org.apache.commons.cli2.Option;i
mport org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Instances of CommandLine represent a command line that has been processed * according to the definition supplied to the parser. */public abstract class CommandLineImpl implements CommandLine { public final boolean hasOption(final String trigger) { return hasOption(getOption(trigger)); } public final List getValues(final String trigger) { return getValues(getOption(trigger), Collections.EMPTY_LIST); } public final List getValues(final String trigger, final List defaultValues) { return getValues(getOption(trigger), defaultValues); } public final List getValues(final Option option) { return getValues(option, Collections.EMPTY_LIST); } public final Object getValue(final String trigger) { return getValue(getOption(trigger), null); } public final Object getValue(final
String trigger, final Object defaultValue) { return getValue(getOption(trigger), defaultValue); } public final Object getValue(final Option option) { return getValue(option, null); } public final Object getValue(final Option option, final Object defaultValue) { final List values; if (defaultValue == null) { values = getValues(option); } else { values = getValues(option, Collections.singletonList(defaultValue)); } if (values.size() > 1) { throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.ARGUMENT_TOO_MANY_VALUES)); } if (values.isEmpty()) { return defaultValue; } return values.get(0); } public final Boolean getSwitch(final String trigger) { return getSwitch(getOption(trigger), null); } public final Boolean getSwitch(f
inal String trigger, final Boolean defaultValue) { return getSwitch(getOption(trigger), defaultValue); } public final Boolean getSwitch(final Option option) { return getSwitch(option, null); } public final String getProperty(final String property) { return getProperty(property, null); } public final int getOptionCount(final String trigger) { return getOptionCount(getOption(trigger)); } public final int getOptionCount(final Option option) { if (option == null) { return 0; } int count = 0; for (Iterator i = getOptions().iterator(); i.hasNext();) { if (option.equals(i.next())) { ++count; } } return count; }}
\ No newline at end of file