1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.monitoring.reporting.web.plugin.report.format;
18
19 import org.apache.commons.monitoring.configuration.Configuration;
20 import org.apache.commons.monitoring.counters.Unit;
21 import org.apache.commons.monitoring.reporting.web.handler.api.Template;
22 import org.apache.commons.monitoring.reporting.web.template.MapBuilder;
23
24 import java.util.Collection;
25 import java.util.Map;
26
27 public class CSVFormat extends MapFormat implements Format {
28 private static final String SEPARATOR = Configuration.getProperty(Configuration.COMMONS_MONITORING_PREFIX + "csv.separator", ";");
29 public static final String HEADER = "Monitor" + SEPARATOR + "Role" + SEPARATOR + toCsv(ATTRIBUTES_ORDERED_LIST);
30
31 @Override
32 public Template render(final Map<String, ?> params) {
33 final Unit timeUnit = timeUnit(params);
34 return new Template("/templates/report/report-csv.vm",
35 new MapBuilder<String, Object>()
36 .set("headers", HEADER)
37 .set("separator", SEPARATOR)
38 .set("lines", snapshot(timeUnit))
39 .build(), false);
40 }
41
42 @Override
43 public String type() {
44 return "text/plain";
45 }
46
47 private static String toCsv(final Collection<String> line) {
48 final StringBuilder builder = new StringBuilder();
49 for (final String s : line) {
50 builder.append(s).append(SEPARATOR);
51 }
52
53 final String str = builder.toString();
54 return str.substring(0, str.length() - 1) + '\n';
55 }
56 }