001// Copyright 2004, 2005 The Apache Software Foundation
002//
003// Licensed under the Apache License, Version 2.0 (the "License");
004// you may not use this file except in compliance with the License.
005// You may obtain a copy of the License at
006//
007//     http://www.apache.org/licenses/LICENSE-2.0
008//
009// Unless required by applicable law or agreed to in writing, software
010// distributed under the License is distributed on an "AS IS" BASIS,
011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012// See the License for the specific language governing permissions and
013// limitations under the License.
014
015package org.apache.tapestry.valid;
016
017import java.io.Serializable;
018
019/**
020 * Defines an enumeration of different types of validation constraints that may be violated.
021 * 
022 * @author Howard Lewis Ship
023 */
024
025public class ValidationConstraint implements Serializable
026{
027    private static final long serialVersionUID = 371593028205311930L;
028
029    /**
030     * Indicates that no value (or a value consisting only of white space) was provided for a field
031     * that requires a non-null value.
032     */
033
034    public static final ValidationConstraint REQUIRED = new ValidationConstraint("REQUIRED");
035
036    /**
037     * Indicates that a non-null value was provided, but that (after removing leading and trailing
038     * whitespace), the value was not long enough.
039     */
040
041    public static final ValidationConstraint MINIMUM_WIDTH = new ValidationConstraint(
042            "MINIMUM_WIDTH");
043
044    /**
045     * Indicates that a non-null value was provided, but that (after removing leading and trailing
046     * whitespace), the value was too long.
047     */
048
049    public static final ValidationConstraint MAXIMUM_WIDTH = new ValidationConstraint(
050            "MAXIMUM_WIDTH");
051
052    /**
053     * Indicates a general error in converting a String into a Date.
054     */
055
056    public static final ValidationConstraint DATE_FORMAT = new ValidationConstraint("DATE_FORMAT");
057
058    /**
059     * Indicates a general error in the format of a string that is to be interpreted as a email.
060     */
061
062    public static final ValidationConstraint EMAIL_FORMAT = new ValidationConstraint("EMAIL_FORMAT");
063
064    /**
065     * Indicates a general error in the format of a string that is to be interpreted as a number.
066     */
067
068    public static final ValidationConstraint NUMBER_FORMAT = new ValidationConstraint(
069            "NUMBER_FORMAT");
070
071    /**
072     * Indicates that the value was too small (for a Date, too early).
073     */
074
075    public static final ValidationConstraint TOO_SMALL = new ValidationConstraint("TOO_SMALL");
076
077    /**
078     * Indicates that the value was too large (for a Date, too late).
079     */
080
081    public static final ValidationConstraint TOO_LARGE = new ValidationConstraint("TOO_LARGE");
082
083    /**
084     * Indicates an error in a string that does not fulfill a pattern.
085     * 
086     * @since 3.0
087     */
088
089    public static final ValidationConstraint PATTERN_MISMATCH = new ValidationConstraint(
090            "PATTERN_MISMATCH");
091
092    /**
093     * Indicates a consistency error, usually between too different fields.
094     * 
095     * @since 3.0
096     */
097
098    public static final ValidationConstraint CONSISTENCY = new ValidationConstraint("CONSISTENCY");
099
100    /**
101     * Indicates that a URL is not of the correct format
102     * 
103     * @since 3.0
104     */
105
106    public static final ValidationConstraint URL_FORMAT = new ValidationConstraint("URL_FORMAT");
107
108    /**
109     * Indicates that the URL does not use one of the specified protocols
110     * 
111     * @since 3.0
112     */
113
114    public static final ValidationConstraint DISALLOWED_PROTOCOL = new ValidationConstraint(
115            "DISALLOWED_PROTOCOL");
116
117    private final String _name;
118
119    /**
120     * Protected constructor, which allows new constraints to be created as subclasses.
121     */
122
123    protected ValidationConstraint(String name)
124    {
125        _name = name;
126    }
127
128    public String toString()
129    {
130        return "ValidationConstraint[" + _name + "]";
131    }
132}