Address some edge cases related to bootstrapping a fresh system.
[cfb.git] / prod / net / jaekl / cfb / analyze / Notifier.java
index bf92fc107368607e4a1cccfc07b3045051fe2684..7fdcfd31f1ccaff549b34e1fcce0d6ea2bf24346 100644 (file)
@@ -6,6 +6,7 @@ import java.util.ArrayList;
 
 import net.jaekl.cfb.CfbBundle;
 import net.jaekl.cfb.Config;
+import net.jaekl.cfb.store.Run;
 import net.jaekl.qd.util.MailException;
 import net.jaekl.qd.util.MimePart;
 import net.jaekl.qd.util.SendMail;
@@ -27,10 +28,31 @@ public class Notifier {
                        sendEmail(pw, report);
                }
        }
+
+       // --- end of public interface ---
        
-       void sendEmail(PrintWriter pw, HtmlReport report) {
-               SendMail sendMail = new SendMail();
+       String constructSubject(HtmlReport report) {
+               String earlier;
+               Run earlierRun = report.getDelta().getEarlier();
+               if (null == earlierRun) {
+                       earlier = m_bundle.get(CfbBundle.NO_EARLIER_RUN);
+               }
+               else {
+                       earlier = report.getDelta().getEarlier().constructVersionText(m_bundle);
+               }
                
+               String later = report.getDelta().getLater().constructVersionText(m_bundle);
+
+               String subject = m_bundle.get(CfbBundle.CFB_MAIL_SUBJECT, earlier, later);
+               return subject;
+       }
+
+       SendMail createSendMail() {
+               return new SendMail();
+       }
+       
+       void sendEmail(PrintWriter pw, HtmlReport report) {
+               SendMail sendMail = createSendMail();
                sendMail.setSmtpHost(m_config.getMailSmtpHost());
                
                ArrayList<String> recipients = m_config.getNotify();
@@ -41,11 +63,8 @@ public class Notifier {
                PrintWriter mailWriter = null;
                
                try {
-                       String earlier = report.getDelta().getEarlier().constructVersionText(m_bundle);
-                       String later   = report.getDelta().getLater().constructVersionText(m_bundle);
-
+                       sendMail.setSubject(constructSubject(report));
                        sendMail.setFrom(m_config.getMailFrom());
-                       sendMail.setSubject(m_bundle.get(CfbBundle.CFB_MAIL_SUBJECT, earlier, later));
                        
                        for (String recipient : recipients) {
                                sendMail.addTo(recipient);