View Javadoc

1   /*
2    * $Id: HtmlTablePrinter.java 20203 2010-11-17 01:54:38Z mike.schilling $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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   * <code>HtmlTablePrinter</code> prints event processing stats as a HTML table
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\">&nbsp;</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 }