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