/* * reserved comment block * DO NOT REMOVE OR ALTER! */ /* * Copyright 2001, 2002,2004 The Apache Software Foundation. * * Licensed 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 com.sun.org.apache.xerces.internal.impl.dv; import com.sun.org.apache.xerces.internal.xs.XSSimpleTypeDefinition; /** * This interface <code>XSSimpleType</code> represents the simple type * definition of schema component and defines methods to query the information * contained. * Any simple type (atomic, list or union) will implement this interface. * It inherits from <code>XSTypeDecl</code>. * * @xerces.internal * * @author Sandy Gao, IBM * */ public interface XSSimpleType extends XSSimpleTypeDefinition { /** * constants defined for the values of 'whitespace' facet. * see <a href='http://www.w3.org/TR/xmlschema-2/#dt-whiteSpace'> XML Schema * Part 2: Datatypes </a> */ /** preserve the white spaces */ public static final short WS_PRESERVE = 0; /** replace the white spaces */ public static final short WS_REPLACE = 1; /** collapse the white spaces */ public static final short WS_COLLAPSE = 2; /** * Constant defined for the primitive built-in simple tpyes. * see <a href='http://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes'> * XML Schema Part 2: Datatypes </a> */ /** "string" type */ public static final short PRIMITIVE_STRING = 1; /** "boolean" type */ public static final short PRIMITIVE_BOOLEAN = 2; /** "decimal" type */ public static final short PRIMITIVE_DECIMAL = 3; /** "float" type */ public static final short PRIMITIVE_FLOAT = 4; /** "double" type */ public static final short PRIMITIVE_DOUBLE = 5; /** "duration" type */ public static final short PRIMITIVE_DURATION = 6; /** "dataTime" type */ public static final short PRIMITIVE_DATETIME = 7; /** "time" type */ public static final short PRIMITIVE_TIME = 8; /** "date" type */ public static final short PRIMITIVE_DATE = 9; /** "gYearMonth" type */ public static final short PRIMITIVE_GYEARMONTH = 10; /** "gYear" type */ public static final short PRIMITIVE_GYEAR = 11; /** "gMonthDay" type */ public static final short PRIMITIVE_GMONTHDAY = 12; /** "gDay" type */ public static final short PRIMITIVE_GDAY = 13; /** "gMonth" type */ public static final short PRIMITIVE_GMONTH = 14; /** "hexBinary" type */ public static final short PRIMITIVE_HEXBINARY = 15; /** "base64Binary" type */ public static final short PRIMITIVE_BASE64BINARY = 16; /** "anyURI" type */ public static final short PRIMITIVE_ANYURI = 17; /** "QName" type */ public static final short PRIMITIVE_QNAME = 18; /** "precisionDecimal" type */ public static final short PRIMITIVE_PRECISIONDECIMAL = 19; /** "NOTATION" type */ public static final short PRIMITIVE_NOTATION = 20; /** * return an ID representing the built-in primitive base type. * REVISIT: This method is (currently) for internal use only. * the constants returned from this method are not finalized yet. * the names and values might change in the further. * * @return an ID representing the built-in primitive base type */ public short getPrimitiveKind(); /** * validate a given string against this simple type. * * @param content the string value that needs to be validated * @param context the validation context * @param validatedInfo used to store validation result * * @return the actual value (QName, Boolean) of the string value */ public Object validate(String content, ValidationContext context, ValidatedInfo validatedInfo) throws InvalidDatatypeValueException; /** * validate a given string value, represented by content.toString(). * note that if content is a StringBuffer, for performance reasons, * it's possible that the content of the string buffer is modified. * * @param content the string value that needs to be validated * @param context the validation context * @param validatedInfo used to store validation result * * @return the actual value (QName, Boolean) of the string value */ public Object validate(Object content, ValidationContext context, ValidatedInfo validatedInfo) throws InvalidDatatypeValueException; /** * Validate an actual value against this simple type. * * @param context the validation context * @param validatedInfo used to provide the actual value and member types * @exception InvalidDatatypeValueException exception for invalid values. */ public void validate(ValidationContext context, ValidatedInfo validatedInfo) throws InvalidDatatypeValueException; /** * If this type is created from restriction, then some facets can be applied * to the simple type. <code>XSFacets</code> is used to pass the value of * different facets. * * @param facets the value of all the facets * @param presentFacet bit combination value of the costraining facet * constants which are present. * @param fixedFacet bit combination value of the costraining facet * constants which are fixed. * @param context the validation context * @exception InvalidDatatypeFacetException exception for invalid facet values. */ public void applyFacets(XSFacets facets, short presentFacet, short fixedFacet, ValidationContext context) throws InvalidDatatypeFacetException; /** * Check whether two actual values are equal. * * @param value1 the first value * @param value2 the second value * @return true if the two value are equal */ public boolean isEqual(Object value1, Object value2); /** * Check the order of the two actual values. (May not be supported by all * simple types. * REVISIT: Andy believes that a compare() method is necessary. * I don't see the necessity for schema (the only place where we * need to compare two values is to check min/maxIn/Exclusive * facets, but we only need a private method for this case.) * But Andy thinks XPATH potentially needs this compare() method. * * @param value1 the first value * @prarm value2 the second value * @return > 0 if value1 > value2 * = 0 if value1 == value2 * < = if value1 < value2 */ //public short compare(Object value1, Object value2); /** * Check whether this type is or is derived from ID. * REVISIT: this method makes ID special, which is not a good design. * but since ID is not a primitive, there doesn't seem to be a * clean way of doing it except to define special method like this. * * @return whether this simple type is or is derived from ID. */ public boolean isIDType(); /** * Return the whitespace corresponding to this datatype. * * @return valid values are WS_PRESERVE, WS_REPLACE, WS_COLLAPSE. * @exception DatatypeException * union datatypes don't have whitespace facet associated with them */ public short getWhitespace() throws DatatypeException; }