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.vocabulary.XSD;
10: import org.ontoware.rdfreactor.runtime.INodeConverter;
11: import org.ontoware.rdfreactor.runtime.RDFDataException;
12:
13: public class StringConverter implements INodeConverter<String> {
14:
15: public String toJava(Node node) {
16: return node2string(node);
17: }
18:
19: public static String node2string(Node node) {
20: if (node == null)
21: return null;
22:
23: if (node instanceof PlainLiteral) {
24: return node.asLiteral().getValue();
25: }
26:
27: if (node instanceof LanguageTagLiteral) {
28: // log.debug("Ignoring language");
29: return node.asLiteral().getValue();
30: }
31:
32: if (node instanceof DatatypeLiteral) {
33: URI datatype = node.asDatatypeLiteral().getDatatype();
34:
35: if (datatype.equals(XSD._string)
36: || datatype.equals(XSD._normalizedString)) {
37: return 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 Float");
47: }
48:
49: public Node toNode(Model model, Object javaValue) {
50: // representing all strings as XSD._string would also be possible - but
51: // why make things more complicated?
52: return model.createPlainLiteral((String) javaValue);
53: }
54:
55: }
|