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 }