blob: d3b02318fe9a2570faa10afa3d6b7d53c7e7d797 [file] [log] [blame]
package org.eclipse.wst.xml.xpath2.processor.internal.types.builtin;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import javax.xml.datatype.Duration;
import org.eclipse.wst.xml.xpath2.api.typesystem.TypeDefinition;
import org.eclipse.wst.xml.xpath2.api.typesystem.TypeModel;
import org.eclipse.wst.xml.xpath2.processor.internal.types.AnyAtomicType;
import org.eclipse.wst.xml.xpath2.processor.internal.types.QName;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSAnyURI;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSBase64Binary;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSBoolean;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSByte;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDate;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDateTime;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDayTimeDuration;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDouble;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDuration;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSEntity;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSFloat;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSGDay;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSGMonth;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSGMonthDay;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSGYear;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSGYearMonth;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSHexBinary;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSID;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSIDREF;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSInt;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSInteger;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSLong;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSNCName;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSNMTOKEN;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSName;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSNegativeInteger;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSNonNegativeInteger;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSNonPositiveInteger;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSNotation;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSPositiveInteger;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSShort;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSString;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSTime;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSToken;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSUnsignedByte;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSUnsignedInt;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSUnsignedLong;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSUnsignedShort;
import org.eclipse.wst.xml.xpath2.processor.internal.types.XSYearMonthDuration;
import org.w3c.dom.Node;
/**
* This type captures all of the built-in XPath 2.0 types, as defined in F&O specification.
* http://www.w3.org/TR/xquery-operators/#datatypes
*/
public class BuiltinTypeLibrary {
// This type captures all of the built-in XPath 2.0 types, as defined in F&O specification.
// http://www.w3.org/TR/xquery-operators/#datatypes
public final static BuiltinTypeDefinition XS_ANYTYPE = new BuiltinTypeDefinition("anyType", null);
public final static BuiltinTypeDefinition XS_UNTYPED = new BuiltinTypeDefinition("untyped", XS_ANYTYPE);
public final static BuiltinTypeDefinition XS_ANYSIMPLETYPE = new BuiltinTypeDefinition("anySimpleType", XS_ANYTYPE);
// Subtypes of user-defined list and union types
// xs:IDREFS
// xs:NMTOKENS
// xs:ENTITIES
// xs:anyAtomicType
public final static BuiltinAtomicTypeDefinition XS_ANYATOMICTYPE = new BuiltinAtomicTypeDefinition("anyAtomicType", AnyAtomicType.class, Object.class, XS_ANYSIMPLETYPE);
public final static BuiltinAtomicTypeDefinition XS_UNTYPEDATOMIC = new BuiltinAtomicTypeDefinition("untypedAtomic", null, String.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_DATETIME = new BuiltinAtomicTypeDefinition("dateTime", XSDateTime.class, Calendar.class,XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_DATE = new BuiltinAtomicTypeDefinition("date", XSDate.class, Calendar.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_TIME = new BuiltinAtomicTypeDefinition("time", XSTime.class, Calendar.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_DURATION = new BuiltinAtomicTypeDefinition("duration", XSDuration.class, Duration.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_YEARMONTHDURATION = new BuiltinAtomicTypeDefinition("yearMonthDuration", XSYearMonthDuration.class, Duration.class, XS_DURATION);
public final static BuiltinAtomicTypeDefinition XS_DAYTIMEDURATION = new BuiltinAtomicTypeDefinition("dayTimeDuration", XSDayTimeDuration.class, Duration.class, XS_DURATION);
public final static BuiltinAtomicTypeDefinition XS_FLOAT = new BuiltinAtomicTypeDefinition("float", XSFloat.class, Float.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_DOUBLE = new BuiltinAtomicTypeDefinition("double", XSDouble.class, Double.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_DECIMAL = new BuiltinAtomicTypeDefinition("decimal", XSDecimal.class, BigDecimal.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_INTEGER = new BuiltinAtomicTypeDefinition("integer", XSInteger.class, BigInteger.class, XS_DECIMAL);
public final static BuiltinAtomicTypeDefinition XS_NONPOSITIVEINTEGER = new BuiltinAtomicTypeDefinition("nonPositiveInteger", XSNonPositiveInteger.class, BigInteger.class, XS_INTEGER);
public final static BuiltinAtomicTypeDefinition XS_NEGATIVEINTEGER = new BuiltinAtomicTypeDefinition("negativeInteger", XSNegativeInteger.class, BigInteger.class, XS_NONPOSITIVEINTEGER);
public final static BuiltinAtomicTypeDefinition XS_LONG = new BuiltinAtomicTypeDefinition("long", XSLong.class, Long.class, XS_INTEGER);
public final static BuiltinAtomicTypeDefinition XS_INT = new BuiltinAtomicTypeDefinition("int", XSInt.class, Integer.class, XS_LONG);
public final static BuiltinAtomicTypeDefinition XS_SHORT = new BuiltinAtomicTypeDefinition("short", XSShort.class, Short.class, XS_INT);
public final static BuiltinAtomicTypeDefinition XS_BYTE = new BuiltinAtomicTypeDefinition("byte", XSByte.class, Byte.class, XS_SHORT);
public final static BuiltinAtomicTypeDefinition XS_NONNEGATIVEINTEGER = new BuiltinAtomicTypeDefinition("nonNegativeInteger", XSNonNegativeInteger.class, BigInteger.class, XS_INTEGER);
public final static BuiltinAtomicTypeDefinition XS_UNSIGNEDLONG = new BuiltinAtomicTypeDefinition("unsignedLong", XSUnsignedLong.class, BigInteger.class, XS_NONNEGATIVEINTEGER);
public final static BuiltinAtomicTypeDefinition XS_UNSIGNEDINT = new BuiltinAtomicTypeDefinition("unsignedInt", XSUnsignedInt.class, Long.class, XS_UNSIGNEDLONG);
public final static BuiltinAtomicTypeDefinition XS_UNSIGNEDSHORT = new BuiltinAtomicTypeDefinition("unsignedShort", XSUnsignedShort.class, Integer.class, XS_UNSIGNEDINT);
public final static BuiltinAtomicTypeDefinition XS_UNSIGNEDBYTE = new BuiltinAtomicTypeDefinition("unsignedByte", XSUnsignedByte.class, Short.class, XS_UNSIGNEDSHORT);
public final static BuiltinAtomicTypeDefinition XS_POSITIVEINTEGER = new BuiltinAtomicTypeDefinition("positiveInteger", XSPositiveInteger.class, BigInteger.class, XS_NONNEGATIVEINTEGER);
public final static BuiltinAtomicTypeDefinition XS_GYEARMONTH = new BuiltinAtomicTypeDefinition("gYearMonth", XSGYearMonth.class, Calendar.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_GYEAR = new BuiltinAtomicTypeDefinition("gYear", XSGYear.class, Calendar.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_GMONTHDAY = new BuiltinAtomicTypeDefinition("gMonthDay", XSGMonthDay.class, Calendar.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_GDAY = new BuiltinAtomicTypeDefinition("gDay", XSGDay.class, Calendar.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_GMONTH = new BuiltinAtomicTypeDefinition("gMonth", XSGMonth.class, Calendar.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_STRING = new BuiltinAtomicTypeDefinition("string", XSString.class, String.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_NORMALIZEDSTRING = new BuiltinAtomicTypeDefinition("normalizedString", XSString.class, String.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_TOKEN = new BuiltinAtomicTypeDefinition("token", XSToken.class, String.class, XS_NORMALIZEDSTRING);
public final static BuiltinAtomicTypeDefinition XS_LANGUAGE = new BuiltinAtomicTypeDefinition("language", XSToken.class, String.class, XS_TOKEN);
public final static BuiltinAtomicTypeDefinition XS_NMTOKEN = new BuiltinAtomicTypeDefinition("NMTOKEN", XSNMTOKEN.class, String.class, XS_TOKEN);
public final static BuiltinAtomicTypeDefinition XS_NAME = new BuiltinAtomicTypeDefinition("Name", XSName.class, String.class, XS_TOKEN);
public final static BuiltinAtomicTypeDefinition XS_NCNAME = new BuiltinAtomicTypeDefinition("NCName", XSNCName.class, String.class, XS_NAME);
public final static BuiltinAtomicTypeDefinition XS_ID = new BuiltinAtomicTypeDefinition("ID", XSID.class, String.class, XS_NCNAME);
public final static BuiltinAtomicTypeDefinition XS_IDREF = new BuiltinAtomicTypeDefinition("IDREF", XSIDREF.class, String.class, XS_NCNAME);
public final static BuiltinAtomicTypeDefinition XS_ENTITY = new BuiltinAtomicTypeDefinition("ENTITY", XSEntity.class, String.class, XS_NCNAME);
public final static BuiltinAtomicTypeDefinition XS_BOOLEAN = new BuiltinAtomicTypeDefinition("boolean", XSBoolean.class, Boolean.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_BASE64BINARY = new BuiltinAtomicTypeDefinition("base64Binary", XSBase64Binary.class, byte[].class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_HEXBINARY = new BuiltinAtomicTypeDefinition("hexBinary", XSHexBinary.class, byte[].class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_ANYURI = new BuiltinAtomicTypeDefinition("anyURI", XSAnyURI.class, String.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_QNAME = new BuiltinAtomicTypeDefinition("QName", QName.class, javax.xml.namespace.QName.class, XS_ANYATOMICTYPE);
public final static BuiltinAtomicTypeDefinition XS_NOTATION = new BuiltinAtomicTypeDefinition("NOTATION", XSNotation.class, String.class, XS_ANYATOMICTYPE);
// These are also subtypes of any types
public final static BuiltinListTypeDefinition XS_IDREFS = new BuiltinListTypeDefinition("IDREFS", XS_ANYTYPE, XS_IDREF);
public final static BuiltinListTypeDefinition XS_NMTOKENS = new BuiltinListTypeDefinition("NMTOKENS", XS_ANYTYPE, XS_NMTOKEN);
public final static BuiltinListTypeDefinition XS_ENTITIES = new BuiltinListTypeDefinition("ENTITIES", XS_ANYTYPE, XS_ENTITY);
public static final TypeModel BUILTIN_TYPES = new TypeModel() {
public TypeDefinition lookupType(String namespace, String typeName) {
if (! BuiltinTypeDefinition.XS_NS.equals(namespace)) return null;
return (TypeDefinition) builtinTypes.get(typeName);
}
public TypeDefinition lookupElementDeclaration(String namespace, String elementName) {
return null;
}
public TypeDefinition lookupAttributeDeclaration(String namespace, String attributeName) {
return null;
}
private Map/*<String, BuiltinTypeDefinition>*/ builtinTypes = new HashMap/*<String, BuiltinTypeDefinition>*/();
{
addType(XS_ANYTYPE);
addType(XS_UNTYPED);
addType(XS_ANYSIMPLETYPE);
addType(XS_ANYATOMICTYPE);
addType(XS_UNTYPEDATOMIC);
addType(XS_DATETIME);
addType(XS_DATE);
addType(XS_TIME);
addType(XS_DURATION);
addType(XS_YEARMONTHDURATION);
addType(XS_DAYTIMEDURATION);
addType(XS_FLOAT);
addType(XS_DOUBLE);
addType(XS_DECIMAL);
addType(XS_INTEGER);
addType(XS_NONPOSITIVEINTEGER);
addType(XS_NEGATIVEINTEGER);
addType(XS_LONG);
addType(XS_INT);
addType(XS_SHORT);
addType(XS_BYTE);
addType(XS_NONNEGATIVEINTEGER);
addType(XS_UNSIGNEDLONG);
addType(XS_UNSIGNEDINT);
addType(XS_UNSIGNEDSHORT);
addType(XS_UNSIGNEDBYTE);
addType(XS_POSITIVEINTEGER);
addType(XS_GYEARMONTH);
addType(XS_GYEAR);
addType(XS_GMONTHDAY);
addType(XS_GDAY);
addType(XS_GMONTH);
addType(XS_STRING);
addType(XS_NORMALIZEDSTRING);
addType(XS_TOKEN);
addType(XS_LANGUAGE);
addType(XS_NMTOKEN);
addType(XS_NAME);
addType(XS_NCNAME);
addType(XS_ID);
addType(XS_IDREF);
addType(XS_ENTITY);
addType(XS_BOOLEAN);
addType(XS_BASE64BINARY);
addType(XS_HEXBINARY);
addType(XS_ANYURI);
addType(XS_QNAME);
addType(XS_NOTATION);
addType(XS_IDREFS);
addType(XS_NMTOKENS);
addType(XS_ENTITIES);
}
private void addType(BuiltinTypeDefinition btd) { builtinTypes.put(btd.getName(), btd); }
public TypeDefinition getType(Node node) {
return null;
}
};
// Not types under XML Schema namespace
// item
// xs:anyAtomicType
// node
// attribute
// user-defined attribute types
// comment
// document
// user-defined document types
// element
// user-defined element types
// processing-instruction
// text
}