jkeyes 2003/10/20 14:40:44 Modified: cli/src/java/org/apache/commons/cli2/validation UrlValidator.java FileValidator.java DateValidator.java NumberValidator.java InvalidArgumentException.java ClassValidator.java Log: - added Apache license - fixed author tag Revision Changes Path 1.2 +109 -58 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/UrlValidator.java Index: UrlValidator.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/UrlValidator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- UrlValidator.java 18 Oct 2003 22:00:17 -0000 1.1 +++ UrlValidator.java 20 Oct 2003 21:40:44 -0000 1.2 @@ -1,58 +1,109 @@ -/* - * Created on 25-Aug-2003 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.apache.commons.cli2.validation; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.List; -import java.util.ListIterator; - -/** - * @author Rob - * - * To change the template for this generated type comment go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -public class UrlValidator implements Validator { - - private String protocol = null; - - /* (non-Javadoc) - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String name = (String) i.next(); - try { - final URL url = new URL(name); - - if (protocol != null && !protocol.equals(url.getProtocol())) { - throw new InvalidArgumentException(name); - } - - i.set(url); - } catch (final MalformedURLException mue) { - throw new InvalidArgumentException( - "Cannot understand url: " + name); - } - } - } - - /** - * @return - */ - public String getProtocol() { - return protocol; - } - - /** - * @param protocol - */ - public void setProtocol(String protocol) { - this.protocol = protocol; - } -} +/* + * $Header$ + * $Revision$ + * $Date$ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache GroupImpl. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ +package org.apache.commons.cli2.validation; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.List; +import java.util.ListIterator; + +/** + * @author Rob Oxspring + */ +public class UrlValidator implements Validator { + + private String protocol = null; + + /* (non-Javadoc) + * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) + */ + public void validate(final List values) throws InvalidArgumentException { + for (final ListIterator i = values.listIterator(); i.hasNext();) { + final String name = (String) i.next(); + try { + final URL url = new URL(name); + + if (protocol != null && !protocol.equals(url.getProtocol())) { + throw new InvalidArgumentException(name); + } + + i.set(url); + } catch (final MalformedURLException mue) { + throw new InvalidArgumentException( + "Cannot understand url: " + name); + } + } + } + + /** + * @return + */ + public String getProtocol() { + return protocol; + } + + /** + * @param protocol + */ + public void setProtocol(String protocol) { + this.protocol = protocol; + } +} 1.2 +204 -153 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/FileValidator.java Index: FileValidator.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/FileValidator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FileValidator.java 18 Oct 2003 22:00:17 -0000 1.1 +++ FileValidator.java 20 Oct 2003 21:40:44 -0000 1.2 @@ -1,153 +1,204 @@ -/* - * Created on 25-Aug-2003 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.apache.commons.cli2.validation; - -import java.io.File; -import java.util.List; -import java.util.ListIterator; - -/** - * @author Rob - * - * To change the template for this generated type comment go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -public class FileValidator implements Validator { - - public static FileValidator getExistingInstance() { - final FileValidator validator = new FileValidator(); - validator.setExisting(true); - return validator; - } - - public static FileValidator getExistingFileInstance() { - final FileValidator validator = new FileValidator(); - validator.setExisting(true); - validator.setFile(true); - return validator; - } - - public static FileValidator getExistingDirectoryInstance() { - final FileValidator validator = new FileValidator(); - validator.setExisting(true); - validator.setDirectory(true); - return validator; - } - - private boolean readable = false; - private boolean writable = false; - private boolean existing = false; - private boolean directory = false; - private boolean file = false; - private boolean hidden = false; - - /* (non-Javadoc) - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String name = (String) i.next(); - final File f = new File(name); - - if ((existing && !f.exists()) - || (file && !f.isFile()) - || (directory && !f.isDirectory()) - || (hidden && !f.isHidden()) - || (readable && !f.canRead()) - || (writable && !f.canWrite())) { - - throw new InvalidArgumentException(name); - } else { - i.set(f); - } - } - } - - /** - * @return - */ - public boolean isDirectory() { - return directory; - } - - /** - * @param directory - */ - public void setDirectory(boolean directory) { - this.directory = directory; - } - - /** - * @return - */ - public boolean isExisting() { - return existing; - } - - /** - * @param existing - */ - public void setExisting(boolean existing) { - this.existing = existing; - } - - /** - * @return - */ - public boolean isFile() { - return file; - } - - /** - * @param file - */ - public void setFile(boolean file) { - this.file = file; - } - - /** - * @return - */ - public boolean isHidden() { - return hidden; - } - - /** - * @param hidden - */ - public void setHidden(boolean hidden) { - this.hidden = hidden; - } - - /** - * @return - */ - public boolean isReadable() { - return readable; - } - - /** - * @param readable - */ - public void setReadable(boolean readable) { - this.readable = readable; - } - - /** - * @return - */ - public boolean isWritable() { - return writable; - } - - /** - * @param writable - */ - public void setWritable(boolean writable) { - this.writable = writable; - } -} +/* + * $Header$ + * $Revision$ + * $Date$ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache GroupImpl. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ +package org.apache.commons.cli2.validation; + +import java.io.File; +import java.util.List; +import java.util.ListIterator; + +/** + * @author Rob Oxspring + */ +public class FileValidator implements Validator { + + public static FileValidator getExistingInstance() { + final FileValidator validator = new FileValidator(); + validator.setExisting(true); + return validator; + } + + public static FileValidator getExistingFileInstance() { + final FileValidator validator = new FileValidator(); + validator.setExisting(true); + validator.setFile(true); + return validator; + } + + public static FileValidator getExistingDirectoryInstance() { + final FileValidator validator = new FileValidator(); + validator.setExisting(true); + validator.setDirectory(true); + return validator; + } + + private boolean readable = false; + private boolean writable = false; + private boolean existing = false; + private boolean directory = false; + private boolean file = false; + private boolean hidden = false; + + /* (non-Javadoc) + * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) + */ + public void validate(final List values) throws InvalidArgumentException { + for (final ListIterator i = values.listIterator(); i.hasNext();) { + final String name = (String) i.next(); + final File f = new File(name); + + if ((existing && !f.exists()) + || (file && !f.isFile()) + || (directory && !f.isDirectory()) + || (hidden && !f.isHidden()) + || (readable && !f.canRead()) + || (writable && !f.canWrite())) { + + throw new InvalidArgumentException(name); + } else { + i.set(f); + } + } + } + + /** + * @return + */ + public boolean isDirectory() { + return directory; + } + + /** + * @param directory + */ + public void setDirectory(boolean directory) { + this.directory = directory; + } + + /** + * @return + */ + public boolean isExisting() { + return existing; + } + + /** + * @param existing + */ + public void setExisting(boolean existing) { + this.existing = existing; + } + + /** + * @return + */ + public boolean isFile() { + return file; + } + + /** + * @param file + */ + public void setFile(boolean file) { + this.file = file; + } + + /** + * @return + */ + public boolean isHidden() { + return hidden; + } + + /** + * @param hidden + */ + public void setHidden(boolean hidden) { + this.hidden = hidden; + } + + /** + * @return + */ + public boolean isReadable() { + return readable; + } + + /** + * @param readable + */ + public void setReadable(boolean readable) { + this.readable = readable; + } + + /** + * @return + */ + public boolean isWritable() { + return writable; + } + + /** + * @param writable + */ + public void setWritable(boolean writable) { + this.writable = writable; + } +} 1.2 +161 -110 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/DateValidator.java Index: DateValidator.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/DateValidator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DateValidator.java 18 Oct 2003 22:00:17 -0000 1.1 +++ DateValidator.java 20 Oct 2003 21:40:44 -0000 1.2 @@ -1,110 +1,161 @@ -/* - * Created on 25-Aug-2003 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.apache.commons.cli2.validation; - -import java.text.DateFormat; -import java.text.ParsePosition; -import java.util.Date; -import java.util.List; -import java.util.ListIterator; - -/** - * @author Rob - * - * To change the template for this generated type comment go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -public class DateValidator implements Validator { - - public static DateValidator getDateInstance() { - return new DateValidator(DateFormat.getDateInstance()); - } - - public static DateValidator getTimeInstance() { - return new DateValidator(DateFormat.getTimeInstance()); - } - - public static DateValidator getDateTimeInstance() { - return new DateValidator(DateFormat.getDateTimeInstance()); - } - - public final DateFormat[] formats; - - private Date minimum; - private Date maximum; - - public DateValidator() { - this(DateFormat.getInstance()); - } - - public DateValidator(final DateFormat format) { - this.formats = new DateFormat[] { format }; - } - - public DateValidator(final List formats) { - this.formats = - (DateFormat[]) formats.toArray(new DateFormat[formats.size()]); - } - - /* (non-Javadoc) - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String value = (String) i.next(); - - Date date = null; - for (int f = 0; f < formats.length && date == null; ++f) { - final ParsePosition pp = new ParsePosition(0); - date = formats[f].parse(value, pp); - if (pp.getIndex() < value.length()) { - date = null; - } - } - - if ((minimum != null && date.getTime() < minimum.getTime()) - || (maximum != null && date.getTime() > maximum.getTime())) { - throw new InvalidArgumentException("Out of range: " + value); - } - - if (date == null) { - throw new InvalidArgumentException(value); - } - - i.set(date); - } - } - - /** - * @return - */ - public Date getMaximum() { - return maximum; - } - - /** - * @param maximum - */ - public void setMaximum(Date maximum) { - this.maximum = maximum; - } - - /** - * @return - */ - public Date getMinimum() { - return minimum; - } - - /** - * @param minimum - */ - public void setMinimum(Date minimum) { - this.minimum = minimum; - } - -} +/* + * $Header$ + * $Revision$ + * $Date$ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache GroupImpl. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ +package org.apache.commons.cli2.validation; + +import java.text.DateFormat; +import java.text.ParsePosition; +import java.util.Date; +import java.util.List; +import java.util.ListIterator; + +/** + * @author Rob Oxspring + */ +public class DateValidator implements Validator { + + public static DateValidator getDateInstance() { + return new DateValidator(DateFormat.getDateInstance()); + } + + public static DateValidator getTimeInstance() { + return new DateValidator(DateFormat.getTimeInstance()); + } + + public static DateValidator getDateTimeInstance() { + return new DateValidator(DateFormat.getDateTimeInstance()); + } + + public final DateFormat[] formats; + + private Date minimum; + private Date maximum; + + public DateValidator() { + this(DateFormat.getInstance()); + } + + public DateValidator(final DateFormat format) { + this.formats = new DateFormat[] { format }; + } + + public DateValidator(final List formats) { + this.formats = + (DateFormat[]) formats.toArray(new DateFormat[formats.size()]); + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) + */ + public void validate(final List values) throws InvalidArgumentException { + for (final ListIterator i = values.listIterator(); i.hasNext();) { + final String value = (String) i.next(); + + Date date = null; + for (int f = 0; f < formats.length && date == null; ++f) { + final ParsePosition pp = new ParsePosition(0); + date = formats[f].parse(value, pp); + if (pp.getIndex() < value.length()) { + date = null; + } + } + + if ((minimum != null && date.getTime() < minimum.getTime()) + || (maximum != null && date.getTime() > maximum.getTime())) { + throw new InvalidArgumentException("Out of range: " + value); + } + + if (date == null) { + throw new InvalidArgumentException(value); + } + + i.set(date); + } + } + + /** + * @return + */ + public Date getMaximum() { + return maximum; + } + + /** + * @param maximum + */ + public void setMaximum(Date maximum) { + this.maximum = maximum; + } + + /** + * @return + */ + public Date getMinimum() { + return minimum; + } + + /** + * @param minimum + */ + public void setMinimum(Date minimum) { + this.minimum = minimum; + } + +} 1.2 +160 -109 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/NumberValidator.java Index: NumberValidator.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/NumberValidator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- NumberValidator.java 18 Oct 2003 22:00:17 -0000 1.1 +++ NumberValidator.java 20 Oct 2003 21:40:44 -0000 1.2 @@ -1,109 +1,160 @@ -/* - * Created on 25-Aug-2003 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.apache.commons.cli2.validation; - -import java.text.NumberFormat; -import java.text.ParsePosition; -import java.util.List; -import java.util.ListIterator; - -/** - * @author Rob - * - * To change the template for this generated type comment go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -public class NumberValidator implements Validator { - - public static NumberValidator getCurrencyInstance() { - return new NumberValidator(NumberFormat.getCurrencyInstance()); - } - - public static NumberValidator getIntegerInstance() { - return new NumberValidator(NumberFormat.getIntegerInstance()); - } - - public static NumberValidator getPercentInstance() { - return new NumberValidator(NumberFormat.getPercentInstance()); - } - - public static NumberValidator getNumberInstance() { - return new NumberValidator(NumberFormat.getNumberInstance()); - } - - private final NumberFormat format; - private Number minimum = null; - private Number maximum = null; - - public NumberValidator() { - this(NumberFormat.getInstance()); - } - - public NumberValidator(final NumberFormat format) { - this.format = format; - } - - /* (non-Javadoc) - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String value = (String) i.next(); - - final ParsePosition pp = new ParsePosition(0); - final Number number = format.parse(value, pp); - if (pp.getIndex() < value.length()) { - throw new InvalidArgumentException(value); - } - - if ((minimum != null - && number.doubleValue() < minimum.doubleValue()) - || (maximum != null - && number.doubleValue() > maximum.doubleValue())) { - throw new InvalidArgumentException("Out of range: " + value); - } - - i.set(number); - } - } - - /** - * @return - */ - public NumberFormat getFormat() { - return format; - } - - /** - * @return - */ - public Number getMaximum() { - return maximum; - } - - /** - * @param maximum - */ - public void setMaximum(Number maximum) { - this.maximum = maximum; - } - - /** - * @return - */ - public Number getMinimum() { - return minimum; - } - - /** - * @param minimum - */ - public void setMinimum(Number minimum) { - this.minimum = minimum; - } - -} +/* + * $Header$ + * $Revision$ + * $Date$ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache GroupImpl. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ +package org.apache.commons.cli2.validation; + +import java.text.NumberFormat; +import java.text.ParsePosition; +import java.util.List; +import java.util.ListIterator; + +/** + * @author Rob Oxspring + */ +public class NumberValidator implements Validator { + + public static NumberValidator getCurrencyInstance() { + return new NumberValidator(NumberFormat.getCurrencyInstance()); + } + + public static NumberValidator getIntegerInstance() { + return new NumberValidator(NumberFormat.getIntegerInstance()); + } + + public static NumberValidator getPercentInstance() { + return new NumberValidator(NumberFormat.getPercentInstance()); + } + + public static NumberValidator getNumberInstance() { + return new NumberValidator(NumberFormat.getNumberInstance()); + } + + private final NumberFormat format; + private Number minimum = null; + private Number maximum = null; + + public NumberValidator() { + this(NumberFormat.getInstance()); + } + + public NumberValidator(final NumberFormat format) { + this.format = format; + } + + /* (non-Javadoc) + * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) + */ + public void validate(final List values) throws InvalidArgumentException { + for (final ListIterator i = values.listIterator(); i.hasNext();) { + final String value = (String) i.next(); + + final ParsePosition pp = new ParsePosition(0); + final Number number = format.parse(value, pp); + if (pp.getIndex() < value.length()) { + throw new InvalidArgumentException(value); + } + + if ((minimum != null + && number.doubleValue() < minimum.doubleValue()) + || (maximum != null + && number.doubleValue() > maximum.doubleValue())) { + throw new InvalidArgumentException("Out of range: " + value); + } + + i.set(number); + } + } + + /** + * @return + */ + public NumberFormat getFormat() { + return format; + } + + /** + * @return + */ + public Number getMaximum() { + return maximum; + } + + /** + * @param maximum + */ + public void setMaximum(Number maximum) { + this.maximum = maximum; + } + + /** + * @return + */ + public Number getMinimum() { + return minimum; + } + + /** + * @param minimum + */ + public void setMinimum(Number minimum) { + this.minimum = minimum; + } + +} 1.2 +71 -19 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/InvalidArgumentException.java Index: InvalidArgumentException.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/InvalidArgumentException.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- InvalidArgumentException.java 18 Oct 2003 22:00:17 -0000 1.1 +++ InvalidArgumentException.java 20 Oct 2003 21:40:44 -0000 1.2 @@ -1,19 +1,71 @@ -/* - * Created on 25-Aug-2003 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.apache.commons.cli2.validation; - -/** - * @author Rob - * - * To change the template for this generated type comment go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -public class InvalidArgumentException extends Exception { - public InvalidArgumentException(final String value) { - super(value); - } -} +/* + * $Header$ + * $Revision$ + * $Date$ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache GroupImpl. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ +package org.apache.commons.cli2.validation; + +/** + * @author Rob Oxspring + */ +public class InvalidArgumentException extends Exception { + + public InvalidArgumentException(final String message) { + super(message); + } +} 1.2 +185 -128 jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/ClassValidator.java Index: ClassValidator.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/cli/src/java/org/apache/commons/cli2/validation/ClassValidator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ClassValidator.java 18 Oct 2003 22:00:17 -0000 1.1 +++ ClassValidator.java 20 Oct 2003 21:40:44 -0000 1.2 @@ -1,128 +1,185 @@ -/* - * Created on 25-Aug-2003 - * - * To change the template for this generated file go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -package org.apache.commons.cli2.validation; - -import java.util.List; -import java.util.ListIterator; - -/** - * @author Rob - * - * To change the template for this generated type comment go to - * Window - Preferences - Java - Code Generation - Code and Comments - */ -public class ClassValidator implements Validator { - - private boolean loadable = false; - private boolean instance = false; - - private ClassLoader loader; - - /* (non-Javadoc) - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String name = (String) i.next(); - - if (!isPotentialClassName(name)) { - throw new InvalidArgumentException("Bad class name: " + name); - } - - if (loadable || instance) { - if (loader == null) { - loader = getClass().getClassLoader(); - } - try { - final Class clazz = loader.loadClass(name); - if(instance){ - i.set(clazz.newInstance()); - } - else{ - i.set(clazz); - } - } catch (ClassNotFoundException cnfe) { - throw new InvalidArgumentException( - "Class not found: " + name); - } catch (IllegalAccessException iae) { - throw new InvalidArgumentException( - "Cannot create instance: " + name); - } catch (InstantiationException iae) { - throw new InvalidArgumentException( - "Cannot create instance: " + name); - } - } - } - } - - protected boolean isPotentialClassName(final String name) { - final char[] chars = name.toCharArray(); - - boolean expectingStart = true; - - for (int i = 0; i < chars.length; ++i) { - final char c = chars[i]; - if (expectingStart) { - if (!Character.isJavaIdentifierStart(c)) { - return false; - } else { - expectingStart = false; - } - } else { - if (c == '.') { - expectingStart = true; - } else if (!Character.isJavaIdentifierPart(c)) { - return false; - } - } - } - return !expectingStart; - } - - /** - * @return - */ - public boolean isLoadable() { - return loadable; - } - - /** - * @param loadable - */ - public void setLoadable(boolean loadable) { - this.loadable = loadable; - } - - /** - * @return - */ - public ClassLoader getLoader() { - return loader; - } - - /** - * @param loader - */ - public void setLoader(ClassLoader loader) { - this.loader = loader; - } - - /** - * @return - */ - public boolean isInstance() { - return instance; - } - - /** - * @param instance - */ - public void setInstance(boolean instance) { - this.instance = instance; - } - -} +/* + * $Header$ + * $Revision$ + * $Date$ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Commons", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache GroupImpl. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ +package org.apache.commons.cli2.validation; + +import java.util.List; +import java.util.ListIterator; + +/** + * @author Rob Oxspring + */ +public class ClassValidator implements Validator { + + private boolean loadable = false; + private boolean instance = false; + + private ClassLoader loader; + + /* (non-Javadoc) + * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) + */ + public void validate(final List values) throws InvalidArgumentException { + for (final ListIterator i = values.listIterator(); i.hasNext();) { + final String name = (String) i.next(); + + if (!isPotentialClassName(name)) { + throw new InvalidArgumentException("Bad class name: " + name); + } + + if (loadable || instance) { + if (loader == null) { + loader = getClass().getClassLoader(); + } + try { + final Class clazz = loader.loadClass(name); + if (instance) { + i.set(clazz.newInstance()); + } + else { + i.set(clazz); + } + } + catch (ClassNotFoundException cnfe) { + throw new InvalidArgumentException( + "Class not found: " + name); + } + catch (IllegalAccessException iae) { + throw new InvalidArgumentException( + "Cannot create instance: " + name); + } + catch (InstantiationException iae) { + throw new InvalidArgumentException( + "Cannot create instance: " + name); + } + } + } + } + + protected boolean isPotentialClassName(final String name) { + final char[] chars = name.toCharArray(); + + boolean expectingStart = true; + + for (int i = 0; i < chars.length; ++i) { + final char c = chars[i]; + if (expectingStart) { + if (!Character.isJavaIdentifierStart(c)) { + return false; + } + else { + expectingStart = false; + } + } + else { + if (c == '.') { + expectingStart = true; + } + else if (!Character.isJavaIdentifierPart(c)) { + return false; + } + } + } + return !expectingStart; + } + + /** + * @return + */ + public boolean isLoadable() { + return loadable; + } + + /** + * @param loadable + */ + public void setLoadable(boolean loadable) { + this.loadable = loadable; + } + + /** + * @return + */ + public ClassLoader getLoader() { + return loader; + } + + /** + * @param loader + */ + public void setLoader(ClassLoader loader) { + this.loader = loader; + } + + /** + * @return + */ + public boolean isInstance() { + return instance; + } + + /** + * @param instance + */ + public void setInstance(boolean instance) { + this.instance = instance; + } + +}
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]