TelaSucessoRelatorioAction.java 5.24 KB
/*
 * Copyright (C) 2007-2007 the GSAN - Sistema Integrado de Gestão de Serviços de Saneamento
 *
 * This file is part of GSAN, an integrated service management system for Sanitation
 *
 * GSAN is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License.
 *
 * GSAN is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 */

/*
 * GSAN - Sistema Integrado de Gestão de Serviços de Saneamento
 * Copyright (C) <2007> 
 * Adriano Britto Siqueira
 * Alexandre Santos Cabral
 * Ana Carolina Alves Breda
 * Ana Maria Andrade Cavalcante
 * Aryed Lins de Araújo
 * Bruno Leonardo Rodrigues Barros
 * Carlos Elmano Rodrigues Ferreira
 * Cláudio de Andrade Lira
 * Denys Guimarães Guenes Tavares
 * Eduardo Breckenfeld da Rosa Borges
 * Fabíola Gomes de Araújo
 * Flávio Leonardo Cavalcanti Cordeiro
 * Francisco do Nascimento Júnior
 * Homero Sampaio Cavalcanti
 * Ivan Sérgio da Silva Júnior
 * José Edmar de Siqueira
 * José Thiago Tenório Lopes
 * Kássia Regina Silvestre de Albuquerque
 * Leonardo Luiz Vieira da Silva
 * Márcio Roberto Batista da Silva
 * Maria de Fátima Sampaio Leite
 * Micaela Maria Coelho de Araújo
 * Nelson Mendonça de Carvalho
 * Newton Morais e Silva
 * Pedro Alexandre Santos da Silva Filho
 * Rafael Corrêa Lima e Silva
 * Rafael Francisco Pinto
 * Rafael Koury Monteiro
 * Rafael Palermo de Araújo
 * Raphael Veras Rossiter
 * Roberto Sobreira Barbalho
 * Rodrigo Avellar Silveira
 * Rômulo Aurélio de Melo Souza Filho
 * Rosana Carvalho Barbosa
 * Sávio Luiz de Andrade Cavalcante
 * Tai Mu Shih
 * Thiago Augusto Souza do Nascimento
 * Tiago Moreno Rodrigues
 * Vivianne Barbosa Sousa
 *
 * Este programa é software livre; você pode redistribuí-lo e/ou
 * modificá-lo sob os termos de Licença Pública Geral GNU, conforme
 * publicada pela Free Software Foundation; versão 2 da
 * Licença.
 * Este programa é distribuído na expectativa de ser útil, mas SEM
 * QUALQUER GARANTIA; sem mesmo a garantia implícita de
 * COMERCIALIZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM
 * PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais
 * detalhes.
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU
 * junto com este programa; se não, escreva para Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307, USA.
 */
package gcom.util;

import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.RelatorioProcessado;
import gcom.tarefa.TarefaRelatorio;

import java.io.IOException;
import java.io.OutputStream;

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

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * Descrição da classe
 * 
 * @author Rômulo Aurélio, André Miranda
 * @date 17/03/2009, 15/06/2015
 */
public class TelaSucessoRelatorioAction extends
		ExibidorProcessamentoTarefaRelatorio {

	public ActionForward execute(ActionMapping actionMapping,
			ActionForm actionForm, HttpServletRequest request,
			HttpServletResponse response) {

		ActionForward retorno = null;
		HttpSession sessao = request.getSession(false);
		try {
			OutputStream out = null;
			String mimeType = null;
			String nomeArquivo = (String) sessao.getAttribute("nomeArquivo");
			String tipoRelatorio = (String) sessao.getAttribute("tipoRelatorio");
			RelatorioProcessado relatorioProcessado = (RelatorioProcessado) sessao
					.getAttribute("relatorioProcessado");

			sessao.removeAttribute("nomeArquivo");
			if(Util.verificarVazio(nomeArquivo)) {
				nomeArquivo = null;
			}

			switch (Integer.parseInt(tipoRelatorio)) {
			case TarefaRelatorio.TIPO_PDF:
				nomeArquivo = nomeArquivo == null ? "relatorio.pdf" : nomeArquivo;
				mimeType = "application/pdf";
				break;
			case TarefaRelatorio.TIPO_RTF:
				nomeArquivo = nomeArquivo == null ? "relatorio.rtf" : nomeArquivo;
				mimeType = "application/rtf";
				break;
			case TarefaRelatorio.TIPO_XLS:
				nomeArquivo = nomeArquivo == null ? "relatorio.xls" : nomeArquivo;
				mimeType = "application/vnd.ms-excel";
				break;
			case TarefaRelatorio.TIPO_HTML:
				nomeArquivo = nomeArquivo == null ? "relatorio.zip" : nomeArquivo;
				mimeType = "application/zip";
				break;
			case TarefaRelatorio.TIPO_TXT:
				nomeArquivo = nomeArquivo == null ? "relatorio.txt" : nomeArquivo;
				mimeType = "text/plain";
				break;
			}

			response.addHeader("Content-Disposition", "attachment; filename=" + nomeArquivo);
			response.setContentType(mimeType);
			response.setContentLength(relatorioProcessado.getDados().length);
			out = response.getOutputStream();

			out.write(relatorioProcessado.getDados());
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return retorno;
	}
}