public RyaType(final URI dataType, final String data) { setDataType(dataType); setData(data); }
@Override public void setData(String data) { super.setData(data); validate(data); }
@Override public void readFields(DataInput dataInput) throws IOException { ValueFactoryImpl vfi = new ValueFactoryImpl(); String data = dataInput.readLine(); String dataTypeString = dataInput.readLine(); URI dataType = vfi.createURI(dataTypeString); ryatype.setData(data); ryatype.setDataType(dataType); }
@Override public void setData(String data) { super.setData(data); validate(data); }
@Override public RyaType deserialize(final byte[] bytes) throws RyaTypeResolverException { if (!deserializable(bytes)) { throw new RyaTypeResolverException("Bytes not deserializable"); } final RyaType rt = newInstance(); rt.setDataType(getRyaDataType()); final String data = new String(bytes, 0, bytes.length - 2, StandardCharsets.UTF_8); rt.setData(deserializeData(data)); return rt; }
@Override public RyaType deserialize(final byte[] bytes) throws RyaTypeResolverException { if (!deserializable(bytes)) { throw new RyaTypeResolverException("Bytes not deserializable"); } final RyaType rt = newInstance(); final int length = bytes.length; final int indexOfType = Bytes.indexOf(bytes, TYPE_DELIM_BYTE); if (indexOfType < 1) { throw new RyaTypeResolverException("Not a datatype literal"); } final String label = deserializeData(new String(bytes, 0, indexOfType, StandardCharsets.UTF_8)); rt.setDataType(new URIImpl(new String(bytes, indexOfType + 1, (length - indexOfType) - 3, StandardCharsets.UTF_8))); rt.setData(label); return rt; } }
@Override public void readFields(final DataInput dataInput) throws IOException { final SimpleValueFactory vfi = SimpleValueFactory.getInstance(); final String data = dataInput.readLine(); final String dataTypeString = dataInput.readLine(); final String language = dataInput.readLine(); final IRI dataType = vfi.createIRI(dataTypeString); final String validatedLanguage = LiteralLanguageUtils.validateLanguage(language, dataType); ryatype.setData(data); ryatype.setDataType(dataType); ryatype.setLanguage(validatedLanguage); }
@Override public RyaType deserialize(final byte[] bytes) throws RyaTypeResolverException { if (!deserializable(bytes)) { throw new RyaTypeResolverException("Bytes not deserializable"); } final RyaType rt = newInstance(); rt.setDataType(getRyaDataType()); String data = new String(bytes, 0, bytes.length - 2, StandardCharsets.UTF_8); if (RDF.LANGSTRING.equals(rt.getDataType())) { final int langDelimiterPos = data.lastIndexOf(LiteralLanguageUtils.LANGUAGE_DELIMITER); final String parsedData = data.substring(0, langDelimiterPos); final String language = data.substring(langDelimiterPos + 1, data.length()); if (language != null && Literals.isValidLanguageTag(language)) { rt.setLanguage(language); } else { rt.setLanguage(LiteralLanguageUtils.UNDETERMINED_LANGUAGE); } data = parsedData; } rt.setData(deserializeData(data)); return rt; }
@Override public RyaType deserialize(final byte[] bytes) throws RyaTypeResolverException { if (!deserializable(bytes)) { throw new RyaTypeResolverException("Bytes not deserializable"); } final RyaType rt = newInstance(); final int length = bytes.length; final int indexOfType = Bytes.indexOf(bytes, TYPE_DELIM_BYTE); if (indexOfType < 1) { throw new RyaTypeResolverException("Not a datatype literal"); } String data = deserializeData(new String(bytes, 0, indexOfType, StandardCharsets.UTF_8)); rt.setDataType(SimpleValueFactory.getInstance().createIRI(new String(bytes, indexOfType + 1, (length - indexOfType) - 3, StandardCharsets.UTF_8))); if (RDF.LANGSTRING.equals(rt.getDataType())) { final int langDelimiterPos = data.lastIndexOf(LiteralLanguageUtils.LANGUAGE_DELIMITER); final String parsedData = data.substring(0, langDelimiterPos); final String language = data.substring(langDelimiterPos + 1, data.length()); if (language != null && Literals.isValidLanguageTag(language)) { rt.setLanguage(language); } else { rt.setLanguage(LiteralLanguageUtils.UNDETERMINED_LANGUAGE); } data = parsedData; } rt.setData(data); return rt; } }