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