/**
* Licensed under the Artistic License; you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://displaytag.sourceforge.net/license.html
*
* THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.displaytag.export;
import java.io.OutputStream;
import javax.servlet.jsp.JspException;
import org.displaytag.Messages;
import org.displaytag.exception.BaseNestableJspTagException;
import org.displaytag.exception.SeverityEnum;
import org.displaytag.model.TableModel;
import org.displaytag.render.ItextTableWriter;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.PageSize;
import com.lowagie.text.Table;
/**
* Exporter using iText: subclasses export to any of the iText document types, such as PDF and RTF.
* @author Jorge L. Barroso
* @version $Revision$ ($Author$)
*/
public abstract class DefaultItextExportView implements BinaryExportView
{
/**
* TableModel to render.
*/
private TableModel model;
/**
* @see org.displaytag.export.ExportView#setParameters(TableModel, boolean, boolean, boolean)
*/
public void setParameters(TableModel tableModel, boolean exportFullList, boolean includeHeader,
boolean decorateValues)
{
this.model = tableModel;
}
/**
* @see org.displaytag.export.BaseExportView#getMimeType() Meant to be overwritten by subclasses.
* @return null
*/
public String getMimeType()
{
return null;
}
/**
* @see org.displaytag.export.BinaryExportView#doExport(OutputStream)
*/
public void doExport(OutputStream out) throws JspException
{
try
{
Document document = new Document(PageSize.A4.rotate(), 60, 60, 40, 40);
this.initItextWriter(document, out);
document.open();
Table table = new Table(this.model.getNumberOfColumns());
ItextTableWriter writer = new ItextTableWriter(table, document);
writer.writeTable(this.model, "-1");
document.add(table);
document.close();
}
catch (Exception e)
{
throw new ItextGenerationException(e);
}
}
/**
* Initializes the iText writer used by export view to write iText document, such as PDF or RTF iText writer.
* @param document The iText document to be written.
* @param out The output stream to which the document is written.
* @throws DocumentException If something goes wrong during initialization.
*/
protected abstract void initItextWriter(Document document, OutputStream out) throws DocumentException;
/**
* Wraps iText-generated exceptions.
* @author Fabrizio Giustina
* @version $Revision$ ($Author$)
*/
static class ItextGenerationException extends BaseNestableJspTagException
{
/**
* D1597A17A6.
*/
private static final long serialVersionUID = 899149338534L;
/**
* Instantiate a new PdfGenerationException with a fixed message and the given cause.
* @param cause Previous exception
*/
public ItextGenerationException(Throwable cause)
{
super(DefaultItextExportView.class, Messages.getString("DefaultItextExportView.errorexporting"), cause); //$NON-NLS-1$
this.initCause(cause);
}
/**
* @see org.displaytag.exception.BaseNestableJspTagException#getSeverity()
*/
public SeverityEnum getSeverity()
{
return SeverityEnum.ERROR;
}
}
}