From d479c4ae7d5bc2a7a6d2e7186d8101568670fccd Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 2 Nov 2012 16:00:41 +0000
Subject: [PATCH]  * configstats: Fix group sorting, translate groups

---
 .../net/i2p/router/web/ConfigStatsHelper.java | 30 ++++++++++++++-----
 apps/routerconsole/jsp/configstats.jsp        |  2 +-
 2 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
index 61d4969330..b890f1bc66 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
@@ -1,12 +1,16 @@
 package net.i2p.router.web;
 
 import java.util.ArrayList;
+import java.text.Collator;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.SortedSet;
 import java.util.StringTokenizer;
+import java.util.TreeMap;
 
 import net.i2p.stat.FrequencyStat;
 import net.i2p.stat.Rate;
@@ -17,9 +21,9 @@ import net.i2p.util.Log;
 public class ConfigStatsHelper extends HelperBase {
     private Log _log;
     private String _filter;
-    private Set _filters;
+    private Set<String> _filters;
     /** list of names of stats which are remaining, ordered by nested groups */
-    private List _stats;
+    private List<String> _stats;
     private String _currentStatName;
     private String _currentGraphName;
     private String _currentStatDescription;
@@ -43,11 +47,11 @@ public class ConfigStatsHelper extends HelperBase {
         _log = _context.logManager().getLog(ConfigStatsHelper.class);
         
         _stats = new ArrayList();
-        Map groups = _context.statManager().getStatsByGroup();
-        for (Iterator iter = groups.values().iterator(); iter.hasNext(); ) {
-            Set stats = (Set)iter.next();
-            for (Iterator statIter = stats.iterator(); statIter.hasNext(); ) 
-                _stats.add(statIter.next());
+        Map<String, SortedSet<String>> unsorted = _context.statManager().getStatsByGroup();
+        Map<String, Set<String>> groups = new TreeMap(new AlphaComparator());
+        groups.putAll(unsorted);
+        for (Set<String> stats : groups.values()) {
+             _stats.addAll(stats);
         }
         _filter = _context.statManager().getStatFilter(); 
         if (_filter == null)
@@ -149,4 +153,16 @@ public class ConfigStatsHelper extends HelperBase {
     public boolean getIsFull() {
         return _context.getBooleanProperty(StatManager.PROP_STAT_FULL);
     }
+
+    /**
+     *  Translated sort
+     *  @since 0.9.4
+     */
+    private class AlphaComparator implements Comparator<String> {
+        public int compare(String lhs, String rhs) {
+            String lname = _(lhs);
+            String rname = _(rhs);
+            return Collator.getInstance().compare(lname, rname);
+        }
+    }
 }
diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp
index d6bd67c1e5..c57479b46e 100644
--- a/apps/routerconsole/jsp/configstats.jsp
+++ b/apps/routerconsole/jsp/configstats.jsp
@@ -97,7 +97,7 @@ Warning - Log with care, stat file grows without limit.<br>
       while (statshelper.groupRequired()) { %>
  <tr class="tablefooter">
      <td align="left" colspan="3" id=<%=statshelper.getCurrentGroupName()%>>
-     <b><%=statshelper.getCurrentGroupName()%></b>
+     <b><%=intl._(statshelper.getCurrentGroupName())%></b>
      (<a href="javascript:void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')"><%=intl._("toggle all")%></a>)
      </td></tr>
  <tr class="tablefooter">
-- 
GitLab