001 /*
002 * Copyright 2011 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.osedu.org/licenses/ECL-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.student.contract.writer;
017
018 import java.io.ByteArrayOutputStream;
019 import java.io.File;
020 import java.io.FileNotFoundException;
021 import java.io.FileOutputStream;
022 import java.io.PrintStream;
023 import java.util.List;
024
025 import org.kuali.student.contract.exception.DictionaryExecutionException;
026
027 /**
028 *
029 * @author nwright
030 */
031 public class HtmlWriter extends XmlWriter {
032
033 private String directory;
034 private String fileName;
035 private String title;
036 private ByteArrayOutputStream body;
037
038 public HtmlWriter(String directory, String fileName, String title) {
039 super();
040 this.body = new ByteArrayOutputStream(1000);
041 this.setOut(new PrintStream(body));
042 this.setIndent(0);
043 this.directory = directory;
044 this.fileName = fileName;
045 this.title = title;
046 }
047
048 public ByteArrayOutputStream getBody() {
049 return body;
050 }
051
052 public String getDirectory() {
053 return directory;
054 }
055
056 public String getFileName() {
057 return fileName;
058 }
059
060 public void writeHeader() {
061 indentPrintln("<html>");
062 indentPrintln("<head>");
063 this.writeTag("title", title);
064
065 indentPrintln("</head>");
066 indentPrintln("<body bgcolor=\"#ffffff\" topmargin=0 marginheight=0>");
067 }
068
069 public void writeHeaderBodyAndFooterOutToFile() {
070
071 File dir = new File(this.directory);
072 //System.out.println ("Writing java class: " + fileName + " to " + dir.getAbsolutePath ());
073
074 if (!dir.exists()) {
075 if (!dir.mkdirs()) {
076 throw new DictionaryExecutionException("Could not create directory "
077 + this.directory);
078 }
079 }
080 try {
081 PrintStream out = new PrintStream(new FileOutputStream(this.directory + "/" + fileName, false));
082 this.setOut(out);
083 } catch (FileNotFoundException ex) {
084 throw new DictionaryExecutionException(ex);
085 }
086 writeHeader();
087 indentPrintln(body.toString());
088 indentPrintln("</body>");
089 decrementIndent();
090 indentPrintln("</html>");
091 }
092
093 public void writeTable(List<String> headers, List<List<String>> rows) {
094 this.indentPrintln("<table>");
095 incrementIndent();
096 this.indentPrintln("<tr>");
097 for (String header : headers) {
098 this.writeTag("th", header);
099 }
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 }