CSVRenderer.java
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 }