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