1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /* 6 * Licensed to the Apache Software Foundation (ASF) under one or more 7 * contributor license agreements. See the NOTICE file distributed with 8 * this work for additional information regarding copyright ownership. 9 * The ASF licenses this file to You under the Apache License, Version 2.0 10 * (the "License"); you may not use this file except in compliance with 11 * the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 */ 21 22 package com.sun.org.apache.xerces.internal.impl.dv.xs; 23 24 import com.sun.org.apache.xerces.internal.impl.dv.XSSimpleType; 25 import com.sun.org.apache.xerces.internal.util.SymbolHash; 26 27 /** 28 * A special factory to create/return built-in schema DVs and create user-defined DVs 29 * that includes anyAtomicType, yearMonthDuration and dayTimeDuration 30 * 31 * @xerces.internal 32 * 33 * @author Khaled Noaman, IBM 34 * 35 */ 36 public class ExtendedSchemaDVFactoryImpl extends BaseSchemaDVFactory { 37 38 static SymbolHash fBuiltInTypes = new SymbolHash(); 39 static { 40 createBuiltInTypes(); 41 } 42 43 // create all built-in types 44 static void createBuiltInTypes() { 45 final String ANYATOMICTYPE = "anyAtomicType"; 46 final String DURATION = "duration"; 47 final String YEARMONTHDURATION = "yearMonthDuration"; 48 final String DAYTIMEDURATION = "dayTimeDuration"; 49 50 createBuiltInTypes(fBuiltInTypes, XSSimpleTypeDecl.fAnyAtomicType); 51 52 // add anyAtomicType 53 fBuiltInTypes.put(ANYATOMICTYPE, XSSimpleTypeDecl.fAnyAtomicType); 54 55 // add 2 duration types 56 XSSimpleTypeDecl durationDV = (XSSimpleTypeDecl)fBuiltInTypes.get(DURATION); 57 fBuiltInTypes.put(YEARMONTHDURATION, new XSSimpleTypeDecl(durationDV, YEARMONTHDURATION, XSSimpleTypeDecl.DV_YEARMONTHDURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSSimpleTypeDecl.YEARMONTHDURATION_DT)); 58 fBuiltInTypes.put(DAYTIMEDURATION, new XSSimpleTypeDecl(durationDV, DAYTIMEDURATION, XSSimpleTypeDecl.DV_DAYTIMEDURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSSimpleTypeDecl.DAYTIMEDURATION_DT)); 59 } //createBuiltInTypes() 60 61 /** 62 * Get a built-in simple type of the given name 63 * REVISIT: its still not decided within the Schema WG how to define the 64 * ur-types and if all simple types should be derived from a 65 * complex type, so as of now we ignore the fact that anySimpleType 66 * is derived from anyType, and pass 'null' as the base of 67 * anySimpleType. It needs to be changed as per the decision taken. 68 * 69 * @param name the name of the datatype 70 * @return the datatype validator of the given name 71 */ 72 public XSSimpleType getBuiltInType(String name) { 73 return (XSSimpleType)fBuiltInTypes.get(name); 74 } 75 76 /** 77 * get all built-in simple types, which are stored in a hashtable keyed by 78 * the name 79 * 80 * @return a hashtable which contains all built-in simple types 81 */ 82 public SymbolHash getBuiltInTypes() { 83 return (SymbolHash)fBuiltInTypes.makeClone(); 84 } 85 }