/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.ant; import net.sourceforge.pmd.renderers.CSVRenderer; import net.sourceforge.pmd.renderers.HTMLRenderer; import net.sourceforge.pmd.renderers.PapariTextRenderer; import net.sourceforge.pmd.renderers.Renderer; import net.sourceforge.pmd.renderers.SummaryHTMLRenderer; import net.sourceforge.pmd.renderers.TextRenderer; import net.sourceforge.pmd.renderers.XMLRenderer; import org.apache.tools.ant.BuildException; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class Formatter { private Renderer renderer; private File toFile; public void setType(String type) { if (type.equals("xml")) { renderer = new XMLRenderer(); } else if (type.equals("html")) { renderer = new HTMLRenderer(); } else if (type.equals("summaryhtml")) { renderer = new SummaryHTMLRenderer(); } else if (type.equals("papari")) { renderer = new PapariTextRenderer(); } else if (type.equals("csv")) { renderer = new CSVRenderer(); } else if (type.equals("text")) { renderer = new TextRenderer(); } else if (!type.equals("")) { try { renderer = (Renderer)Class.forName(type).newInstance(); } catch (Exception e) { e.printStackTrace(); throw new BuildException("Unable to instantiate custom formatter: " + type); } } else { throw new BuildException("Formatter type must be 'xml', 'text', 'html', 'summaryhtml', 'papari', 'csv', or a class name; you specified " + type); } } public void setToFile(File toFile) { this.toFile = toFile; } public Renderer getRenderer() { return renderer; } public boolean isToFileNull() { return toFile == null; } public Writer getToFileWriter(String baseDir) throws IOException { if (!toFile.isAbsolute()) { return new BufferedWriter(new FileWriter(new File(baseDir + System.getProperty("file.separator") + toFile.getPath()))); } return new BufferedWriter(new FileWriter(toFile)); } public String toString() { return "file = " + toFile + "; renderer = " + renderer.getClass().getName(); } }