001: /*
002: * Created on 07/03/2002
003: *
004: * Swing Components - visit http://sf.net/projects/gfd
005: *
006: * Copyright (C) 2004 Igor Regis da Silva Simões
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public License
010: * as published by the Free Software Foundation; either version 2
011: * of the License, or (at your option) any later version.
012: *
013: * This program is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with this program; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
021: *
022: */
023: package br.com.igor.util.html;
024:
025: import java.io.BufferedWriter;
026: import java.io.FileWriter;
027: import java.io.PrintWriter;
028: import java.sql.ResultSet;
029: import java.text.DateFormat;
030: import java.util.Date;
031:
032: /**
033: * Esta classe é um contrutor de relatórios que recebe sua configurações e gera um arquivo html em um diretório especificado, contendo os dados formatados em
034: * uma tabela.
035: *
036: * @author Igor Regis da Silva Simoes
037: * @created 05/08/2001
038: */
039: public class ReportBuilder {
040:
041: private String title;
042:
043: private String timbreAddress;
044:
045: private String backgroundImgAddress;
046:
047: private String reportAddress;
048:
049: private String[] tableHeaders;
050:
051: private String[][][] tableFields;
052:
053: private ResultSet dados = null;
054:
055: /**
056: * Cria uma nova isntancia de ReportBuilder
057: *
058: * @param title Titulo do Relatório
059: * @param timbreAddress Endreço do arquivo de imagem contendo o timbre da empresa a ser inderido no relatório
060: * @param tableHeaders Cabeçalho da tabela que será impressa
061: * @param tableFields Dado a ser impresso organizado em uma matriz bidimensional
062: * @param reportAddress Local onde o arquivo html do relatório será gerado
063: */
064: public ReportBuilder(String title, String timbreAddress,
065: String[] tableHeaders, String[][][] tableFields,
066: String reportAddress) {
067: this .reportAddress = reportAddress;
068: this .title = title;
069: this .timbreAddress = timbreAddress;
070: this .tableHeaders = tableHeaders;
071: this .tableFields = tableFields;
072: }
073:
074: /**
075: * Cria uma nova isntancia de ReportBuilder
076: *
077: * @param title Titulo do Relatório
078: * @param timbreAddress Endreço do arquivo de imagem contendo o timbre da empresa a ser inderido no relatório
079: * @param tableHeaders Cabeçalho da tabela que será impressa
080: * @param tableFields Dado a ser impresso organizado em uma matriz bidimensional
081: * @param reportAddress Local onde o arquivo html do relatório será gerado
082: * @param backgroundImgAddress endreço do arquivo de imagem contendo a imagem que será usado no fundo do relatório
083: */
084: public ReportBuilder(String title, String timbreAddress,
085: String[] tableHeaders, String[][][] tableFields,
086: String reportAddress, String backgroundImgAddress) {
087: this .reportAddress = reportAddress;
088: this .title = title;
089: this .timbreAddress = timbreAddress;
090: this .backgroundImgAddress = backgroundImgAddress;
091: this .tableHeaders = tableHeaders;
092: this .tableFields = tableFields;
093: }
094:
095: /**
096: * Cria uma nova isntancia de ReportBuilder
097: *
098: * @param title Titulo do Relatório
099: * @param tableHeaders Cabeçalho da tabela que será impressa
100: * @param tableFields Dado a ser impresso organizado em uma matriz bidimensional
101: * @param reportAddress Local onde o arquivo html do relatório será gerado
102: */
103: public ReportBuilder(String title, String[] tableHeaders,
104: String[][][] tableFields, String reportAddress) {
105: this .reportAddress = reportAddress;
106: this .title = title;
107: this .tableHeaders = tableHeaders;
108: this .tableFields = tableFields;
109: }
110:
111: /**
112: * Cria uma nova isntancia de ReportBuilder
113: *
114: * @param title Titulo do Relatório
115: * @param tableHeaders Cabeçalho da tabela que será impressa
116: * @param tableFields Dado a ser impresso organizado em uma matriz bidimensional
117: * @param reportAddress Local onde o arquivo html do relatório será gerado
118: * @param backgroundImgAddress endreço do arquivo de imagem contendo a imagem que será usado no fundo do relatório
119: */
120: public ReportBuilder(String title, String[] tableHeaders,
121: String[][][] tableFields, String reportAddress,
122: String backgroundImgAddress) {
123: this .backgroundImgAddress = backgroundImgAddress;
124: this .reportAddress = reportAddress;
125: this .title = title;
126: this .tableHeaders = tableHeaders;
127: this .tableFields = tableFields;
128: }
129:
130: /**
131: * Cria uma nova isntancia de ReportBuilder
132: *
133: * @param tableHeaders Cabeçalho da tabela que será impressa
134: * @param tableFields Dado a ser impresso organizado em uma matriz bidimensional
135: * @param reportAddress Local onde o arquivo html do relatório será gerado
136: * @param backgroundImgAddress endreço do arquivo de imagem contendo a imagem que será usado no fundo do relatório
137: */
138: public ReportBuilder(String[] tableHeaders,
139: String[][][] tableFields, String reportAddress,
140: String backgroundImgAddress) {
141: this .backgroundImgAddress = backgroundImgAddress;
142: this .reportAddress = reportAddress;
143: this .tableHeaders = tableHeaders;
144: this .tableFields = tableFields;
145: }
146:
147: /**
148: * Cria uma nova isntancia de ReportBuilder
149: *
150: * @param tableHeaders Cabeçalho da tabela que será impressa
151: * @param tableFields Dado a ser impresso organizado em uma matriz bidimensional
152: * @param reportAddress Local onde o arquivo html do relatório será gerado
153: */
154: public ReportBuilder(String[] tableHeaders,
155: String[][][] tableFields, String reportAddress) {
156: this .reportAddress = reportAddress;
157: this .tableHeaders = tableHeaders;
158: this .tableFields = tableFields;
159: }
160:
161: /**
162: * Cria uma nova isntancia de ReportBuilder
163: *
164: * @param reportAddress Local onde o arquivo html do relatório será gerado
165: */
166: public ReportBuilder(String reportAddress) {
167: this .reportAddress = reportAddress;
168: }
169:
170: /**
171: * Cria uma nova isntancia de ReportBuilder
172: *
173: * @param reportAddress Local onde o arquivo html do relatório será gerado
174: * @param resultSet Dados
175: */
176: public ReportBuilder(String reportAddress, ResultSet resultSet) {
177: this (reportAddress);
178: dados = resultSet;
179: }
180:
181: /**
182: * Gera o relatório.
183: *
184: * @param reportAddress Local onde o arquivo html do relatório será gerado
185: * @param width Largura a tabela/relatório que será gerado
186: */
187: public void generate(String reportAddress, int width) {
188: this .reportAddress = reportAddress;
189: generate(width);
190: }
191:
192: /**
193: * Gera o relatório.
194: *
195: * @param width Largura a tabela/relatório que será gerado
196: */
197: public void generate(int width) {
198: try {
199: FileWriter fw = new FileWriter(reportAddress + ".html");
200: PrintWriter out = new PrintWriter(new BufferedWriter(fw));
201:
202: out.println("<html>");
203: out.println("<head>");
204: out.println("<title>" + title + "</title>");
205: out.println("</head>");
206: out.println("<body background=\"" + backgroundImgAddress
207: + "\">");
208: out.println("<br><br>");
209: out.println("<div align=\"center\">");
210: out
211: .println("<table border=\"0\" width=\""
212: + width
213: + "\" cellspacing=\"0\" cellpadding=\"0\" height=\"79\">");
214: out.println("<tr>");
215: out.println("<td width=\"16\" height=\"55\"></td>");
216: out.println("<td width=\"450\" height=\"55\"><img src=\""
217: + timbreAddress + "\"></td>");
218: out
219: .println("<td width=\"350\" height=\"55\"><p align=\"right\"><font size=\"1\">"
220: + DateFormat.getDateTimeInstance(
221: DateFormat.FULL, DateFormat.MEDIUM)
222: .format(new Date())
223: + "</font></p></td>");
224: out.println("</tr>");
225: out.println("<tr>");
226: out
227: .println("<td width=\"920\" height=\"24\" colspan=\"3\">");
228: out.println("<p align=\"center\"><b><font size=\"4\">"
229: + title + "</font></b></td>");
230: out.println("</tr>");
231: out.println("</table>");
232: out.println("</div>");
233: out.println("<hr width=\"" + width + "\">");
234: out.println("<br>");
235:
236: out.println("<div align=\"center\">");
237:
238: if (dados == null) {
239: (new HTMLTable(out, false, width, tableHeaders,
240: tableFields)).build(false, 0);
241: } else {
242: (new HTMLTable(out, false, width, dados)).build(false,
243: 0);
244: }
245:
246: out.println("</div>");
247:
248: out.println("<hr width=\"" + width + "\">");
249: out.println("</body>");
250: out.println("</html>");
251:
252: out.flush();
253: fw.close();
254: } catch (Exception e) {
255: e.printStackTrace();
256: //Não deveria ocorrer exceção aqui
257: }
258: }
259: }
|