Package accounts.web

Source Code of accounts.web.ReportJasperController

package accounts.web;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import accounts.ReportManager;

@Controller
public class ReportJasperController {

  @Autowired
  private ReportManager reportManager;
 
  @RequestMapping("/accountReport.pdf")
  public void generatePDFJasperReport(HttpServletRequest request, HttpServletResponse response) throws JRException, IOException{
    generateJasperReport("pdf", request, response);
  }
 
  @RequestMapping("/accountReport.xls")
  public void generateXLSJasperReport(HttpServletRequest request, HttpServletResponse response) throws JRException, IOException{
    generateJasperReport("xls", request, response);
  }
 
  @RequestMapping("/accountReport.xlsx")
  public void generateXLSXJasperReport(HttpServletRequest request, HttpServletResponse response) throws JRException, IOException{
    generateJasperReport("xlsx", request, response);
  }
 
  public void generateJasperReport(String reportType, HttpServletRequest request,
      HttpServletResponse response) throws JRException, IOException{
   
    Map<String, Object> parameters = new HashMap<String, Object>();
    InputStream imageStream = request.getSession().getServletContext().getResourceAsStream("/report/coffee.jpg");
    parameters.put("REPORT_IMAGE", imageStream);
    parameters.put("REPORT_TITLE", "Accounts");
   
    List<Map<String, Object>> accounts = reportManager.getAllAccounts();
    JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(accounts);
   
    InputStream reportStream = request.getSession().getServletContext().getResourceAsStream("/report/AccountsReport.jasper");
    OutputStream outStream = response.getOutputStream();
    if(reportType.equalsIgnoreCase("pdf")){
     
      byte[] byteStream = JasperRunManager.runReportToPdf(reportStream, parameters, ds);
      response.setHeader("Content-Disposition","inline, filename=Accounts.pdf");
      response.setContentType("application/pdf");
      response.setContentLength(byteStream.length);
      outStream.write(byteStream, 0, byteStream.length);
    }
    else if(reportType.equalsIgnoreCase("xlsx")){
   
      JasperPrint jasperPrint = JasperFillManager.fillReport (reportStream, parameters, ds);
      response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
      response.setHeader("Content-Disposition","attachment; filename=\""+ "Accounts.xlsx" + "\"");
      JRXlsxExporter exporterXls = new JRXlsxExporter();
      exporterXls.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
      exporterXls.setParameter(JRExporterParameter.OUTPUT_STREAM, outStream);
      exporterXls.exportReport();
    }
    else{
     
      JasperPrint jasperPrint = JasperFillManager.fillReport (reportStream, parameters, ds);
      response.setContentType("application/vnd.ms-excel");
      response.setHeader("Content-Disposition","attachment; filename=\""+ "Accounts.xls" + "\"");
      JRXlsExporter exporterXls = new JRXlsExporter ();
      exporterXls.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
      exporterXls.setParameter(JRExporterParameter.OUTPUT_STREAM, outStream);
      exporterXls.exportReport();
    }
   
    outStream.flush();
    outStream.close();
  }
}
TOP

Related Classes of accounts.web.ReportJasperController

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.