package org.openprovenance.prov.notation; import java.io.Writer; import java.util.List; import javax.xml.datatype.XMLGregorianCalendar; import org.openprovenance.prov.model.Attribute; import org.openprovenance.prov.model.QualifiedName; /* FIXME: this does not work, since methods define here do not override those of NotationConstructor. */ public class HTMLConstructor extends NotationConstructor { public HTMLConstructor(Writer writer) { super(writer); } public String keyword(String s) { return "<span class='prov-keyword'>" + s + "</span>"; } public String symbol(String s) { return "<span class='prov-symbol'>" + s + "</span>"; } public String showprefix(String s) { return "<span class='prov-prefix " + "prov-prefix-"+ s + "'>" + s + "</span>"; } public String showlocal(String s, String prefix) { return "<span class='prov-local " + "prov-local-"+ s + " prov-local-prefix-" + prefix + "'>" + s + "</span>"; } public String breakline() { return "<br>\n"; } public String showuri(String s) { String stripped=s.substring(1,s.length()-1); return "<" + "<a href='" + stripped + "'>" + stripped + "</a>" + ">"; } public String optionalTime(Object time) { return ((time==null)? "" : (", " + time)); } public Object optional2(Object str) { return ((str==null)? "" : str); } public Object optional(Object str) { return ((str==null)? "-" : str); } public Object convertId(String id) { if (id==null) return null; int index=id.indexOf(':'); String prefix=id.substring(0,index); String local=id.substring(index+1,id.length()); return "<span class='prov-id'>" + showprefix(prefix) + ":" + showlocal(local,prefix) + "</span>"; } public Object convertAttribute(Object name, Object value) { return "<span class='prov-attribute "+ name.toString().replace(':','-') + "'>" + name + "</span>" + symbol("=") + value; } public Object convertTypedLiteral(String datatype, Object value) { if ("xsd:QName".equals(datatype)) { //TODO: probably, never satisfied String val=(String)value; return "'" + convertId(val.substring(1, val.length() -1 )) + "'"; } else { if ("prov:QUALIFIED_NAME".equals(datatype)) { String val=(String)value; return "'" + val.substring(1, val.length() -1 ) + "'"; } else { return " <span class='prov-datatype'>" + value + "</span> " + symbol("%%") + " <span class='prov-datatype'>" + datatype + "</span>"; } } } public Object convertStart(String start) { return start; } public Object convertEnd(String end) { return end; } public Object convertString(String s) { return "<span class='prov-string'>" + s + "</span>"; } public Object convertInt(int i) { return i; } public String optionalId(Object id) { return ((id==null)? "" : (id + ";")); } public Object convertQualifiedName(String qualifedName) { return qualifedName; } public Object convertIRI(String iri) { return iri; } public Object newActivity(QualifiedName id, XMLGregorianCalendar startTime,XMLGregorianCalendar endTime, List<Attribute> aAttrs) { return "<span class='prov-expression'> " + super.newActivity(id,startTime,endTime,aAttrs) + "</span>"; } public Object newEntity(QualifiedName id, List<Attribute> attrs) { return "<span class='prov-expression'> " + super.newEntity(id,attrs) + "</span>"; } }