1 package gov.nasa.pds.tools.report;
2
3 import java.io.InputStream;
4 import java.io.OutputStream;
5
6 import javax.xml.transform.Result;
7 import javax.xml.transform.Source;
8 import javax.xml.transform.Transformer;
9 import javax.xml.transform.TransformerException;
10 import javax.xml.transform.TransformerFactory;
11 import javax.xml.transform.stream.StreamResult;
12 import javax.xml.transform.stream.StreamSource;
13
14 /***
15 * Class to generate a human-readable report from an XML log.
16 *
17 * @author mcayanan
18 *
19 */
20 public class Report {
21 private InputStream xml;
22 private String stylesheet;
23
24
25 /***
26 * Constructor
27 *
28 * @param xml A stream representation of the XML log to transform.
29 * @param stylesheet An xsl stylesheet file name.
30 */
31 public Report(InputStream xml, String stylesheet) {
32 this.xml = xml;
33 this.stylesheet = stylesheet;
34 }
35
36 /***
37 * Generates the human-readable report.
38 *
39 * @param output The stream where the human-readable report will be
40 * produced.
41 * @param level Specify the severity level and above to include in the
42 * report. Valid values are 'info', 'warning', and 'error'.
43 * @throws SeverityException For an invalid severity level.
44 * @throws TransformerException If there was an error producing the report.
45 */
46 public void generateReport(OutputStream output, String level)
47 throws TransformerException {
48 Source xmlSource = new StreamSource(this.xml);
49 Source xsltSource = new StreamSource(getClass().getResourceAsStream(this.stylesheet));
50 Result result = new StreamResult(output);
51 TransformerFactory factory = TransformerFactory.newInstance();
52 Transformer transformer = factory.newTransformer(xsltSource);
53 transformer.setParameter("level", level.toUpperCase());
54 transformer.transform(xmlSource, result);
55 }
56 }