package org.mitre.provenance.plusobject; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import org.mitre.provenance.PLUSException; import org.mitre.provenance.plusobject.json.JSONConverter; import org.mitre.provenance.plusobject.prov.PROVConverter; import org.openprovenance.prov.model.Document; /** * An object that takes provenance collections, and knows how to serialize them in a number of different ways. * @author moxious */ public class PLUSSerializer { public enum Format { D3_JSON, PROV_XML, PROV_RDF, PROV_TTL }; public PLUSSerializer() { ; } /** * Serialize the provided collection in the specified format. * @param col * @param fmt * @return * @throws IOException * @throws PLUSException */ public String serialize(ProvenanceCollection col, Format fmt) throws IOException, PLUSException { Document doc = null; if(fmt == Format.PROV_XML || fmt == Format.PROV_RDF || fmt == Format.PROV_TTL) { doc = new PROVConverter().provenanceCollectionToPROV(col); } switch(fmt) { case PROV_XML: return PROVConverter.consume(PROVConverter.formatAs(PROVConverter.Format.XML, doc)); case PROV_RDF: return PROVConverter.consume(PROVConverter.formatAs(PROVConverter.Format.RDF, doc)); case PROV_TTL: return PROVConverter.consume(PROVConverter.formatAs(PROVConverter.Format.TTL, doc)); case D3_JSON: default: return JSONConverter.provenanceCollectionToD3Json(col); } } }