View Javadoc

1   /***
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.cpd;
5   
6   import net.sourceforge.pmd.PMD;
7   
8   import java.util.Iterator;
9   
10  
11  public class CSVRenderer implements Renderer {
12  
13  	private char separator;
14  	
15  	public static final char defaultSeparator = ',';
16  	
17  	public CSVRenderer() {
18  		this(defaultSeparator);
19  	}
20  	
21  	public CSVRenderer(char separatorChar) {
22  		separator = separatorChar;
23  	}
24  	
25      public String render(Iterator 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          Match match;
33          TokenEntry mark;
34          
35          while (matches.hasNext()) {
36              match = (Match) matches.next();
37              rpt.append(match.getLineCount()).append(separator);
38              rpt.append(match.getTokenCount()).append(separator);
39              rpt.append(match.getMarkCount()).append(separator);
40              for (Iterator marks = match.iterator(); marks.hasNext();) {
41                  mark = (TokenEntry) marks.next();
42                  rpt.append(mark.getBeginLine()).append(separator);
43                  rpt.append(mark.getTokenSrcID());
44                  if (marks.hasNext()) {
45                      rpt.append(separator);
46                  }
47              }
48              rpt.append(PMD.EOL);
49          }
50          return rpt.toString();
51      }
52  }