1
2
3
4
5
6
7 package org.mule.management.stats.printers;
8
9 import org.mule.util.StringUtils;
10
11 import java.io.OutputStream;
12 import java.io.Writer;
13 import java.util.Collection;
14 import java.util.StringTokenizer;
15
16
17
18
19 public class HtmlTablePrinter extends AbstractTablePrinter
20 {
21
22 public HtmlTablePrinter(Writer out)
23 {
24 super(out);
25 }
26
27 public HtmlTablePrinter(OutputStream out)
28 {
29 super(out);
30 }
31
32 @Override
33 public void print(Collection stats)
34 {
35 println("<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">");
36 String[][] table = getTable(stats);
37 boolean providerStats = false;
38 println("<tr>");
39 for (int i = 0; i < table.length; i++)
40 {
41 println("<td class=\"statistics\">" + table[i][0] + "</td>");
42 }
43 println("</tr>");
44 for (int i = 1; i < table[0].length; i++)
45 {
46 println("<tr class=\"" + ((i % 2 == 0) ? "darkline" : "clearline") + "\">");
47 for (int j = 0; j < table.length; j++)
48 {
49 if (j == 0)
50 {
51 if (StringUtils.equals(table[1][i], "-"))
52 {
53 if (StringUtils.equals(table[j][i], "By Provider"))
54 {
55 println("<td class=\"statisticsrow\"><div class=\"tablesubheader\">" + table[j][i] + "</div></td>");
56 }
57 else
58 {
59 println("<td class=\"statisticsrow\"><div class=\"tableheader\">" + table[j][i] + "</div></td>");
60 }
61 }
62 else if (StringUtils.isNotEmpty(table[j][i]))
63 {
64 println("<td class=\"statisticsrow\">" + table[j][i] + "</td>");
65 }
66 else
67 {
68 println("<td class=\"statisticsrow\"> </td>");
69 }
70 }
71 else
72 {
73 if (providerStats)
74 {
75 println("<td class=\"statisticsrow\">" + getProviderStatsHtml(table[j][i]) + "</td>");
76 }
77 else
78 {
79 println("<td class=\"statisticsrow\">" + ((StringUtils.equals(table[j][i], "-")) ? "" : table[j][i]) + "</td>");
80 }
81 }
82 }
83 println("</tr>");
84 if (StringUtils.equals(table[0][i], "By Provider"))
85 {
86 providerStats = true;
87 }
88 else
89 {
90 providerStats = false;
91 }
92 }
93 println("</table>");
94 }
95
96 protected String getProviderStatsHtml(String stats)
97 {
98 if (StringUtils.isBlank(stats) || "-".equals(stats))
99 {
100 return "";
101 }
102
103 StringBuffer buf = new StringBuffer();
104 buf.append("<table>");
105 StringTokenizer st = new StringTokenizer(stats, ";");
106
107 if (st.countTokens() == 0)
108 {
109 buf.append("<tr><td class=\"statisticssubrow\">");
110 int i = stats.indexOf("=");
111 buf.append(stats.substring(0, i)).append(": ");
112 buf.append("</td><td class=\"statisticssubrow\">");
113 buf.append(stats.substring(i + 1));
114 buf.append("</td></tr>");
115 }
116 else
117 {
118 String token;
119 while (st.hasMoreTokens())
120 {
121 token = st.nextToken();
122 buf.append("<tr><td class=\"statisticssubrow\">");
123 int i = token.indexOf("=");
124 buf.append(token.substring(0, i)).append(": ");
125 buf.append("</td><td class=\"statisticssubrow\">");
126 buf.append(token.substring(i + 1));
127 buf.append("</td></tr>");
128 }
129 }
130 buf.append("</table>");
131 return buf.toString();
132 }
133
134 }