1 package net.sourceforge.pmd.renderers;
2
3 import net.sourceforge.pmd.PMD;
4 import net.sourceforge.pmd.Report;
5
6 import java.io.IOException;
7 import java.io.Writer;
8 import java.util.Map;
9
10 public class SummaryHTMLRenderer extends AbstractRenderer {
11 private String linePrefix,linkPrefix;
12 public SummaryHTMLRenderer(String linkPrefix, String linePrefix) {
13 this.linePrefix = linePrefix;
14 this.linkPrefix = linkPrefix;
15 }
16
17 public SummaryHTMLRenderer(){
18 this(null,null);
19 }
20
21 public void render(Writer writer, Report report) throws IOException {
22 writer.write("<html><head><title>PMD</title></head><body>" + PMD.EOL);
23 renderSummary(writer, report);
24 writer.write("<h2><center>Detail</h2></center>");
25 writer.write("<table align=\"center\" cellspacing=\"0\" cellpadding=\"3\"><tr>" + PMD.EOL);
26 new HTMLRenderer(linkPrefix,linePrefix).renderBody(writer, report);
27 writer.write("</table></body></html>");
28 }
29
30 public void renderSummary(Writer writer, Report report) throws IOException {
31 StringBuffer buf = new StringBuffer();
32 buf.append("<h2><center>Summary</h2></center>");
33 buf.append("<table align=\"center\" cellspacing=\"0\" cellpadding=\"3\">");
34 buf.append("<th>Rule name</th>");
35 buf.append("<th>Number of violations</th>");
36 writer.write(buf.toString());
37 Map<String, Integer> summary = report.getSummary();
38 for (Map.Entry<String, Integer> entry: summary.entrySet()) {
39 String ruleName = entry.getKey();
40 buf.setLength(0);
41 buf.append("<tr>");
42 buf.append("<td>" + ruleName + "</td>");
43 buf.append("<td align=center>" + entry.getValue().intValue() + "</td>");
44 buf.append("</tr>");
45 writer.write(buf.toString());
46 }
47 writer.write("</table>");
48 }
49 }