001: /*
002: * $Id: HtmlTablePrinter.java 8077 2007-08-27 20:15:25Z aperepel $
003: * --------------------------------------------------------------------------------------
004: * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
005: *
006: * The software in this package is published under the terms of the CPAL v1.0
007: * license, a copy of which has been included with this distribution in the
008: * LICENSE.txt file.
009: */
010:
011: package org.mule.management.stats.printers;
012:
013: import org.mule.util.StringUtils;
014:
015: import java.io.OutputStream;
016: import java.io.Writer;
017: import java.util.Collection;
018: import java.util.StringTokenizer;
019:
020: /**
021: * <code>HtmlTablePrinter</code> prints event processing stats as a HTML table
022: */
023: public class HtmlTablePrinter extends AbstractTablePrinter {
024:
025: public HtmlTablePrinter(Writer out) {
026: super (out);
027: }
028:
029: public HtmlTablePrinter(OutputStream out) {
030: super (out);
031: }
032:
033: // @Override
034: public void print(Collection stats) {
035: println("<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">");
036: String[][] table = getTable(stats);
037: boolean providerStats = false;
038: println("<tr>");
039: for (int i = 0; i < table.length; i++) {
040: println("<td class=\"statistics\">" + table[i][0] + "</td>");
041: }
042: println("</tr>");
043: for (int i = 1; i < table[0].length; i++) {
044: println("<tr class=\""
045: + ((i % 2 == 0) ? "darkline" : "clearline") + "\">");
046: for (int j = 0; j < table.length; j++) {
047: if (j == 0) {
048: if (StringUtils.equals(table[1][i], "-")) {
049: if (StringUtils.equals(table[j][i],
050: "By Provider")) {
051: println("<td class=\"statisticsrow\"><div class=\"tablesubheader\">"
052: + table[j][i] + "</div></td>");
053: } else {
054: println("<td class=\"statisticsrow\"><div class=\"tableheader\">"
055: + table[j][i] + "</div></td>");
056: }
057: } else if (StringUtils.isNotEmpty(table[j][i])) {
058: println("<td class=\"statisticsrow\">"
059: + table[j][i] + "</td>");
060: } else {
061: println("<td class=\"statisticsrow\"> </td>");
062: }
063: } else {
064: if (providerStats) {
065: println("<td class=\"statisticsrow\">"
066: + getProviderStatsHtml(table[j][i])
067: + "</td>");
068: } else {
069: println("<td class=\"statisticsrow\">"
070: + ((StringUtils
071: .equals(table[j][i], "-")) ? ""
072: : table[j][i]) + "</td>");
073: }
074: }
075: }
076: println("</tr>");
077: if (StringUtils.equals(table[0][i], "By Provider")) {
078: providerStats = true;
079: } else {
080: providerStats = false;
081: }
082: }
083: println("</table>");
084: }
085:
086: protected String getProviderStatsHtml(String stats) {
087: if (StringUtils.isBlank(stats)) {
088: return "";
089: }
090:
091: StringBuffer buf = new StringBuffer();
092: buf.append("<table>");
093: StringTokenizer st = new StringTokenizer(stats, ";");
094:
095: if (st.countTokens() == 0) {
096: buf.append("<tr><td class=\"statisticssubrow\">");
097: int i = stats.indexOf("=");
098: buf.append(stats.substring(0, i)).append(": ");
099: buf.append("</td><td class=\"statisticssubrow\">");
100: buf.append(stats.substring(i + 1));
101: buf.append("</td></tr>");
102: } else {
103: String token;
104: while (st.hasMoreTokens()) {
105: token = st.nextToken();
106: buf.append("<tr><td class=\"statisticssubrow\">");
107: int i = token.indexOf("=");
108: buf.append(token.substring(0, i)).append(": ");
109: buf.append("</td><td class=\"statisticssubrow\">");
110: buf.append(token.substring(i + 1));
111: buf.append("</td></tr>");
112: }
113: }
114: buf.append("</table>");
115: return buf.toString();
116: }
117:
118: }
|