package gcom.gui.relatorio.arrecadacao; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.relatorio.RelatorioUtil; import gcom.relatorio.arrecadacao.dto.ResumoCreditosAvisosBancariosDTO; import gcom.relatorio.cliente.FormatoRelatorio; import gcom.relatorio.cliente.ReportItemDTO; import gcom.util.IoUtil; import gcom.util.Util; public class GerarRelatorioResumoCreditosAvisosBancariosAction extends GcomAction { @Override public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { GerarRelatorioResumoCreditosAvisosBancariosActionForm form = (GerarRelatorioResumoCreditosAvisosBancariosActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); String data = form.getDataConsulta().replace("/", "-"); String nomeRelatorio = "resumo_creditos_avisos_bancarios_" + data + ".pdf"; RelatorioUtil relatorioUtil = new RelatorioUtil( "Resumo de Creditos dos Avisos Bancarios", nomeRelatorio, ResumoCreditosAvisosBancariosDTO.class, FormatoRelatorio.PDF); List<ResumoCreditosAvisosBancariosDTO> resumos = fachada.pesquisarResumoCreditosAvisosBancarios(Util.converteStringParaDate(form.getDataConsulta())); if (resumos == null || resumos.isEmpty()) { throw new ActionServletException("atencao.relatorio.vazio"); } List<ReportItemDTO> itens = new ArrayList<ReportItemDTO>(); itens.addAll(resumos); File relatorio = gerar(relatorioUtil, itens); downloadRelatorio(response, relatorio); return null; } private File gerar(RelatorioUtil relatorioUtil, List<ReportItemDTO> itens) { File relatorio = null; try { relatorio = relatorioUtil.gerarRelatorio(itens); } catch (MalformedURLException e) { e.printStackTrace(); throw new ActionServletException("atencao.erro_baixar_relatorio"); } catch (IOException e) { e.printStackTrace(); throw new ActionServletException("atencao.erro_baixar_relatorio"); } return relatorio; } private void downloadRelatorio(HttpServletResponse response, File relatorio) { try { response.setContentType(FormatoRelatorio.PDF.getContentType()); response.addHeader("Content-Disposition", "attachment; filename=" + relatorio.getName()); ServletOutputStream sos = response.getOutputStream(); sos.write(IoUtil.getBytesFromFile(relatorio)); sos.flush(); sos.close(); relatorio.delete(); } catch (IOException e) { e.printStackTrace(); throw new ActionServletException("atencao.erro_baixar_relatorio"); } } }