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