package com.mysema.rdfbean.model.io; import java.io.IOException; import java.util.Collections; import java.util.HashMap; import java.util.Map; import com.mysema.rdfbean.Namespaces; import com.mysema.rdfbean.model.UID; /** * @author tiwe * */ public class TurtleStringWriter extends TurtleWriter { private final Map<String, String> prefixes = new HashMap<String, String>(); private final StringBuilder prefixesString = new StringBuilder(); public TurtleStringWriter() { this(false); } public TurtleStringWriter(boolean blankNodeAsURI) { super(new StringBuilder(), Collections.<String, String> emptyMap(), blankNodeAsURI); } @Override protected void appendPrefixed(UID uid) throws IOException { String prefix = prefixes.get(uid.ns()); if (prefix == null) { prefix = Namespaces.DEFAULT.get(uid.ns()); if (prefix == null) { prefix = "ns" + (prefixes.size() + 1); } prefixes.put(uid.ns(), prefix); prefixesString.append("@prefix " + prefix + ": <" + NTriplesUtil.escapeString(uid.ns()) + "> .\n"); } appendable.append(prefix).append(":").append(uid.ln()); } @Override public String toString() { ((StringBuilder) appendable).insert(0, prefixesString.toString()); prefixesString.setLength(0); return appendable.toString(); } }