1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.contract.writer;
17
18 import java.io.ByteArrayOutputStream;
19 import java.io.File;
20 import java.io.FileNotFoundException;
21 import java.io.FileOutputStream;
22 import java.io.PrintStream;
23 import java.util.List;
24
25 import org.kuali.student.contract.exception.DictionaryExecutionException;
26
27
28
29
30
31 public class HtmlWriter extends XmlWriter {
32
33 private String directory;
34 private String fileName;
35 private String title;
36 private ByteArrayOutputStream body;
37
38 public HtmlWriter(String directory, String fileName, String title) {
39 super();
40 this.body = new ByteArrayOutputStream(1000);
41 this.setOut(new PrintStream(body));
42 this.setIndent(0);
43 this.directory = directory;
44 this.fileName = fileName;
45 this.title = title;
46 }
47
48 public ByteArrayOutputStream getBody() {
49 return body;
50 }
51
52 public String getDirectory() {
53 return directory;
54 }
55
56 public String getFileName() {
57 return fileName;
58 }
59
60 public void writeHeader() {
61 indentPrintln("<html>");
62 indentPrintln("<head>");
63 this.writeTag("title", title);
64
65 indentPrintln("</head>");
66 indentPrintln("<body bgcolor=\"#ffffff\" topmargin=0 marginheight=0>");
67 }
68
69 public void writeHeaderBodyAndFooterOutToFile() {
70
71 File dir = new File(this.directory);
72
73
74 if (!dir.exists()) {
75 if (!dir.mkdirs()) {
76 throw new DictionaryExecutionException("Could not create directory "
77 + this.directory);
78 }
79 }
80 try {
81 PrintStream out = new PrintStream(new FileOutputStream(this.directory + "/" + fileName, false));
82 this.setOut(out);
83 } catch (FileNotFoundException ex) {
84 throw new DictionaryExecutionException(ex);
85 }
86 writeHeader();
87 indentPrintln(body.toString());
88 indentPrintln("</body>");
89 decrementIndent();
90 indentPrintln("</html>");
91 }
92
93 public void writeTable(List<String> headers, List<List<String>> rows) {
94 this.indentPrintln("<table>");
95 incrementIndent();
96 this.indentPrintln("<tr>");
97 for (String header : headers) {
98 this.writeTag("th", header);
99 }
100 this.indentPrintln("</tr>");
101 for (List<String> row : rows) {
102 this.indentPrintln("<tr>");
103 for (String cell : row) {
104 this.writeTag("td", cell);
105 }
106 this.indentPrintln("</tr>");
107 }
108 this.indentPrintln("</table>");
109 }
110 }