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.Node;
07: import org.ontoware.rdf2go.model.node.PlainLiteral;
08: import org.ontoware.rdf2go.model.node.URI;
09: import org.ontoware.rdf2go.model.node.impl.URIImpl;
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 UriConverter implements INodeConverter<URI> {
15:
16: public URI toJava(Node node) {
17:
18: if (node == null)
19: return null;
20:
21: if (node instanceof URI) {
22: return node.asURI();
23: }
24:
25: if (node instanceof PlainLiteral) {
26: return new URIImpl(node.asLiteral().getValue());
27: }
28:
29: if (node instanceof LanguageTagLiteral) {
30: throw new RDFDataException(
31: "Cannot convert a language tagged literal to a URI - it makes no sense");
32: }
33:
34: if (node instanceof DatatypeLiteral) {
35: URI datatype = node.asDatatypeLiteral().getDatatype();
36: if (datatype.equals(XSD._anyURI)) {
37: return new URIImpl(node.asDatatypeLiteral().getValue());
38: } else {
39: throw new RDFDataException(
40: "Cannot convert from datatype " + datatype
41: + " to URI");
42: }
43: }
44:
45: throw new RDFDataException("Cannot convert from "
46: + node.getClass() + " to URI");
47:
48: }
49:
50: public Node toNode(Model model, Object javaValue) {
51: return (URI) javaValue;
52: }
53:
54: }
|