(Finally) reach the point where we have some useful, if basic, functionality.
[cfb.git] / prod / net / jaekl / cfb / analyze / Delta.java
index e2853e0b445cd6294f2c9667f9fb94d0630681f4..51971e06c7589a01336a4bfce8b8ba0785f9a04b 100644 (file)
@@ -1,5 +1,6 @@
 package net.jaekl.cfb.analyze;
 
+import java.io.PrintWriter;
 import java.util.HashSet;
 
 import net.jaekl.cfb.xml.BugInstance;
@@ -29,6 +30,29 @@ public class Delta {
        public BugInstance[] getNew() { return m_new.toArray(new BugInstance[m_new.size()]); }
        public int getNumNew() { return m_new.size(); }
        
+       public void dump(PrintWriter pw) {
+               pw.println("=========================");
+               pw.println("  NEW BUGS (" + m_new.size() + ")");
+               pw.println("-------------------------");
+               for (BugInstance bug : m_new) {
+                       bug.dump(pw, 2);
+               }
+               
+               pw.println("=========================");
+               pw.println("  FIXED BUGS (" + m_fixed.size() + ")");
+               pw.println("-------------------------");
+               for (BugInstance bug : m_fixed) {
+                       bug.dump(pw, 2);
+               }
+               
+               pw.println("=========================");
+               pw.println("  OLD BUGS (" + m_common.size() + ")");
+               pw.println("-------------------------");
+               for (BugInstance bug : m_common) {
+                       bug.dump(pw, 2);
+               }
+       }
+       
        void computeDelta(Analysis before, Analysis after)
        {
                m_fixed.clear();
@@ -37,7 +61,9 @@ public class Delta {
                
                HashSet<BugInstance> beforeBugs = new HashSet<BugInstance>();
                
-               beforeBugs.addAll(before.getBugCollection().getBugs());
+               if (null != before) {
+                       beforeBugs.addAll(before.getBugCollection().getBugs());
+               }
                
                for (BugInstance bug : after.getBugCollection().getBugs()) {
                        if (beforeBugs.contains(bug)) {
@@ -48,6 +74,10 @@ public class Delta {
                        }
                }
                
+               if (null == before) {
+                       return;
+               }
+               
                for (BugInstance bug : before.getBugCollection().getBugs()) {
                        if (! m_common.contains(bug)) {
                                m_fixed.add(bug);