1 package net.sourceforge.pmd.renderers;
2
3 import java.io.IOException;
4 import java.io.Writer;
5 import java.util.Iterator;
6 import java.util.LinkedList;
7 import java.util.List;
8
9 import net.sourceforge.pmd.IRuleViolation;
10 import net.sourceforge.pmd.Report;
11
12 public abstract class OnTheFlyRenderer extends AbstractRenderer {
13
14 protected List<Report.ProcessingError> errors = new LinkedList<Report.ProcessingError>();
15
16 protected List<Report.SuppressedViolation> suppressed = new LinkedList<Report.SuppressedViolation>();
17
18 public void render(Writer writer, Report report) throws IOException {
19 setWriter(writer);
20 start();
21 renderFileReport(report);
22 end();
23 }
24
25 public void renderFileReport(Report report) throws IOException {
26 Iterator<IRuleViolation> violations = report.iterator();
27 if (violations.hasNext()) {
28 renderFileViolations(violations);
29 getWriter().flush();
30 }
31
32
33
34
35
36 for (Iterator<Report.ProcessingError> i = report.errors(); i.hasNext();) {
37 errors.add(i.next());
38 }
39
40 if (showSuppressedViolations) {
41 suppressed.addAll(report.getSuppressedRuleViolations());
42 }
43 }
44
45 public abstract void start() throws IOException;
46
47 public abstract void renderFileViolations(Iterator<IRuleViolation> violations) throws IOException;
48
49 public abstract void end() throws IOException;
50
51 }