View Javadoc

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  }