Avoid NullPointerException in HtmlReport.writeSummary().
[cfb.git] / prod / net / jaekl / cfb / analyze / HtmlReport.java
index 4482f0a5611b4c194e3c58834930809ce34f4e0f..03484df730b562eb6bf3e5f28592a6d8ad908a1f 100644 (file)
@@ -1,45 +1,49 @@
 package net.jaekl.cfb.analyze;
 
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
 
 import net.jaekl.cfb.CfbBundle;
 import net.jaekl.cfb.store.Location;
+import net.jaekl.cfb.util.Command;
 import net.jaekl.cfb.xml.BugInstance;
 import net.jaekl.cfb.xml.messages.BugPattern;
 import net.jaekl.cfb.xml.messages.MessageCollection;
 
 public class HtmlReport {
        CfbBundle m_bundle;
+       Delta m_delta;
        MessageCollection m_msgColl;
        
-       public HtmlReport(CfbBundle bundle, MessageCollection msgColl)
+       public HtmlReport(CfbBundle bundle, MessageCollection msgColl, Delta delta)
        {
                m_bundle = bundle;
+               m_delta = delta;
                m_msgColl = msgColl;
        }
        
-       public void write(File output, Delta delta) throws IOException
+       public Delta getDelta() { return m_delta; }
+       
+       public void write(File output) throws IOException
        {
-               try ( FileOutputStream fos = new FileOutputStream(output);
-                         PrintWriter pw = new PrintWriter(fos); )
+               try ( PrintWriter pw = new PrintWriter(output, Command.UTF_8) )
                {
-                       write(pw, delta);
+                       write(pw);
+                       pw.flush();
                }
        }
        
-       void write(PrintWriter pw, Delta delta
+       void write(PrintWriter pw) 
        {
-               startPage(pw, delta);
+               startPage(pw);
        }
        
-       void startPage(PrintWriter pw, Delta delta
+       void startPage(PrintWriter pw) 
        {
-               writeHeader(pw, delta);
+               writeHeader(pw);
                pw.println("  <BODY>");
-               writeBody(pw, delta);
+               writeBody(pw);
                pw.println("  </BODY>");
                pw.println("</HTML>");
        }
@@ -48,12 +52,12 @@ public class HtmlReport {
                return m_bundle.get(key, arguments);
        }
        
-       void writeBody(PrintWriter pw, Delta delta)
+       void writeBody(PrintWriter pw)
        {
-               writeSummary(pw, delta);
-               writeBugs(pw, CfbBundle.NEW_BUGS,   delta.getNew());
-               writeBugs(pw, CfbBundle.FIXED_BUGS, delta.getFixed());
-               writeBugs(pw, CfbBundle.OLD_BUGS,   delta.getCommon());
+               writeSummary(pw);
+               writeBugs(pw, CfbBundle.NEW_BUGS,   m_delta.getNew());
+               writeBugs(pw, CfbBundle.FIXED_BUGS, m_delta.getFixed());
+               writeBugs(pw, CfbBundle.OLD_BUGS,   m_delta.getCommon());
        }
        
        void writeBugLocations(PrintWriter pw, BugInstance bug)
@@ -117,7 +121,7 @@ public class HtmlReport {
                }
        }
        
-       void writeHeader(PrintWriter pw, Delta delta)
+       void writeHeader(PrintWriter pw)
        {
                String title = trans(CfbBundle.CFB_REPORT);
                
@@ -136,33 +140,38 @@ public class HtmlReport {
                pw.println("    </P>");
        }
        
-       void writeSummary(PrintWriter pw, Delta delta)
+       void writeSummary(PrintWriter pw)
        {
                final String SEP = ":&nbsp;&nbsp;";
                
+               String earlierVersion = "";
+               if (null == m_delta.getEarlier()) {
+                       earlierVersion = m_delta.getEarlier().constructVersionText(m_bundle);
+               }
+               
                writeSectionHeading(pw, trans(CfbBundle.CFB_REPORT));
                pw.println("    <P>");
                pw.println("      <TABLE>");
                pw.println("        <TR>");
                pw.println("          <TD CLASS=\"CategoryName\">" + trans(CfbBundle.NEW_VERSION) + SEP + "</TD>");
-               pw.println("          <TD CLASS=\"CategoryValue\">" + delta.getLater().constructVersionText(m_bundle) + "</TD>");
+               pw.println("          <TD CLASS=\"CategoryValue\">" + m_delta.getLater().constructVersionText(m_bundle) + "</TD>");
                pw.println("        </TR>");
                pw.println("        <TR>");
                pw.println("          <TD CLASS=\"CategoryName\">" + trans(CfbBundle.OLD_VERSION) + SEP + "</TD>");
-               pw.println("          <TD CLASS=\"CategoryValue\">" + delta.getEarlier().constructVersionText(m_bundle) + "</TD>");
+               pw.println("          <TD CLASS=\"CategoryValue\">" + earlierVersion + "</TD>");
                pw.println("        </TR>");
                pw.println("        <TR><TD>&nbsp;</TD></TR>");
                pw.println("        <TR>");
                pw.println("          <TD CLASS=\"CategoryName\">" + trans(CfbBundle.NEW_BUGS) + SEP + "</TD>");
-               pw.println("          <TD CLASS=\"CategoryValue\">" + trans(CfbBundle.NUM_BUGS, delta.getNumNew()) + "</TD>");
+               pw.println("          <TD CLASS=\"CategoryValue\">" + trans(CfbBundle.NUM_BUGS, m_delta.getNumNew()) + "</TD>");
                pw.println("        </TR>");
                pw.println("        <TR>");
                pw.println("          <TD CLASS=\"CategoryName\">" + trans(CfbBundle.FIXED_BUGS) + SEP + "</TD>");
-               pw.println("          <TD CLASS=\"CategoryValue\">" + trans(CfbBundle.NUM_BUGS, delta.getNumFixed()) + "</TD>");
+               pw.println("          <TD CLASS=\"CategoryValue\">" + trans(CfbBundle.NUM_BUGS, m_delta.getNumFixed()) + "</TD>");
                pw.println("        </TR>");
                pw.println("        <TR>");
                pw.println("          <TD CLASS=\"CategoryName\">" + trans(CfbBundle.OLD_BUGS) + SEP + "</TD>");
-               pw.println("          <TD CLASS=\"CategoryValue\">" + trans(CfbBundle.NUM_BUGS_OLD, delta.getNumCommon()) + "</TD>");
+               pw.println("          <TD CLASS=\"CategoryValue\">" + trans(CfbBundle.NUM_BUGS_OLD, m_delta.getNumCommon()) + "</TD>");
                pw.println("        </TR>");
                pw.println("      </TABLE>");
                pw.println("    </P>");