package gcom.gui.util;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
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 que limpa a sess�o a cada vez que o usu�rio seleciona uma
* funcionalidade no menu
*
* @author Rafael Santos
*/
public class FiltroLimparSessao extends HttpServlet implements Filter {
private FilterConfig filterConfig;
private static final long serialVersionUID = 1L;
// Handle the passed-in FilterConfig
/**
* <<Descri��o do m�todo>>
*
* @param filterConfig
* Descri��o do par�metro
*/
public void init(FilterConfig filterConfig) {
setFilterConfig(filterConfig);
}
// Process the request/response pair
/**
* <<Descri��o do m�todo>>
*
* @param request
* Descri��o do par�metro
* @param response
* Descri��o do par�metro
* @param filterChain
* Descri��o do par�metro
* @throws ServletException
* @throws IOException
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
try {
String url = ((HttpServletRequest) request).getServletPath();
if (/*(url.startsWith("/Exibir") || url.startsWith("/exibir")) && */url.endsWith(".do")) {
HttpServletRequest requestPagina = ((HttpServletRequest) request);
HttpSession sessao = requestPagina.getSession(false);
if (requestPagina.getParameter("menu") != null
&& requestPagina.getParameter("menu").equals("sim")) {
Enumeration parametrosSessao = requestPagina.getSession(false)
.getAttributeNames();
while (parametrosSessao.hasMoreElements()) {
String nomeParametro = (String) parametrosSessao
.nextElement();
if (nomeParametro.equalsIgnoreCase("menuGCOM")
|| nomeParametro
.equalsIgnoreCase("arvoreFuncionalidades")
|| nomeParametro
.equalsIgnoreCase("usuarioLogado")
|| nomeParametro.equalsIgnoreCase("dataAtual")
|| nomeParametro
.equalsIgnoreCase("dataUltimoAcesso")
|| nomeParametro
.equalsIgnoreCase("colecaoGruposUsuario")
|| nomeParametro
.equalsIgnoreCase("ultimosAcessos")
|| nomeParametro
.equalsIgnoreCase("mensagemExpiracao")
|| nomeParametro
.equalsIgnoreCase("org.apache.struts.action.LOCALE")
|| nomeParametro
.equalsIgnoreCase("gisHelper")
|| nomeParametro
.equalsIgnoreCase("gis")) {
continue;
} else {
sessao.removeAttribute(nomeParametro);
}
}
}
}
filterChain.doFilter(request, response);
} catch (ServletException sx) {
throw sx;
} catch (IOException iox) {
throw iox;
}
}
// Clean up resources
/**
* <<Descri��o do m�todo>>
*/
public void destroy() {
}
public FilterConfig getFilterConfig() {
return filterConfig;
}
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
}