01: /**
02: * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
03: */package net.sourceforge.pmd.cpd;
04:
05: import net.sourceforge.pmd.PMD;
06:
07: import java.util.Iterator;
08:
09: public class CSVRenderer implements Renderer {
10:
11: private char separator;
12:
13: public static final char defaultSeparator = ',';
14:
15: public CSVRenderer() {
16: this (defaultSeparator);
17: }
18:
19: public CSVRenderer(char separatorChar) {
20: separator = separatorChar;
21: }
22:
23: public String render(Iterator<Match> matches) {
24: StringBuffer rpt = new StringBuffer(1000);
25: rpt.append("lines").append(separator);
26: rpt.append("tokens").append(separator);
27: rpt.append("occurrences");
28: rpt.append(PMD.EOL);
29:
30: while (matches.hasNext()) {
31: Match match = matches.next();
32: rpt.append(match.getLineCount()).append(separator);
33: rpt.append(match.getTokenCount()).append(separator);
34: rpt.append(match.getMarkCount()).append(separator);
35: for (Iterator<TokenEntry> marks = match.iterator(); marks
36: .hasNext();) {
37: TokenEntry mark = marks.next();
38: rpt.append(mark.getBeginLine()).append(separator);
39: rpt.append(mark.getTokenSrcID());
40: if (marks.hasNext()) {
41: rpt.append(separator);
42: }
43: }
44: rpt.append(PMD.EOL);
45: }
46: return rpt.toString();
47: }
48: }
|