1
package com.thaiopensource.datatype.sample;
3
import org.relaxng.datatype.*;
4
import org.relaxng.datatype.helpers.ParameterlessDatatypeBuilder;
5
import org.relaxng.datatype.helpers.StreamingValidatorImpl;
7
public abstract class SimpleDatatypeLibrary implements Datatype,
9
DatatypeLibraryFactory {
10
private final String uri;
11
private final String localName;
12
private final DatatypeBuilder datatypeBuilder;
14
protected SimpleDatatypeLibrary(String uri, String localName) {
16
this.localName = localName;
17
this.datatypeBuilder = new ParameterlessDatatypeBuilder(this);
20
public DatatypeLibrary createDatatypeLibrary(String uri) {
21
return this.uri.equals(uri) ? this : null;
24
public DatatypeBuilder createDatatypeBuilder(String localName)
25
throws DatatypeException {
26
if (!this.localName.equals(localName))
27
throw new DatatypeException();
28
return datatypeBuilder;
31
public Datatype createDatatype(String localName)
32
throws DatatypeException {
33
return createDatatypeBuilder(localName).createDatatype();
36
protected abstract boolean isValid(String literal);
38
public void checkValid(String literal, ValidationContext context)
39
throws DatatypeException {
40
if (!isValid(literal, context))
41
throw new DatatypeException();
44
public boolean isValid(String literal, ValidationContext context) {
45
return isValid(literal);
48
public DatatypeStreamingValidator createStreamingValidator(ValidationContext context) {
49
return new StreamingValidatorImpl(this, context);
52
public Object createValue(String literal, ValidationContext context) {
53
if (!isValid(literal, context))
58
public boolean sameValue(Object obj1, Object obj2) {
59
return obj1.equals(obj2);
62
public int valueHashCode(Object obj) {
63
return obj.hashCode();
66
public int getIdType() {
70
public boolean isContextDependent() {