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.XMLRenderer; 13 import org.apache.tools.ant.BuildException; 14 15 import java.io.BufferedWriter; 16 import java.io.File; 17 import java.io.FileWriter; 18 import java.io.IOException; 19 import java.io.Writer; 20 21 public class Formatter { 22 23 private Renderer renderer; 24 private File toFile; 25 26 public void setType(String type) { 27 if (type.equals("xml")) { 28 renderer = new XMLRenderer(); 29 } else if (type.equals("html")) { 30 renderer = new HTMLRenderer(); 31 } else if (type.equals("summaryhtml")) { 32 renderer = new SummaryHTMLRenderer(); 33 } else if (type.equals("papari")) { 34 renderer = new PapariTextRenderer(); 35 } else if (type.equals("csv")) { 36 renderer = new CSVRenderer(); 37 } else if (type.equals("text")) { 38 renderer = new TextRenderer(); 39 } else if (!type.equals("")) { 40 try { 41 renderer = (Renderer)Class.forName(type).newInstance(); 42 } catch (Exception e) { 43 e.printStackTrace(); 44 throw new BuildException("Unable to instantiate custom formatter: " + type); 45 } 46 } else { 47 throw new BuildException("Formatter type must be 'xml', 'text', 'html', 'summaryhtml', 'papari', 'csv', or a class name; you specified " + type); 48 } 49 } 50 51 public void setToFile(File toFile) { 52 this.toFile = toFile; 53 } 54 55 public Renderer getRenderer() { 56 return renderer; 57 } 58 59 public boolean isToFileNull() { 60 return toFile == null; 61 } 62 63 public Writer getToFileWriter(String baseDir) throws IOException { 64 if (!toFile.isAbsolute()) { 65 return new BufferedWriter(new FileWriter(new File(baseDir + System.getProperty("file.separator") + toFile.getPath()))); 66 } 67 return new BufferedWriter(new FileWriter(toFile)); 68 } 69 70 public String toString() { 71 return "file = " + toFile + "; renderer = " + renderer.getClass().getName(); 72 } 73 }