public void decode(String rawValue, ValueSink consumer) { if(parent==null) { consumer.consumeRawValue(rawValue); } else { parent.decode(rawValue, consumer); } }
private static List<Datatype> classEncodings(Class<?> value) { Collection<Datatype> result = new PriorityQueue<Datatype>(10,new XSTComparator()); if(value!=null) { for(Datatype type:values()) { Class<?> rawClass = type.rawClass(); if(rawClass!=null && rawClass.isAssignableFrom(value)) { result.add(type); } } } return new ArrayList<Datatype>(result); }
public static Datatype matching(Class<?> clazz) { Datatype result = null; if(clazz!=null) { for(Datatype type:values()) { if(clazz.equals(type.clazz)) { return type; } } } return result; }
public static Datatype fromURI(URI uri) { Datatype result = null; if(uri!=null) { result=fromString(uri.toString()); } return result; }
public <T> TypedLiteral<T> newLiteral(T value) { if(value instanceof String) { return newLiteral(value,Datatype.STRING); } else { List<Datatype> types = Datatype.forValue(value); if(!types.isEmpty()) { return newLiteral(value,types.get(0)); } else { return newLiteral(value,Datatype.STRING); } } }
Class<?> rawClass() { Class<?> result=null; if(clazz!=null) { result=clazz; } else if(parent!=null) { result=parent.rawClass(); } return result; }
/** * @param uri * @return */ private static Datatype findXMLDataType(String uri) { Datatype xmlType=null; String localName=Namespace.XML_SCHEMA.localName(uri); for(Datatype value:values()) { if(value.localName.equals(localName)) { xmlType=value; break; } } return xmlType; }
public Literal<?> parseLiteral(org.openrdf.model.Literal literal) { org.openrdf.model.URI datatype = literal.getDatatype(); Literal<?> result; String label = literal.getLabel(); if(datatype==null) { String language = literal.getLanguage(); if(language!=null) { result=RDFModelDSL.literal(label,language); } else { result=RDFModelDSL.literal(label); } } else { String dataType = datatype.stringValue(); Datatype type=Datatype.fromString(dataType); if(type!=null) { result=RDFModelDSL.typedLiteral(boxTypedLiteral(type, label), dataType); } else { result=RDFModelDSL.typedLiteral(label,URI.create(dataType)); } } return result; }
public void checkForValue(Object value) { System.out.println(String.format("%s (%s) --> %s",value.getClass().isArray()?Arrays.asList((Object[])value):value,value.getClass(),Datatype.forValue(value))); }
private static void encodeXMLGregorianCalender(Datatype type, String rawValue, ValueSink consumer) { try { consumer.consumeXMLGregorianCalendar(DatatypeFactory.newInstance().newXMLGregorianCalendar(rawValue)); } catch (DatatypeConfigurationException e) { throw new IllegalStateException(String.format("Could not decode an xml gregorian calendar from raw value '%s' of type '%s'",rawValue,type.toURI()),e); } }
private Object boxTypedLiteral(Datatype type, String label) { AutoBoxingDataTypeConsumer consumer = new AutoBoxingDataTypeConsumer(); type.decode(label,consumer); return consumer.getValue(); }
private static void encodeDuration(Datatype type, String rawValue, ValueSink consumer) { try { consumer.consumeDuration(DatatypeFactory.newInstance().newDuration(rawValue)); } catch (DatatypeConfigurationException e) { throw new IllegalStateException(String.format("Could not decode a duration from raw value '%s' of type '%s'",rawValue,type.toURI()),e); } }
@Override public org.openrdf.model.Value visitTypedLiteral(TypedLiteral<?> node, org.openrdf.model.Value defaultResult) { URI type = node.getType().toURI(); return valueFactory.createLiteral(node.getValue().toString(),valueFactory.createURI(type.toString())); }
@Override public Value visitTypedLiteral(TypedLiteral<?> node, Value defaultResult) { return Literals.newTypedLiteral(serializable(node.getValue()),node.getType().toURI()); }