package gcom.gui.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* Filtro respons�vel por verificar se a sess�o do usu�rio expirou o tempo
*
* @author Pedro Alexandre
* @date 05/07/2006
*/
public class FiltroSessaoExpirada extends HttpServlet implements Filter {
// Vari�vel que vai armazenar a configura��o do filtro
private FilterConfig filterConfig;
private static final long serialVersionUID = 1L;
/**
* <Breve descri��o sobre o caso de uso>
*
* @author Pedro Alexandre
* @date 05/07/2006
*
* @param filterConfig
*/
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
/**
* <Breve descri��o sobre o caso de uso>
*
* @author Pedro Alexandre
* @date 05/07/2006
*
* @param request
* @param response
* @param filterChain
* @throws ServletException
* @throws IOException
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
try {
// Faz um cast no request para recuperar a sess�o do usu�rio
HttpServletRequest requestPagina = ((HttpServletRequest) request);
HttpSession sessao = requestPagina.getSession(false);
// Recupera a url do request
String enderecoURL = requestPagina.getServletPath();
// Caso a sess�o esteja nula(expirou) redireciona o usu�rio para a
// p�gina de sess�o expirada
// Caso contr�rio chama o pr�ximo filtro do web.xml se existir
if (sessao == null
&& (!enderecoURL
.contains("exibirEmitirSegundaViaContaInternetAcessoGeralAction")
&& !enderecoURL
.contains("emitirSegundaViaContaInternetAcessoGeralAction")
&& !enderecoURL
.contains("enviarDadosBancosAcessoGeralAction")
&& !enderecoURL
.contains("exibirSelecionarBancoAction")
&& !enderecoURL.contains("enviarDadosBancosAction")
&& !enderecoURL
.contains("exibirSelecionarBancoAcessoGeralAction")
&& !enderecoURL
.contains("exibirLogTelaInicialAction")
&& !enderecoURL
.contains("exibirLogTelaFinalAction")
&& !enderecoURL
.contains("processarRequisicaoDipositivoMovelAction")
&& !enderecoURL
.contains("processarRequisicaoTelemetriaAction")
&& !enderecoURL.contains("efetuarLoginAction")
&& !enderecoURL
.contains("processarRequisicaoGisAction")
&& !enderecoURL
.contains("processarCoordenadasGisAction")
&& !enderecoURL
.contains("processarRequisicaoDipositivoMovelImpressaoSimultaneaAction")
&& !enderecoURL
.contains ("processarRequisicaoDispositivoMovelAcompanhamentoServicoAction")
&& !enderecoURL
.contains("exibirInserirCadastroEmailClienteAction")
&& !enderecoURL
.contains("inserirCadastroEmailClienteAction")
&& !enderecoURL
.contains("gerarRelatorio2ViaContaAction")
&& !enderecoURL
.contains("exibirInserirCadastroContaBraileAction")
&& !enderecoURL
.contains("inserirCadastroContaBraileAction")
&& !enderecoURL
.contains("exibirServicosPortalCompesaAction")
&& !enderecoURL
.contains("inserirCadastroContaBrailePortalAction")
&& !enderecoURL
.contains("exibirInserirSolicitacaoServicosPortalAction")
&& !enderecoURL
.contains("inserirSolicitacaoServicosPortalAction")
&& !enderecoURL
.contains("exibirInserirCadastroContaBrailePortalAction")
&& !enderecoURL
.contains("inserirCadastroEmailClientePortalAction")
&& !enderecoURL
.contains("exibirInserirCadastroEmailClientePortalAction")
&& !enderecoURL
.contains("emitirSegundaViaContaAction")
&& !enderecoURL
.contains("exibirCanaisAtendimentoCompesaAction")
&& !enderecoURL
.contains("exibirQuestionarioSatisfacaoAction")
&& !enderecoURL
.contains("questionarioSatisfacaoAction")
&& !enderecoURL
.contains("exibirInformacoesPortalCompesaAction")
&& !enderecoURL
.contains("exibirInformacoesTarifaSocialPortalCompesaAction")
&& !enderecoURL
.contains("exibirInformacoesNegociacaoDebitosPortalCompesaAction")
&& !enderecoURL
.contains("exibirNormasInstalacaoPortalCompesaAction")
&& !enderecoURL
.contains("exibirCalendarioAbastecimentoPortalCompesaAction")
&& !enderecoURL.
contains("exibirEfetuarParcelamentoDebitosPortalAction")
&& !enderecoURL.
contains("efetuarParcelamentoDebitosPortalAction")
&& !enderecoURL.
contains("exibirLojasAtendimentoPresencialPortalCompesaAction")
&& !enderecoURL.
contains("exibirConsultarEstruturaTarifariaPortalAction")
)) {
RequestDispatcher rd = filterConfig.getServletContext()
.getRequestDispatcher("/jsp/util/sessao_expirada.jsp");
rd.forward(request, response);
} else {
if (enderecoURL
.contains("exibirEmitirSegundaViaContaInternetAcessoGeralAction")) {
// Cria uma sessao temporaria para o usuario que entra no
// EmitirSegundaViaContaInternet sem logar no sistema
sessao = requestPagina.getSession(true);
}
filterChain.doFilter(request, response);
}
} catch (ServletException sx) {
throw sx;
} catch (IOException iox) {
throw iox;
}
}
/**
* <Breve descri��o sobre o caso de uso>
*
* @author Pedro Alexandre
* @date 05/07/2006
*
*/
public void destroy() {
}
}