/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.renderers;
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.Report;
import net.sourceforge.pmd.RuleViolation;
import java.util.Iterator;
/**
* @version $Revision: 1.6 $ $Date: 2003/11/19 21:33:56 $
* @author Vladimir
*/
public class VBHTMLRenderer implements Renderer {
public String render(Report report) {
if (report.isEmpty()) {
return "";
}
StringBuffer sb = new StringBuffer(header());
String filename = null;
String lineSep = PMD.EOL;
boolean colorize = false;
for (Iterator iter = report.iterator(); iter.hasNext();) {
RuleViolation rv = (RuleViolation) iter.next();
if (!rv.getFilename().equals(filename)) { // New File
if (filename != null) {
sb.append("</table></br>");
colorize = false;
}
filename = rv.getFilename();
sb.append("<table border=\"0\" width=\"80%\">");
sb.append("<tr id=TableHeader><td colspan=\"2\"><font class=title> ").append(filename).append("</font></tr>");
sb.append(lineSep);
}
if (colorize) {
sb.append("<tr id=RowColor1>");
} else {
sb.append("<tr id=RowColor2>");
}
colorize = !colorize;
sb.append("<td width=\"50\" align=\"right\"><font class=body>" + rv.getLine() + " </font></td>");
sb.append("<td><font class=body>" + rv.getDescription() + "</font></td>");
sb.append("</tr>");
sb.append(lineSep);
}
if (filename != null) {
sb.append("</table>");
}
sb.append("<br>");
// output the problems
Iterator iter = report.errors();
if (iter.hasNext()) {
sb.append("<table border=\"0\" width=\"80%\">");
sb.append("<tr id=TableHeader><td><font class=title> Problems found</font></td></tr>");
colorize = false;
while(iter.hasNext()) {
if (colorize) {
sb.append("<tr id=RowColor1>");
} else {
sb.append("<tr id=RowColor2>");
}
colorize = !colorize;
sb.append("<td><font class=body>").append(iter.next()).append("\"</font></td></tr>");
}
sb.append("</table>");
}
sb.append(footer());
return sb.toString();
}
private String header() {
StringBuffer sb = new StringBuffer();
sb.append("<html><head><title>PMD</title></head>");
sb.append("<style type=\"text/css\">");
sb.append("<!--" + PMD.EOL);
sb.append("body { background-color: white; font-family:verdana, arial, helvetica, geneva; font-size: 16px; font-style: italic; color: black; }" + PMD.EOL);
sb.append(".title { font-family: verdana, arial, helvetica,geneva; font-size: 12px; font-weight:bold; color: white; }" + PMD.EOL);
sb.append(".body { font-family: verdana, arial, helvetica, geneva; font-size: 12px; font-weight:plain; color: black; }" + PMD.EOL);
sb.append("#TableHeader { background-color: #003366; }" + PMD.EOL);
sb.append("#RowColor1 { background-color: #eeeeee; }" + PMD.EOL);
sb.append("#RowColor2 { background-color: white; }" + PMD.EOL);
sb.append("-->");
sb.append("</style>");
sb.append("<body><center>");
return sb.toString();
}
private String footer() {
return "</center></body></html>";
}
}