View Javadoc

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  }