1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package org.openrdf.elmo.sesame.converters.impl;
30
31 import javax.xml.datatype.DatatypeConfigurationException;
32 import javax.xml.datatype.DatatypeFactory;
33 import javax.xml.datatype.XMLGregorianCalendar;
34
35 import org.openrdf.elmo.sesame.converters.Marshall;
36 import org.openrdf.model.Literal;
37 import org.openrdf.model.URI;
38 import org.openrdf.model.ValueFactory;
39 import org.openrdf.model.vocabulary.XMLSchema;
40
41 public class XMLGregorianCalendarMarshall implements
42 Marshall<XMLGregorianCalendar> {
43 private ValueFactory vf;
44
45 private Class<? extends XMLGregorianCalendar> javaClass;
46
47 public XMLGregorianCalendarMarshall(ValueFactory vf)
48 throws DatatypeConfigurationException {
49 this.vf = vf;
50 DatatypeFactory factory = DatatypeFactory.newInstance();
51 javaClass = factory.newXMLGregorianCalendar().getClass();
52 }
53
54 public Class<? extends XMLGregorianCalendar> getJavaClass() {
55 return javaClass;
56 }
57
58 public URI getDatatype() {
59 return XMLSchema.DATETIME;
60 }
61
62 public void setDatatype(URI datatype) {
63 if (datatype.equals(XMLSchema.DATETIME))
64 return;
65 if (datatype.equals(XMLSchema.DATE))
66 return;
67 if (datatype.equals(XMLSchema.TIME))
68 return;
69 if (datatype.equals(XMLSchema.GYEARMONTH))
70 return;
71 if (datatype.equals(XMLSchema.GMONTHDAY))
72 return;
73 if (datatype.equals(XMLSchema.GYEAR))
74 return;
75 if (datatype.equals(XMLSchema.GMONTH))
76 return;
77 if (datatype.equals(XMLSchema.GDAY))
78 return;
79 throw new IllegalArgumentException(datatype.toString());
80 }
81
82 public XMLGregorianCalendar deserialize(Literal literal) {
83 return literal.calendarValue();
84 }
85
86 public Literal serialize(XMLGregorianCalendar object) {
87 return vf.createLiteral(object);
88 }
89 }