package net.jaekl.cfb.analyze;
+// Copyright (C) 2015 Christian Jaekl
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Date;
+
+import net.jaekl.cfb.xml.BugCollection;
+import net.jaekl.qd.xml.ParseErrorHandler;
+import net.jaekl.qd.xml.ParseHandler;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
public class Analysis {
+ long m_id;
+ BugCollection m_bugCollection;
+ String m_projectName;
+ String m_buildNumber;
+ long m_start; // Date.getTime() when analysis was started
+ long m_end;
+
+ public Analysis(String projectName, String buildNumber) {
+ m_id = (-1);
+ m_bugCollection = null;
+ m_projectName = projectName;
+ m_buildNumber = buildNumber;
+ m_start = new Date().getTime();
+ m_end = 0;
+ }
+
+ public BugCollection getBugCollection() { return m_bugCollection; }
+ public long getId() { return m_id; }
+ public String getProjectName() { return m_projectName; }
+ public String getBuildNumber() { return m_buildNumber; }
+ public Date getStart() { return new Date(m_start); }
+ public Date getEnd() { return (0 == m_end ? null : new Date(m_end)); } // the end time (when FindBugs was done analyzing)
+ public void setBugCollection(BugCollection bugs) { m_bugCollection = bugs; }
+ public void setId(long id) { m_id = id; }
+ public void setStart(Date start) { m_start = start.getTime(); }
+ public void setEnd(Date date) { m_end = date.getTime(); }
+
+ public void parse(InputSource xml) throws FileNotFoundException, IOException, SAXException
+ {
+ m_bugCollection = new BugCollection();
+
+ XMLReader reader = XMLReaderFactory.createXMLReader();
+ ParseHandler ph = new ParseHandler(m_bugCollection);
+ ParseErrorHandler peh = new ParseErrorHandler();
+ reader.setContentHandler(ph);
+ reader.setErrorHandler(peh);
+ reader.parse(xml);
+ }
+
+
+ public void dump(PrintWriter pw)
+ {
+ if (null != m_bugCollection) {
+ m_bugCollection.dump(pw, 2);
+ }
+ }
}