From 27f56776ca2b56e95c73480f93a2d4ee1c51bf1a Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 3 Jun 2015 20:45:15 +0000
Subject: [PATCH] Console: Fix display of n/a for events that never happened on
 floodfill profiles

---
 .../router/web/ProfileOrganizerRenderer.java  | 32 +++++++++----------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
index 1a54612462..ef70b170ae 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
@@ -227,28 +227,19 @@ class ProfileOrganizerRenderer {
             else
                 buf.append("<td>&nbsp;</td>");
             buf.append("<td align=\"right\">").append(num(prof.getIntegrationValue())).append("</td>");
-            long time;
-            time = now - prof.getLastHeardAbout();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-            time = now - prof.getLastHeardFrom();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-            time = now - prof.getLastSendSuccessful();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-            time = now - prof.getLastSendFailed();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastHeardAbout())).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastHeardFrom())).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastSendSuccessful())).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastSendFailed())).append("</td>");
             buf.append("<td align=\"right\">").append(avg(prof, 10*60*1000l, ra)).append("</td>");
             buf.append("<td align=\"right\">").append(avg(prof, 60*60*1000l, ra)).append("</td>");
             buf.append("<td align=\"right\">").append(avg(prof, 24*60*60*1000l, ra)).append("</td>");
             DBHistory dbh = prof.getDBHistory();
             if (dbh != null) {
-                time = now - dbh.getLastLookupSuccessful();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-                time = now - dbh.getLastLookupFailed();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-                time = now - dbh.getLastStoreSuccessful();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-                time = now - dbh.getLastStoreFailed();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastLookupSuccessful())).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastLookupFailed())).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastStoreSuccessful())).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastStoreFailed())).append("</td>");
                 buf.append("<td align=\"right\">").append(davg(dbh, 60*60*1000l, ra)).append("</td>");
                 buf.append("<td align=\"right\">").append(davg(dbh, 24*60*60*1000l, ra)).append("</td>");
             } else {
@@ -369,6 +360,13 @@ class ProfileOrganizerRenderer {
             return ((int) avg) + "%";
     }
 
+    /** @since 0.9.21 */
+    private String formatInterval(long now, long then) {
+        if (then <= 0)
+            return _(NA);
+        return DataHelper.formatDuration2(now - then);
+    }
+
     /** translate a string */
     private String _(String s) {
         return Messages.getString(s, _context);
-- 
GitLab