public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
Orgao orgao = null;
OrgaoCtrl orgaoCtrl = new OrgaoCtrl(daoFactory);
// Instancia a sessao
HttpSession session = request.getSession(true);
boolean flagPesquisa = false;
// se houverem dados de pesquisa na sessao entao starta o flag
if (session.getAttribute("possuiPesquisa") != null) {
if (session.getAttribute("possuiPesquisa").equals("sim")) {
flagPesquisa = true;
}
}
if (flagPesquisa) {
int caminho = 0;
// qq um desses links preservam os dados da sessao
if ((request.getServletPath()
.equals("/andamento/ExibeMsgPorRespons.do"))
|| (request.getServletPath()
.equals("/andamento/ConsultaSolucoes.do"))
|| (request.getServletPath()
.equals("/andamento/ConsultarBancoScriptsMsg.do"))
|| (request.getServletPath()
.equals("/andamento/RedirecionarMensagem.do"))
|| (request.getServletPath()
.equals("/andamento/ReclassificarMensagem.do"))
|| (request.getServletPath()
.equals("/andamento/ConfirmaResposta.do"))
|| (request.getServletPath()
.equals("/andamento/RespondeAcionamento.do"))
|| (request.getServletPath()
.equals("/andamento/ConsultaMsgPorRespons.do"))
|| (request.getServletPath()
.equals("/andamento/SalvaRascunhoResp.do"))
|| (request.getServletPath()
.equals("/andamento/ListaMsgPorRespons.do"))
|| (request.getServletPath()
.equals("/andamento/ConfirmaRedirecionarMensagem.do"))
) {
caminho = 1;
}
switch (caminho) {
case 0:
// caso saia da tela, então a sessao é limpa
limpaSessao(request, session);
break;
case 1:
break;
}
}
// obter o ID da sessão
String orgaoSessionId = request.getParameter(Constants.ID_SESSAO_ORGAO);
if (orgaoSessionId == null) {
// verificar se a sessão expirou
if (request.getSession() == null) {
doForward(Constants.LOGIN_EXPIRED_ACTION, request, response);
return;
}
// tentar obter o ID do atributo correspondente na sessão
orgaoSessionId = (String) request.getSession().getAttribute(
Constants.ID_SESSAO_ORGAO);
// se não achou o ID no atributo da sessão, procurar pelo cookie
if (orgaoSessionId == null) {
Cookie[] cookies = request.getCookies();
for (int i = 0; (cookies != null && i < cookies.length); i++) {
Cookie cookie = cookies[i];
if (cookie.getName().equals(Constants.ID_SESSAO_ORGAO)) {
orgaoSessionId = cookie.getValue();
}
}
}
}
// se não obteve o ID, redirecionar o usuário para página adequada
if (orgaoSessionId == null) {
doForward(Constants.NOT_FOUND_PAGE, request, response);
return;
}
// obter o órgão
orgao = orgaoCtrl.get(orgaoSessionId);
if (orgao == null) {
doForward(Constants.NOT_FOUND_PAGE, request, response);
return;
}
/* adiciono o sessionId na sessão */
HttpSession ses = request.getSession(true);
ses.setAttribute(Constants.ID_SESSAO_ORGAO, orgaoSessionId);
ses.setAttribute("_ORGAO_", new OrgaoDto(orgao));
/* adiciono um cookie com o id do orgão */
if (orgaoSessionId != null) {
Cookie cookie = new Cookie(Constants.ID_SESSAO_ORGAO,
orgaoSessionId);
cookie.setPath("/");
response.addCookie(cookie);
}
/*
* adiciono um cookie com um identificador único para verificação do
* timeout da sessão
*/
if (request.getSession().getAttribute(Constants.PA_FUNCIONARIO) != null) {
Cookie cookie = new Cookie(Constants.PA_EXPIRE, String
.valueOf(System.currentTimeMillis()));
cookie.setPath("/");
response.addCookie(cookie);
}
/* adiciono o layout à sessão */
setOrgaoLayout(request, orgao);
try {
ConfiguracoesOrgao configuracaoes = orgao.getConfiguracoes();
request.setAttribute("configuracoes", configuracaoes);
if (configuracaoes.getNotificacaoEmail() != null
&& configuracaoes.getNotificacaoEmail().equals("S")) {