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