You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2008/03/07 17:16:28 UTC

svn commit: r634727 - in /commons/sandbox/monitoring/trunk/src/main: java/org/apache/commons/monitoring/reporting/ java/org/apache/commons/monitoring/reporting/web/ resources/

Author: nicolas
Date: Fri Mar  7 08:16:25 2008
New Revision: 634727

URL: http://svn.apache.org/viewvc?rev=634727&view=rev
Log:
fix sorting in Web UI broken by locale-dependent number formats

Modified:
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java
    commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.css
    commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.js

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java Fri Mar  7 08:16:25 2008
@@ -18,8 +18,6 @@
 package org.apache.commons.monitoring.reporting;
 
 import java.io.PrintWriter;
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -189,7 +187,8 @@
                 l = l / unit.getScale();
             }
         }
-        writer.append( NumberFormat.getInstance( options.getLocale() ).format( l ) );
+
+        writer.append( options.getNumberFormat().format( l ) );
     }
 
     private void renderInternal( PrintWriter writer, StatValue value, String attribute, double d, Options options,
@@ -208,6 +207,7 @@
                 d = d / unit.getScale();
             }
         }
-        writer.append( DecimalFormat.getNumberInstance( options.getLocale() ).format( d ) );
+
+        writer.append( options.getDecimalFormat().format( d ) );
     }
 }

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java Fri Mar  7 08:16:25 2008
@@ -137,7 +137,7 @@
         }
     }
 
-    private void writeColumnHead( PrintWriter writer, Options options, StatValue value, String attribute )
+    protected void writeColumnHead( PrintWriter writer, Options options, StatValue value, String attribute )
     {
         if ( options.render( value, attribute ) )
         {

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java Fri Mar  7 08:16:25 2008
@@ -17,7 +17,9 @@
 
 package org.apache.commons.monitoring.reporting;
 
-import java.util.Locale;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
 
 import org.apache.commons.monitoring.StatValue;
 import org.apache.commons.monitoring.Unit;
@@ -40,13 +42,23 @@
         return true;
     }
 
-    public Locale getLocale()
-    {
-        return Locale.US;
-    }
 
     public Unit unitFor( StatValue value )
     {
         return value.getUnit();
     }
+
+    public NumberFormat getDecimalFormat()
+    {
+        // Force JS compatible format
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+        symbols.setDecimalSeparator( '.' );
+        return new DecimalFormat( "0.00", symbols );
+    }
+
+    public NumberFormat getNumberFormat()
+    {
+        return new DecimalFormat( "0" );
+    }
+
 }

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java Fri Mar  7 08:16:25 2008
@@ -18,9 +18,9 @@
 package org.apache.commons.monitoring.reporting;
 
 import java.io.PrintWriter;
+import java.text.NumberFormat;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Locale;
 
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.StatValue;
@@ -47,6 +47,8 @@
 
         Unit unitFor( StatValue value );
 
-        Locale getLocale();
+        NumberFormat getNumberFormat();
+
+        NumberFormat getDecimalFormat();
     }
 }

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java Fri Mar  7 08:16:25 2008
@@ -23,7 +23,6 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.concurrent.ConcurrentHashMap;
@@ -136,74 +135,7 @@
      */
     protected Options getOptions( final HttpServletRequest request )
     {
-        return new OptionsSupport()
-        {
-            private List<String> roles;
-
-            private List<String> categories;
-
-            private List<String> subsystems;
-
-            private Locale locale;
-
-            {
-                String[] values = request.getParameterValues( "role" );
-                roles = values != null ? Arrays.asList( values ) : Collections.<String> emptyList();
-                values = request.getParameterValues( "category" );
-                categories = values != null ? Arrays.asList( values ) : Collections.<String> emptyList();
-                values = request.getParameterValues( "subsystem" );
-                subsystems = values != null ? Arrays.asList( values ) : Collections.<String> emptyList();
-                locale = request.getLocale();
-            }
-
-            public Locale getLocale()
-            {
-                return locale;
-            }
-
-            public boolean render( Object object )
-            {
-                if ( object instanceof StatValue )
-                {
-                    return roles.isEmpty() || roles.contains( ( (StatValue) object ).getRole() );
-                }
-                if ( object instanceof Monitor )
-                {
-                    Key key = ( (Monitor) object ).getKey();
-                    return ( categories.isEmpty() || categories.contains( key.getCategory() ) )
-                        && ( subsystems.isEmpty() || subsystems.contains( key.getSubsystem() ) );
-                }
-                return true;
-            }
-
-            public boolean render( StatValue value, String attribute )
-            {
-                String hide = request.getParameter( value.getRole() + "." + attribute );
-                if (hide != null)
-                {
-                    return Boolean.parseBoolean( hide );
-                }
-                return true;
-            }
-
-            public Unit unitFor( StatValue value )
-            {
-                String unitName = request.getParameter( value.getRole() + ".unit" );
-                if ( unitName != null )
-                {
-                    if ( value.getUnit() != null )
-                    {
-                        Unit unit = value.getUnit().getDerived( unitName );
-                        if ( unit != null )
-                        {
-                            return unit;
-                        }
-                    }
-                }
-                return value.getUnit();
-            }
-
-        };
+        return new HttpSerlvetRequestOptions( request );
     }
 
     protected List<String> getAcceptedMimeTypes( HttpServletRequest request )
