01: package org.ontoware.rdfreactor.runtime.converter;
02:
03: import org.ontoware.rdf2go.model.Model;
04: import org.ontoware.rdf2go.model.node.DatatypeLiteral;
05: import org.ontoware.rdf2go.model.node.LanguageTagLiteral;
06: import org.ontoware.rdf2go.model.node.Literal;
07: import org.ontoware.rdf2go.model.node.Node;
08: import org.ontoware.rdf2go.model.node.PlainLiteral;
09: import org.ontoware.rdf2go.model.node.URI;
10: import org.ontoware.rdf2go.vocabulary.XSD;
11: import org.ontoware.rdfreactor.runtime.INodeConverter;
12: import org.ontoware.rdfreactor.runtime.RDFDataException;
13:
14: public class ByteConverter implements INodeConverter<Byte> {
15:
16: public Byte toJava(Node node) {
17: return node2Byte(node);
18: }
19:
20: public static Byte node2Byte(Node node) {
21: if (node == null)
22: return null;
23:
24: if (node instanceof PlainLiteral) {
25: return toByte(node.asLiteral());
26: }
27:
28: if (node instanceof LanguageTagLiteral) {
29: throw new RDFDataException(
30: "Cannot convert a language tagged literal to an Byte - it makes no sense");
31: }
32:
33: if (node instanceof DatatypeLiteral) {
34: URI datatype = node.asDatatypeLiteral().getDatatype();
35: if (datatype.equals(XSD._byte)) {
36: return toByte(node.asDatatypeLiteral());
37: } else {
38: throw new RDFDataException(
39: "Cannot convert from datatype " + datatype
40: + " to URI");
41: }
42: }
43:
44: throw new RDFDataException("Cannot convert from "
45: + node.getClass() + " to Byte");
46: }
47:
48: public static Byte toByte(Literal literal) {
49: return new Byte(Byte.parseByte(literal.getValue()));
50: }
51:
52: public Node toNode(Model model, Object javaValue) {
53: return model.createDatatypeLiteral("" + (Byte) javaValue,
54: XSD._byte);
55: }
56:
57: }
|