You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rm...@apache.org on 2013/10/16 08:34:36 UTC
svn commit: r1532648 - in
/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format:
CSVFormat.java HTMLFormat.java MapFormat.java
Author: rmannibucau
Date: Wed Oct 16 06:34:36 2013
New Revision: 1532648
URL: http://svn.apache.org/r1532648
Log:
fixing number formatting, we don't want to format in csv but only in rendered html + allowing to configure it
Modified:
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java?rev=1532648&r1=1532647&r2=1532648&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java Wed Oct 16 06:34:36 2013
@@ -35,7 +35,7 @@ public class CSVFormat extends MapFormat
new MapBuilder<String, Object>()
.set("headers", HEADER)
.set("separator", SEPARATOR)
- .set("lines", snapshot(timeUnit))
+ .set("lines", snapshot(timeUnit, format(params, null)))
.build(), false);
}
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java?rev=1532648&r1=1532647&r2=1532648&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java Wed Oct 16 06:34:36 2013
@@ -23,6 +23,8 @@ import org.apache.commons.monitoring.rep
import java.util.Map;
public class HTMLFormat extends MapFormat implements Format {
+ private static final String NUMBER_FORMAT = "###,###,###,##0.00"; // DecimalFormat is not thread safe so don't init it statically
+
@Override
public Template render(final Map<String, ?> params) {
final Unit timeUnit = timeUnit(params);
@@ -30,7 +32,7 @@ public class HTMLFormat extends MapForma
new MapBuilder<String, Object>()
.set(Map.class.cast(params))
.set("headers", ATTRIBUTES_ORDERED_LIST)
- .set("data", snapshot(timeUnit))
+ .set("data", snapshot(timeUnit, format(params, NUMBER_FORMAT)))
.build());
}
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java?rev=1532648&r1=1532647&r2=1532648&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java Wed Oct 16 06:34:36 2013
@@ -21,6 +21,8 @@ import org.apache.commons.monitoring.cou
import org.apache.commons.monitoring.counters.Unit;
import org.apache.commons.monitoring.repositories.Repository;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
@@ -29,7 +31,6 @@ import java.util.concurrent.CopyOnWriteA
public abstract class MapFormat {
protected static final Collection<String> ATTRIBUTES_ORDERED_LIST = buildMetricDataHeader();
- private static final DecimalFormat NUMBER_FORMATTER = new DecimalFormat("###,###,###,##0.00");
protected static Collection<String> buildMetricDataHeader() {
final Collection<String> list = new CopyOnWriteArrayList<String>();
@@ -41,6 +42,29 @@ public abstract class MapFormat {
return list;
}
+ protected static String format(final Map<String, ?> params, final String defaultValue) {
+ final Object format = params.get("format");
+ if (format != null) {
+ if (String.class.isInstance(format)) {
+ final String strFormat = String.class.cast(format);
+ return decode(strFormat);
+ }
+ if (String[].class.isInstance(format)) {
+ final String[] array = String[].class.cast(format);
+ return decode(array[0]);
+ }
+ }
+ return defaultValue;
+ }
+
+ private static String decode(String strFormat) {
+ try {
+ return URLDecoder.decode(strFormat, "UTF-8");
+ } catch (final UnsupportedEncodingException e) {
+ return strFormat;
+ }
+ }
+
protected static Unit timeUnit(final Map<String, ?> params) {
final Object u = params.get("unit");
if (u != null) {
@@ -63,7 +87,7 @@ public abstract class MapFormat {
return Unit.Time.MILLISECOND;
}
- protected static Collection<Collection<String>> snapshot(final Unit timeUnit) {
+ protected static Collection<Collection<String>> snapshot(final Unit timeUnit, final String format) {
final Collection<Collection<String>> data = new ArrayList<Collection<String>>();
for (final Counter counter : Repository.INSTANCE) {
final Unit counterUnit = counter.getKey().getRole().getUnit();
@@ -80,13 +104,20 @@ public abstract class MapFormat {
line.add(counter.getKey().getRole().getName() + " (" + counterUnit.getName() + ")");
}
+ final DecimalFormat formatter;
+ if (format != null) {
+ formatter = new DecimalFormat(format);
+ } else {
+ formatter = null;
+ }
+
for (final MetricData md : MetricData.values()) {
double value = md.value(counter);
if (md.isTime() && compatible && timeUnit != counterUnit) {
value = timeUnit.convert(value, counterUnit);
}
- if (!Double.isNaN(value) && !Double.isInfinite(value)) {
- line.add(NUMBER_FORMATTER.format(value));
+ if (formatter != null && !Double.isNaN(value) && !Double.isInfinite(value)) {
+ line.add(formatter.format(value));
} else {
line.add(Double.toString(value));
}