1 22 23 package org.xquark.schema.datatypes; 24 25 import java.util.*; 26 27 import org.xquark.schema.SchemaException; 28 import org.xquark.schema.validation.ValidationContextProvider; 29 30 31 abstract class EnumerableType extends PrimitiveType { 32 private static final String RCSRevision = "$Revision: 1.1 $"; 33 private static final String RCSName = "$Name: $"; 34 35 private HashSet enumerations = null; 36 private List values = null; 37 38 EnumerableType(String name, int type) { 39 super(name, type); 40 } 41 42 protected java.util.Collection getEnumerations() { 45 return enumerations; 46 } 47 48 protected void setEnumeration(HashSet value, ValidationContextProvider vcProvider) throws SchemaException { 49 HashSet result = new HashSet(); 50 Iterator it = value.iterator(); 51 while (it.hasNext()) { 52 String enum = normalizedValue((String) it.next()); 53 Object valueSpace = this.toValueSpace(enum, vcProvider); 54 if (enumerations != null) checkFacets(valueSpace); 55 result.add(valueSpace); 56 } 57 enumerations = result; 58 values = null; 59 } 60 61 public void checkFacets(Object valueSpace) throws SchemaException { 62 if (enumerations != null && !enumerations.contains(valueSpace)) 63 super.invalidFacet("cvc-enumeration-valid", enumerations, valueSpace.toString()); 64 } 65 66 public List getValues() { 67 if (enumerations != null && values == null) { 68 values = new ArrayList(); 69 Iterator it = enumerations.iterator(); 70 while (it.hasNext()) { 71 values.add(toXMLString(it.next(), null)); 72 } 73 } 74 return values; 75 } 76 } 77
| Popular Tags
|