diff --git a/azkaban-common/src/main/java/azkaban/executor/mail/DefaultMailCreator.java b/azkaban-common/src/main/java/azkaban/executor/mail/DefaultMailCreator.java
index 47e2ac9..c58d774 100644
--- a/azkaban-common/src/main/java/azkaban/executor/mail/DefaultMailCreator.java
+++ b/azkaban-common/src/main/java/azkaban/executor/mail/DefaultMailCreator.java
@@ -16,6 +16,9 @@
package azkaban.executor.mail;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -32,6 +35,9 @@ public class DefaultMailCreator implements MailCreator {
new HashMap<String, MailCreator>();
private static MailCreator defaultCreator;
+ private static final DateFormat DATE_FORMATTER = new SimpleDateFormat(
+ "yyyy/MM/dd HH:mm:ss z");
+
public static void registerCreator(String name, MailCreator creator) {
registeredCreators.put(name, creator);
}
@@ -80,10 +86,10 @@ public class DefaultMailCreator implements MailCreator {
}
message.println("<table>");
- message.println("<tr><td>Start Time</td><td>" + flow.getStartTime()
- + "</td></tr>");
- message.println("<tr><td>End Time</td><td>" + flow.getEndTime()
- + "</td></tr>");
+ message.println("<tr><td>Start Time</td><td>"
+ + convertMSToString(flow.getStartTime()) + "</td></tr>");
+ message.println("<tr><td>End Time</td><td>"
+ + convertMSToString(flow.getEndTime()) + "</td></tr>");
message.println("<tr><td>Duration</td><td>"
+ Utils.formatDuration(flow.getStartTime(), flow.getEndTime())
+ "</td></tr>");
@@ -131,10 +137,10 @@ public class DefaultMailCreator implements MailCreator {
+ "' of flow '" + flow.getFlowId() + "' has failed on " + azkabanName
+ "</h2>");
message.println("<table>");
- message.println("<tr><td>Start Time</td><td>" + flow.getStartTime()
- + "</td></tr>");
- message.println("<tr><td>End Time</td><td>" + flow.getEndTime()
- + "</td></tr>");
+ message.println("<tr><td>Start Time</td><td>"
+ + convertMSToString(flow.getStartTime()) + "</td></tr>");
+ message.println("<tr><td>End Time</td><td>"
+ + convertMSToString(flow.getEndTime()) + "</td></tr>");
message.println("<tr><td>Duration</td><td>"
+ Utils.formatDuration(flow.getStartTime(), flow.getEndTime())
+ "</td></tr>");
@@ -184,10 +190,10 @@ public class DefaultMailCreator implements MailCreator {
+ "' of flow '" + flow.getFlowId() + "' has succeeded on "
+ azkabanName + "</h2>");
message.println("<table>");
- message.println("<tr><td>Start Time</td><td>" + flow.getStartTime()
- + "</td></tr>");
- message.println("<tr><td>End Time</td><td>" + flow.getEndTime()
- + "</td></tr>");
+ message.println("<tr><td>Start Time</td><td>"
+ + convertMSToString(flow.getStartTime()) + "</td></tr>");
+ message.println("<tr><td>End Time</td><td>"
+ + convertMSToString(flow.getEndTime()) + "</td></tr>");
message.println("<tr><td>Duration</td><td>"
+ Utils.formatDuration(flow.getStartTime(), flow.getEndTime())
+ "</td></tr>");
@@ -202,4 +208,12 @@ public class DefaultMailCreator implements MailCreator {
}
return false;
}
+
+ private static String convertMSToString(long timeInMS) {
+ if (timeInMS < 0) {
+ return "N/A";
+ } else {
+ return DATE_FORMATTER.format(new Date(timeInMS));
+ }
+ }
}