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 ShortConverter implements INodeConverter<Short> {
15:
16: public Short toJava(Node node) {
17: return node2Short(node);
18: }
19:
20: public static Short node2Short(Node node) {
21: if (node == null)
22: return null;
23:
24: if (node instanceof PlainLiteral) {
25: return toShort(node.asLiteral());
26: }
27:
28: if (node instanceof LanguageTagLiteral) {
29: throw new RDFDataException(
30: "Cannot convert a language tagged literal to an Short - it makes no sense");
31: }
32:
33: if (node instanceof DatatypeLiteral) {
34: URI datatype = node.asDatatypeLiteral().getDatatype();
35: if (datatype.equals(XSD._short)) {
36: return toShort(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 Short");
46: }
47:
48: public static Short toShort(Literal literal) {
49: return new Short(Short.parseShort(literal.getValue()));
50: }
51:
52: public Node toNode(Model model, Object javaValue) {
53: return model.createDatatypeLiteral("" + (Short) javaValue,
54: XSD._short);
55: }
56:
57: }
|