package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.ArquivoTextoAcompanhamentoServico; import gcom.atendimentopublico.ordemservico.FiltroArquivoTextoAcompanhamentoServico; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.util.filtro.ParametroSimples; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Collection; 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; /** * Action para Retornar o Arquivo Texto do Acompanhamento de Arquivos de Roteiro Compactado * * @author Th�lio Ara�jo * @since 02/08/2011 */ public class RetornarArquivoTxtAcompanhamentoArqRoteiroAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = null; Fachada fachada = Fachada.getInstancia(); String idArquivo = httpServletRequest.getParameter("idRegistroAtualizacao"); FiltroArquivoTextoAcompanhamentoServico filtroArquivoTextoAcompanhamentoServico = new FiltroArquivoTextoAcompanhamentoServico(); filtroArquivoTextoAcompanhamentoServico.adicionarParametro(new ParametroSimples(FiltroArquivoTextoAcompanhamentoServico.ID, idArquivo)); Collection<?> colecaoArquivoTxtAcompanhamentoServico = fachada.pesquisar( filtroArquivoTextoAcompanhamentoServico, ArquivoTextoAcompanhamentoServico.class.getName()); ArquivoTextoAcompanhamentoServico arquivoTextoAcompanhamentoServico = (ArquivoTextoAcompanhamentoServico) colecaoArquivoTxtAcompanhamentoServico .iterator().next(); String nomeArquivo = fachada.nomeArquivoAcompanhamentoServico(arquivoTextoAcompanhamentoServico.getEquipe().getId()); try { boolean arquivoPossuiExtensaoGZ = nomeArquivo.toUpperCase() .endsWith(".GZ"); // se o arquivo n�o possuir extens�o GZ if (!arquivoPossuiExtensaoGZ) { File temporario = File.createTempFile("temporario", ".txt"); FileOutputStream outputStream = new FileOutputStream(temporario); outputStream.write( fachada.gerarArquivoTextoOrdensServicoAcompanhamentoEquipe( arquivoTextoAcompanhamentoServico.getEquipe().getId(), arquivoTextoAcompanhamentoServico.getDataProgramacao(),true, false)); outputStream.close(); FileInputStream inputStream = new FileInputStream(temporario); int INPUT_BUFFER_SIZE = 1024; byte[] temp = new byte[INPUT_BUFFER_SIZE]; int numBytesRead = 0; ByteArrayOutputStream arquivo = new ByteArrayOutputStream(); while ((numBytesRead = inputStream.read(temp, 0, INPUT_BUFFER_SIZE)) != -1) { arquivo.write(temp, 0, numBytesRead); } inputStream.close(); inputStream = null; arquivo.close(); httpServletResponse.setContentType("text/plain"); httpServletResponse.addHeader("Content-Disposition", "attachment; filename="+nomeArquivo); ServletOutputStream out; out = httpServletResponse.getOutputStream(); out.write(arquivo.toByteArray()); out.flush(); out.close(); }else{ httpServletResponse.setContentType("application/zip"); httpServletResponse.addHeader("Content-Disposition", "attachment; filename="+ nomeArquivo ); ServletOutputStream out; out = httpServletResponse.getOutputStream(); // if ( arquivoTextoRoteiroEmpresa.getArquivoTextoNaoRecebido() != null ){ // out.write( arquivoTextoRoteiroEmpresa.getArquivoTextoNaoRecebido() ); // } else { // out.write( arquivoTextoRoteiroEmpresa.getArquivoTexto() ); // } out.flush(); out.close(); } } catch (IOException e) { reportarErros(httpServletRequest, "erro.sistema"); } return retorno; } }