001: /*
002: * The Apache Software License, Version 1.1
003: *
004: *
005: * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights
006: * reserved.
007: *
008: * Redistribution and use in source and binary forms, with or without
009: * modification, are permitted provided that the following conditions
010: * are met:
011: *
012: * 1. Redistributions of source code must retain the above copyright
013: * notice, this list of conditions and the following disclaimer.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright
016: * notice, this list of conditions and the following disclaimer in
017: * the documentation and/or other materials provided with the
018: * distribution.
019: *
020: * 3. The end-user documentation included with the redistribution,
021: * if any, must include the following acknowledgment:
022: * "This product includes software developed by the
023: * Apache Software Foundation (http://www.apache.org/)."
024: * Alternately, this acknowledgment may appear in the software itself,
025: * if and wherever such third-party acknowledgments normally appear.
026: *
027: * 4. The names "Xerces" and "Apache Software Foundation" must
028: * not be used to endorse or promote products derived from this
029: * software without prior written permission. For written
030: * permission, please contact apache@apache.org.
031: *
032: * 5. Products derived from this software may not be called "Apache",
033: * nor may "Apache" appear in their name, without prior written
034: * permission of the Apache Software Foundation.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
040: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: * ====================================================================
049: *
050: * This software consists of voluntary contributions made by many
051: * individuals on behalf of the Apache Software Foundation and was
052: * originally based on software copyright (c) 1999, International
053: * Business Machines, Inc., http://www.apache.org. For more
054: * information on the Apache Software Foundation, please see
055: * <http://www.apache.org/>.
056: */
057:
058: package org.apache.xerces.validators.datatype;
059:
060: import java.util.Hashtable;
061: import java.util.Locale;
062:
063: /**
064: * DataTypeValidator defines the interface that data type validators must obey.
065: * These validators can be supplied by the application writer and may be useful as
066: * standalone code as well as plugins to the validator architecture.
067: * Note: there is no support for facets in this API, since we are trying to convince
068: * W3C to remove facets from the data type spec.
069: *
070: * @author Jeffrey Rodriguez-
071: * @version $Id: DatatypeValidator.java,v 1.12 2001/05/15 12:58:26 elena Exp $
072: */
073: public interface DatatypeValidator {
074: public static final short FACET_LENGTH = 0x1 << 0;
075: public static final short FACET_MINLENGTH = 0x1 << 1;
076: public static final short FACET_MAXLENGTH = 0x1 << 2;
077: public static final short FACET_PATTERN = 0x1 << 3;
078: public static final short FACET_ENUMERATION = 0x1 << 4;
079: public static final short FACET_MAXINCLUSIVE = 0x1 << 5;
080: public static final short FACET_MAXEXCLUSIVE = 0x1 << 6;
081: public static final short FACET_MININCLUSIVE = 0x1 << 7;
082: public static final short FACET_MINEXCLUSIVE = 0x1 << 8;
083: public static final short FACET_TOTALDIGITS = 0x1 << 9;
084: public static final short FACET_FRACTIONDIGITS = 0x1 << 10;
085: public static final short FACET_ENCODING = 0x1 << 11;
086: public static final short FACET_DURATION = 0x1 << 12;
087: public static final short FACET_PERIOD = 0x1 << 13;
088: public static final short FACET_WHITESPACE = 0x1 << 14;
089:
090: // _dummy_ facet that is passed with all other facets for a datatype
091: // its value flags the fixed facets
092: public static final String FACET_FIXED = "fixed";
093:
094: //2.4.2.6 whiteSpace - Datatypes
095: public static final short PRESERVE = 0;
096: public static final short REPLACE = 1;
097: public static final short COLLAPSE = 2;
098:
099: /**
100: * Checks that "content" string is valid
101: * datatype.
102: * If invalid a Datatype validation exception is thrown.
103: *
104: * @param content A string containing the content to be validated
105: *
106: * @exception throws InvalidDatatypeException if the content is
107: * invalid according to the rules for the validators
108: * @exception InvalidDatatypeValueException
109: * @see org.apache.xerces.validators.datatype.InvalidDatatypeValueException
110: */
111: public Object validate(String content, Object state)
112: throws InvalidDatatypeValueException;
113:
114: public short getWSFacet();
115:
116: // returns the base datatypeValidator of the current validator.
117: public DatatypeValidator getBaseValidator();
118:
119: /**
120: * Compares content in the Domain value vs. lexical
121: * value.
122: * e.g. If type is a float then 1.0 may be equivalent
123: * to 1 even tough both are lexically different.
124: *
125: * @param value1
126: * @param valu2
127: * @return
128: */
129: public int compare(String value1, String value2);
130:
131: }
|