/*******************************************************************************
* Copyright (c) 2009 Daniel Grout.
*
* GNU GENERAL PUBLIC LICENSE - Version 3
*
* This file is part of Report Runner (http://code.google.com/p/reportrunner).
*
* Report Runner is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Report Runner is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Report Runner. If not, see <http://www.gnu.org/licenses/>.
*
* Module: StandardRenderer.java
******************************************************************************/
package binky.reportrunner.engine.renderers;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import binky.reportrunner.data.RunnerJob.FileFormat;
import binky.reportrunner.engine.renderers.exporters.AbstractExporter;
import binky.reportrunner.engine.renderers.exporters.CSVExporter;
import binky.reportrunner.engine.renderers.exporters.HTMLExporter;
import binky.reportrunner.engine.renderers.exporters.PDFExporter;
import binky.reportrunner.engine.renderers.exporters.TabbedXLSExporter;
import binky.reportrunner.engine.renderers.exporters.XLSExporter;
import binky.reportrunner.exceptions.RenderException;
public class StandardRenderer extends AbstractRenderer {
AbstractExporter exporter;
public StandardRenderer(FileFormat format) {
super(format);
switch (format) {
case CSV:
this.exporter = new CSVExporter();
break;
case HTML:
this.exporter = new HTMLExporter();
break;
case XLS:
this.exporter = new XLSExporter();
break;
case TABBED_XLS:
this.exporter = new TabbedXLSExporter();
break;
case PDF:
default:
this.exporter = new PDFExporter();
}
logger.debug("setup standard renderer for format: "+format);
}
@Override
public void generateReport(ResultSet resultSet, String label,String url) throws RenderException, SQLException {
logger.debug("generating report");
try {
this.exporter.export(resultSet,label, super.getOutputStream(url));
}catch (IOException e) {
throw new RenderException(e.getMessage(), e);
} finally {
resultSet.close();
}
}
private static final Logger logger = Logger.getLogger(StandardRenderer.class);
@Override
protected void doFinal() throws IOException ,RenderException{
logger.trace("trigging write data");
if (format==FileFormat.TABBED_XLS) ((TabbedXLSExporter)exporter).writeData();
}
}