1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package net.sourceforge.pmd.ant; 5 6 import net.sourceforge.pmd.renderers.CSVRenderer; 7 import net.sourceforge.pmd.renderers.HTMLRenderer; 8 import net.sourceforge.pmd.renderers.PapariTextRenderer; 9 import net.sourceforge.pmd.renderers.Renderer; 10 import net.sourceforge.pmd.renderers.SummaryHTMLRenderer; 11 import net.sourceforge.pmd.renderers.TextRenderer; 12 import net.sourceforge.pmd.renderers.VBHTMLRenderer; 13 import net.sourceforge.pmd.renderers.XMLRenderer; 14 import net.sourceforge.pmd.renderers.YAHTMLRenderer; 15 import org.apache.tools.ant.BuildException; 16 17 import java.io.BufferedWriter; 18 import java.io.File; 19 import java.io.FileWriter; 20 import java.io.IOException; 21 import java.io.Writer; 22 23 public class Formatter { 24 25 private File toFile; 26 private String linkPrefix; 27 private String type; 28 29 public void setType(String type) { 30 this.type = type; 31 } 32 33 public void setLinkPrefix(String linkPrefix) { 34 this.linkPrefix = linkPrefix; 35 } 36 37 public void setToFile(File toFile) { 38 this.toFile = toFile; 39 } 40 41 public Renderer getRenderer() { 42 Renderer renderer; 43 if (type.equals("xml")) { 44 renderer = new XMLRenderer(); 45 } else if (type.equals("html")) { 46 renderer = new HTMLRenderer(linkPrefix); 47 } else if (type.equals("summaryhtml")) { 48 renderer = new SummaryHTMLRenderer(); 49 } else if (type.equals("papari")) { 50 renderer = new PapariTextRenderer(); 51 } else if (type.equals("csv")) { 52 renderer = new CSVRenderer(); 53 } else if (type.equals("text")) { 54 renderer = new TextRenderer(); 55 } else if (type.equals("vbhtml")) { 56 renderer = new VBHTMLRenderer(); 57 } else if (type.equals("yahtml")) { 58 renderer = new YAHTMLRenderer(); 59 } else if (!type.equals("")) { 60 try { 61 renderer = (Renderer) Class.forName(type).newInstance(); 62 } catch (Exception e) { 63 throw new BuildException("Unable to instantiate custom formatter: " + type); 64 } 65 } else { 66 throw new BuildException("Formatter type must be 'xml', 'text', 'html', 'summaryhtml', 'papari', 'csv', 'vbhtml', 'yahtml', or a class name; you specified " + type); 67 } 68 return renderer; 69 } 70 71 public boolean isToFileNull() { 72 return toFile == null; 73 } 74 75 public Writer getToFileWriter(String baseDir) throws IOException { 76 if (!toFile.isAbsolute()) { 77 return new BufferedWriter(new FileWriter(new File(baseDir + System.getProperty("file.separator") + toFile.getPath()))); 78 } 79 return new BufferedWriter(new FileWriter(toFile)); 80 } 81 82 public String toString() { 83 return "file = " + toFile + "; renderer = " + type; 84 } 85 }