package eu.scape_project.planning.utils;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import eu.scape_project.planning.model.DigitalObject;
public class CharacterisationReportGenerator {
private static Logger log = LoggerFactory.getLogger(CharacterisationReportGenerator.class);
public String generateHTMLReport(final DigitalObject object) {
StringWriter writer = new StringWriter();
try {
appendFITSReport(object, writer);
} catch (Exception e) {
log.error("Failed to generate FITS report. " + e);
}
return writer.toString();
}
private void appendFITSReport(final DigitalObject object, final Writer writer) throws TransformerException, UnsupportedEncodingException {
if (StringUtils.isEmpty(object.getFitsXMLString())) {
return;
}
generateReportFromXML(new StringReader(object.getFitsXMLString()), new InputStreamReader(Thread.currentThread()
.getContextClassLoader().getResourceAsStream("fits/fits-to-html.xsl"), "UTF8"), writer);
}
public void generateReportFromXML(final Reader xmlInput, final Reader xslInput, final Writer writer)
throws TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xslInput));
transformer.transform(new StreamSource(xmlInput), new StreamResult(writer));
}
}