Package com.ponysdk.jasper.export

Source Code of com.ponysdk.jasper.export.PDFExporter

package com.ponysdk.jasper.export;

import java.awt.Color;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ar.com.fdvs.dj.core.DynamicJasperHelper;
import ar.com.fdvs.dj.core.layout.ClassicLayoutManager;
import ar.com.fdvs.dj.domain.DynamicReport;
import ar.com.fdvs.dj.domain.Style;
import ar.com.fdvs.dj.domain.builders.FastReportBuilder;
import ar.com.fdvs.dj.domain.constants.Border;
import ar.com.fdvs.dj.domain.constants.HorizontalAlign;
import ar.com.fdvs.dj.domain.constants.Page;
import ar.com.fdvs.dj.domain.constants.VerticalAlign;

import com.ponysdk.core.StreamResource;
import com.ponysdk.core.event.StreamHandler;
import com.ponysdk.core.export.ExportableField;
import com.ponysdk.core.export.Exporter;

public class PDFExporter<T> implements Exporter<T> {

    private static final Logger log = LoggerFactory.getLogger(PDFExporter.class);

    private static final String NAME = "PDF";

    protected final String fileName;

    protected final String title;

    public PDFExporter(final String title, final String fileName) {
        this.fileName = fileName;
        this.title = title;
    }

    @Override
    public String name() {
        return NAME;
    }

    @Override
    public String export(final List<ExportableField> exportableFields, final List<T> records) throws Exception {
        // Dynamic report
        final FastReportBuilder drb = new FastReportBuilder();

        // Style header
        final Style headerStyle = new Style();
        headerStyle.setVerticalAlign(VerticalAlign.MIDDLE);
        headerStyle.setHorizontalAlign(HorizontalAlign.CENTER);
        headerStyle.setTransparent(false);
        headerStyle.setBackgroundColor(Color.LIGHT_GRAY);
        headerStyle.setBorder(Border.THIN);

        // Style column
        final Style columnStyle = new Style();
        columnStyle.setVerticalAlign(VerticalAlign.MIDDLE);
        columnStyle.setHorizontalAlign(HorizontalAlign.CENTER);
        columnStyle.setBorder(Border.THIN);

        // Add column
        for (final ExportableField exportableField : exportableFields) {
            drb.addColumn(exportableField.getCaption(), exportableField.getKey(), String.class, 10, columnStyle, headerStyle);
        }

        drb.setTitle(title);
        // drb.setPrintBackgroundOnOddRows(true);
        drb.setUseFullPageWidth(true);
        drb.setPageSizeAndOrientation(Page.Page_A4_Landscape());

        final DynamicReport dynamicReport = drb.build();

        // Simple report
        final JasperReport report = DynamicJasperHelper.generateJasperReport(dynamicReport, new ClassicLayoutManager(), new HashMap<Object, Object>());

        final byte[] reportBytes = JasperRunManager.runReportToPdf(report, new HashMap<Object, Object>(), new DynamicExportDataSource(records));

        // Set MIME type to binary data to prevent opening of PDF in browser window
        final StreamResource streamResource = new StreamResource();
        streamResource.open(new StreamHandler() {

            @Override
            public void onStream(final HttpServletRequest req, final HttpServletResponse response) {
                response.reset();
                response.setContentType("application/pdf");
                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
                try {
                    final OutputStream outputStream = response.getOutputStream();
                    outputStream.write(reportBytes);
                    outputStream.flush();
                    outputStream.close();
                } catch (final IOException e) {
                    log.error("Error when exporting", e);
                }
            }
        });
        return "";
    }
    // private static <T> void exportPDF(final String fileName, String jasperReport, List<T> records) throws
    // Exception {
    // final JRDataSource dsource = new JRBeanCollectionDataSource(records);
    // final byte[] reportBytes =
    // JasperRunManager.runReportToPdf(dsource.getClass().getClassLoader().getResourceAsStream(jasperReport),
    // null, dsource);
    //
    // // Set MIME type to binary data to prevent opening of PDF in browser window
    // final StreamResource streamResource = new StreamResource();
    // streamResource.open(new StreamHandler() {
    //
    // @Override
    // public void onStream(HttpServletRequest req, HttpServletResponse response) {
    // response.reset();
    // response.setContentType("application/pdf");
    // response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
    // try {
    // final OutputStream outputStream = response.getOutputStream();
    // outputStream.write(reportBytes);
    // outputStream.flush();
    // outputStream.close();
    // } catch (final IOException e) {
    // log.error("Error when exporting", e);
    // }
    // }
    // });
    //
    // }

}
TOP

Related Classes of com.ponysdk.jasper.export.PDFExporter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.