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<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 }