package hudson.plugins.PerfPublisher; import hudson.plugins.PerfPublisher.Report.Report; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.net.URI; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.io.IOUtils; import org.xml.sax.SAXException; /** * Reads all the generated reports * * @author Georges Bossert * */ public class ReportReader { private Report report; private transient final PrintStream hudsonConsoleWriter; /** * Construct a result reader for PerfPublisher out log files. * * @param is * The input stream giving the out log file. * @param logger * Logger to print messages to. * @throws PerfPublisherParseException * Thrown if the parsing fails. */ public ReportReader(URI is, PrintStream logger, Map<String, String> metrics) { hudsonConsoleWriter = logger; parse(is, metrics.values()); } private void parse(URI is, Collection<String> metrics) { if (is == null) { throw new PerfPublisherParseException("Empty input stream"); } if (report == null) { report = new Report(); } try { ParserXml parseur = new ParserXml(is, metrics); parseur.parse(); report = parseur.result(); } catch (IOException e) { String errMsg = "[PerfPublisher] Problem parsing Performance report file"; hudsonConsoleWriter.println(errMsg + ": " + e.getMessage()); e.printStackTrace(hudsonConsoleWriter); throw new PerfPublisherParseException(errMsg, e); } catch (ParserConfigurationException e) { String errMsg = "[PerfPublisher] Problem parsing Performance report file"; hudsonConsoleWriter.println(errMsg + ": " + e.getMessage()); e.printStackTrace(hudsonConsoleWriter); throw new PerfPublisherParseException(errMsg, e); } catch (SAXException e) { String errMsg = "[PerfPublisher] Problem parsing Performance report file"; hudsonConsoleWriter.println(errMsg + ": " + e.getMessage()); e.printStackTrace(hudsonConsoleWriter); throw new PerfPublisherParseException(errMsg, e); } } /** * Get the reports */ public Report getReport(){ return report; } }