public ActionForward exibir(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {

    Orgao localOrgao = null;

    final String idOrgao = request.getParameter("id");
    OrgaoCtrl orgaoCtrl = new OrgaoCtrl(getDaoFactory());
    ConfiguracoesOrgaoCtrl configuracoesOrgaoCtrl = new ConfiguracoesOrgaoCtrl(getDaoFactory());

    if (idOrgao == null) {
      localOrgao = getOrgao(request);
    } else {
      localOrgao = orgaoCtrl.get(new Long(idOrgao));
    }

    ConfiguracoesOrgao configuracoes = localOrgao.getConfiguracoes();
    if (configuracoes == null) {
      configuracoes = new ConfiguracoesOrgao();
      request.setAttribute("function", "incluir");
    } else request.setAttribute("function", "alterar");

    request.setAttribute("orgao", localOrgao);
    request.setAttribute("configuracoes", configuracoes);

    request.setAttribute(
        "listaMeioEnvioRespostaTodos", configuracoesOrgaoCtrl.listarMeioEnvioResposta());

    request.setAttribute(
        "diretorioContextoAplicacao",
        configuracoesOrgaoCtrl.getParametrosGerais().getDiretorioContextoAplicacao());

    request.setAttribute(
        "listaDiretoriosCores",
        configuracoesOrgaoCtrl.listarDiretoriosCores(
            this.servlet.getServletContext().getRealPath("")));

    horaAgendadaAntiga = configuracoes.getHoraEnvioNotificacao();

    return mapping.findForward("exibir");
  }
  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")) {

        if ((OuvidoriaScheduler.sched == null)
            || (OuvidoriaScheduler.sched != null && !OuvidoriaScheduler.sched.isStarted())) {

          OuvidoriaScheduler.init(request);
        }
      }

    } catch (SchedulerException se) {

      se.printStackTrace();

    } catch (Exception e) {

      e.printStackTrace();
    }

    super.process(request, response);
  }
  /**
   * @param request
   * @param orgao
   */
  private void setOrgaoLayout(HttpServletRequest request, Orgao orgao) {

    LayoutBean layoutBean = (LayoutBean) request.getSession().getAttribute(Constants.SS_LAYOUT);

    if (layoutBean == null) {
      layoutBean = new LayoutBean();
    }

    layoutBean.setDiretorioOrgao(orgao.getConfiguracoes().getNomeDiretorioOrgao());

    layoutBean.setEsquemaCores("estilos/".concat(orgao.getConfiguracoes().getEsquemaCoresLayout()));

    layoutBean.setCorCabecalhoBanner(orgao.getConfiguracoes().getCorCabecalhoBanner());

    layoutBean.setCorCabecalhoLogo(orgao.getConfiguracoes().getCorCabecalhoLogo());

    layoutBean.setImagem3(
        "/"
            + orgao.getConfiguracoes().getNomeDiretorioOrgao()
            + "/images/"
            + orgao.getConfiguracoes().getImagem3());

    layoutBean.setImagem4(
        "/"
            + orgao.getConfiguracoes().getNomeDiretorioOrgao()
            + "/images/"
            + orgao.getConfiguracoes().getImagem4());

    layoutBean.setImagem5(
        "/"
            + orgao.getConfiguracoes().getNomeDiretorioOrgao()
            + "/images/"
            + orgao.getConfiguracoes().getImagem5());

    layoutBean.setImagemBanner(
        "/"
            + orgao.getConfiguracoes().getNomeDiretorioOrgao()
            + "/images/"
            + orgao.getConfiguracoes().getImagemBanner());

    layoutBean.setImagemLogo(
        "/"
            + orgao.getConfiguracoes().getNomeDiretorioOrgao()
            + "/images/"
            + orgao.getConfiguracoes().getImagemLogo());

    layoutBean.setDescricaoImagem3(orgao.getConfiguracoes().getDescricaoImagem3());

    layoutBean.setDescricaoImagem4(orgao.getConfiguracoes().getDescricaoImagem4());

    layoutBean.setDescricaoImagem5(orgao.getConfiguracoes().getDescricaoImagem5());

    layoutBean.setDescricaoImagemBanner(orgao.getConfiguracoes().getDescricaoImagemBanner());

    layoutBean.setDescricaoImagemLogo(orgao.getConfiguracoes().getDescricaoImagemLogo());

    layoutBean.setLinkImagem3(orgao.getConfiguracoes().getLinkImagem3());

    layoutBean.setLinkImagem4(orgao.getConfiguracoes().getLinkImagem4());

    layoutBean.setLinkImagem5(orgao.getConfiguracoes().getLinkImagem5());

    layoutBean.setLinkImagemBanner(orgao.getConfiguracoes().getLinkImagemBanner());

    layoutBean.setLinkImagemLogo(orgao.getConfiguracoes().getLinkImagemLogo());

    layoutBean.setNomeExibicaoOrgao(orgao.getConfiguracoes().getNomeExibicaoOrgao());

    request.getSession().setAttribute(Constants.SS_LAYOUT, layoutBean);
  }