@@ -233,6 +165,74 @@
             mimeTypes.add( 0, "text/html" );
         }
         return mimeTypes;
+    }
+
+    protected class HttpSerlvetRequestOptions
+        extends OptionsSupport
+    {
+        protected final HttpServletRequest request;
+
+        protected List<String> roles;
+
+        protected List<String> categories;
+
+        protected List<String> subsystems;
+
+        /**
+         * @param request
+         */
+        public HttpSerlvetRequestOptions( HttpServletRequest request )
+        {
+            this.request = request;
+            String[] values = request.getParameterValues( "role" );
+            roles = values != null ? Arrays.asList( values ) : Collections.<String> emptyList();
+            values = request.getParameterValues( "category" );
+            categories = values != null ? Arrays.asList( values ) : Collections.<String> emptyList();
+            values = request.getParameterValues( "subsystem" );
+            subsystems = values != null ? Arrays.asList( values ) : Collections.<String> emptyList();
+        }
+
+        public boolean render( Object object )
+        {
+            if ( object instanceof StatValue )
+            {
+                return roles.isEmpty() || roles.contains( ( (StatValue) object ).getRole() );
+            }
+            if ( object instanceof Monitor )
+            {
+                Key key = ( (Monitor) object ).getKey();
+                return ( categories.isEmpty() || categories.contains( key.getCategory() ) )
+                    && ( subsystems.isEmpty() || subsystems.contains( key.getSubsystem() ) );
+            }
+            return true;
+        }
+
+        public boolean render( StatValue value, String attribute )
+        {
+            String hide = request.getParameter( value.getRole() + "." + attribute );
+            if (hide != null)
+            {
+                return Boolean.parseBoolean( hide );
+            }
+            return true;
+        }
+
+        public Unit unitFor( StatValue value )
+        {
+            String unitName = request.getParameter( value.getRole() + ".unit" );
+            if ( unitName != null )
+            {
+                if ( value.getUnit() != null )
+                {
+                    Unit unit = value.getUnit().getDerived( unitName );
+                    if ( unit != null )
+                    {
+                        return unit;
+                    }
+                }
+            }
+            return value.getUnit();
+        }
     }
 
 }

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java Fri Mar  7 08:16:25 2008
@@ -41,7 +41,8 @@
 
     /** The JavaScripts to include to support user interaction */
     private String[] scripts =
-        new String[] { "jquery-1.2.3.pack.js", "jquery.tablesorter.pack.js", "commons-monitoring.js" };
+        new String[] { "jquery-1.2.3.pack.js",
+                       "jquery.tablesorter.pack.js", "commons-monitoring.js" };
 
     public NiceHtmlRenderer( String contextPath )
     {

Modified: commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.css
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.css?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.css (original)
+++ commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.css Fri Mar  7 08:16:25 2008
@@ -75,4 +75,12 @@
     cursor: pointer;
     border: solid 1px #8dbdd8;
     font-size: 0.8em;
+}
+
+tbody tr td:first-child {
+    text-align: left;
+}
+
+tbody tr td {
+    text-align: right;
 }

Modified: commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.js
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.js?rev=634727&r1=634726&r2=634727&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.js (original)
+++ commons/sandbox/monitoring/trunk/src/main/resources/commons-monitoring.js Fri Mar  7 08:16:25 2008
@@ -15,15 +15,13 @@
  * limitations under the License.
  */
 
+var myTextExtraction = function(node)
+{
+    return node.childNodes[0].childNodes[0].innerHTML;
+}
+
+
 $(document).ready(function()
 {
-    $("#monitoring").tablesorter( { widgets: ['zebra'] } );
-    // TODO add a select unit feature, as ns are far too precise in many cases
-    /* $("#monitoring thead td .unit").each( function()
-    {
-    	if ($(this).text() === "ns")
-    	{
-    		$(this).html( "<select><option>ns</option><option>µs</option><option>ms</option><option>s</option></select>" );
-    	}
-    } ); */
+    $("#monitoring").tablesorter( { widgets: ['zebra'], sortForce: 1 } );
 } );