public void processFormActionAndForward(
      final HttpServletRequest request,
      final HttpServletResponse response,
      final ActionMapping mapping)
      throws ServletException, IOException {
    ActionForm form = processActionForm(request, response, mapping);
    processPopulate(request, response, form, mapping);

    // Create or acquire the Action instance to process this request
    Action action = processActionCreate(request, response, mapping);

    if (action != null) {
      // Call the Action instance itself
      ActionForward forward = processActionPerform(request, response, action, form, mapping);

      if (forward != null) {
        if (forward.getRedirect()
            && forward.getName() != null
            && forward.getName().equals(KRADConstants.KRAD_INITIATED_DOCUMENT_VIEW_NAME)) {
          LOG.info("Attempt to open a document with a status of \"Initiated\" detected");
          return;
        }
        // ProcessDefinition the returned ActionForward instance
        processForwardConfig(request, response, forward);
      }
    }
  }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    ManutencaoRegistroActionForm manutencaoRegistroActionForm =
        (ManutencaoRegistroActionForm) actionForm;

    String[] ids = manutencaoRegistroActionForm.getIdRegistrosRemocao();

    ActionForward retorno = actionMapping.findForward("telaSucesso");

    Fachada fachada = Fachada.getInstancia();

    if (ids == null || ids.length == 0) {
      throw new ActionServletException("atencao.registros.nao_selecionados");
    }

    fachada.remover(ids, FuncionarioCargo.class.getName(), null, null);

    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(
          httpServletRequest,
          ids.length + " Cargo(s) do(s) Funcionário(s) removido(s) com sucesso.",
          "Realizar outra Manutenção no Cargo do Funcionário",
          "exibirFiltrarCargoFuncionarioAction.do?menu=sim");
    }

    return retorno;
  }
Exemple #3
0
  /**
   * Need to suppress buttons here when 'Totals' tab is clicked.
   *
   * @see
   *     org.kuali.core.web.struts.action.KualiDocumentActionBase#execute(org.apache.struts.action.ActionMapping,
   *     org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest,
   *     javax.servlet.http.HttpServletResponse)
   */
  @Override
  public ActionForward execute(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {
    final BudgetForm budgetForm = (BudgetForm) form;
    if (budgetForm.getMethodToCall().equals("close")) {
      setupDocumentExit();
    }
    ActionForward actionForward = null;

    actionForward = super.execute(mapping, budgetForm, request, response);

    if (actionForward != null) {
      if ("summaryTotals".equals(actionForward.getName())) {
        budgetForm.suppressButtonsForTotalPage();
      }
    }
    // check if audit rule check is done from PD
    if (budgetForm.isAuditActivated() && !"route".equals(((KualiForm) form).getMethodToCall())) {
      KraServiceLocator.getService(KualiRuleService.class)
          .applyRules(new DocumentAuditEvent(budgetForm.getDocument()));
    }

    return actionForward;
  }
  public void testDisabledUser() {
    LoginAction action = new LoginAction();
    User u = UserTestUtils.findNewUser("testUser", "testOrg" + this.getClass().getSimpleName());
    UserManager.disableUser(u, u);

    ActionMapping mapping = new ActionMapping();
    mapping.addForwardConfig(new ActionForward("failure", "path", false));
    PxtCookieManager pcm = new PxtCookieManager();
    RhnMockDynaActionForm form = new RhnMockDynaActionForm("loginForm");
    RhnMockHttpServletRequest request = new RhnMockHttpServletRequest();
    RhnMockHttpServletResponse response = new RhnMockHttpServletResponse();

    RequestContext requestContext = new RequestContext(request);

    request.setSession(new MockHttpSession());
    request.setupServerName("mymachine.rhndev.redhat.com");
    WebSession s = requestContext.getWebSession();
    request.addCookie(pcm.createPxtCookie(s.getId(), request, 10));

    form.set("username", u.getLogin());
    /**
     * Since we know testUser's password is "password", just set that here. using u.getPassword()
     * will fail when we're using encrypted passwords.
     */
    form.set("password", "password");

    ActionForward rc = action.execute(mapping, form, request, response);

    assertEquals("failure", rc.getName());
  }
  /**
   * < <Descrição do método>>
   *
   * @param actionMapping Descrição do parâmetro
   * @param actionForm Descrição do parâmetro
   * @param httpServletRequest Descrição do parâmetro
   * @param httpServletResponse Descrição do parâmetro
   * @return Descrição do retorno
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Obtém o action form
    ManutencaoRegistroActionForm manutencaoRegistroActionForm =
        (ManutencaoRegistroActionForm) actionForm;

    // Obtém a instância da sessão
    HttpSession sessao = httpServletRequest.getSession(false);

    // Cria os objetos
    String pacoteNomeObjeto = null;

    // Obtém os ids de remoção
    String[] ids = manutencaoRegistroActionForm.getIdRegistrosRemocao();

    // Seta o mapeamento de retorno
    ActionForward retorno = actionMapping.findForward("telaSucesso");

    // Obtém a instância da fachada
    Fachada fachada = Fachada.getInstancia();

    // mensagem de erro quando o usuário tenta excluir sem ter selecionado
    // nenhum
    // registro
    if (ids == null || ids.length == 0) {
      throw new ActionServletException("erro.registros.nao_selecionados");
    }

    // Pega o path do pacote do objeto mais o tipo
    pacoteNomeObjeto = (String) sessao.getAttribute("pacoteNomeObjeto");
    // Remove o objeto
    fachada.removerTabelaAuxiliar(ids, pacoteNomeObjeto, null, null);

    // Monta a página de sucesso
    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(
          httpServletRequest,
          ((String) sessao.getAttribute("titulo")) + " removido(a)(s) com sucesso",
          "Realizar outra manutenção de " + ((String) sessao.getAttribute("titulo")),
          ((String) sessao.getAttribute("funcionalidadeTabelaAuxiliarIndicadorFiltrar")));
    }

    // Remove os objetos da sessão
    sessao.removeAttribute("funcionalidadeTabelaAuxiliarIndicadorManter");
    sessao.removeAttribute("titulo");
    sessao.removeAttribute("tabelaAuxiliarIndicador");
    sessao.removeAttribute("tamMaxCampoDescricao");
    sessao.removeAttribute("tamMaxCampoDescricaoAbreviada");
    sessao.removeAttribute("descricao");
    sessao.removeAttribute("descricaoAbreviada");

    // devolve o mapeamento de retorno
    return retorno;
  }
  public void testExecute() throws Exception {

    ActionHelper ah = createActionHelper(RhnHelper.DEFAULT_FORWARD);
    ActionForward af = ah.executeAction();
    assertEquals(RhnHelper.DEFAULT_FORWARD, af.getName());
    assertNotNull(ah.getRequest().getAttribute("probe"));
    assertNotNull(ah.getRequest().getAttribute("probeSuite"));
    assertNotNull(ah.getRequest().getAttribute("intervals"));
    assertNotNull(ah.getRequest().getAttribute("contactGroups"));
    assertNotNull(ah.getRequest().getAttribute("paramValueList"));
    List pvalues = (List) ah.getRequest().getAttribute("paramValueList");
    assertTrue(pvalues.size() > 0);
  }
  /**
   * <Breve descrição sobre o caso de uso>
   *
   * <p><Identificador e nome do caso de uso>
   *
   * <p><Breve descrição sobre o subfluxo>
   *
   * <p><Identificador e nome do subfluxo>
   *
   * <p><Breve descrição sobre o fluxo secundário>
   *
   * <p><Identificador e nome do fluxo secundário>
   *
   * @author COMPESA
   * @date 08/07/2006
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Inicializando Variaveis
    ActionForward retorno = actionMapping.findForward("manterQuadra");
    HttpSession sessao = httpServletRequest.getSession(false);

    Collection colecaoQuadra = null;

    // Parte da verificação do filtro
    FiltroQuadra filtroQuadra = null;

    // Verifica se o filtro foi informado pela página de filtragem de Quadra
    if (sessao.getAttribute("filtroQuadra") != null) {
      filtroQuadra = (FiltroQuadra) sessao.getAttribute("filtroQuadra");
    }

    if ((retorno != null) && (retorno.getName().equalsIgnoreCase("manterQuadra"))) {

      Map resultado =
          controlarPaginacao(httpServletRequest, retorno, filtroQuadra, Quadra.class.getName());
      colecaoQuadra = (Collection) resultado.get("colecaoRetorno");
      retorno = (ActionForward) resultado.get("destinoActionForward");

      // [FS0004] Nenhum registro encontrado
      if (colecaoQuadra == null || colecaoQuadra.isEmpty()) {
        // Nenhuma Quadra cadastrada
        throw new ActionServletException("atencao.pesquisa.nenhumresultado");
      }

      String identificadorAtualizar = (String) sessao.getAttribute("indicadorAtualizar");

      if (colecaoQuadra.size() == 1 && identificadorAtualizar != null) {
        // caso o resultado do filtro só retorne um registro
        // e o check box Atualizar estiver selecionado
        // o sistema não exibe a tela de manter, exibe a de atualizar
        retorno = actionMapping.findForward("atualizarQuadra");
        Quadra quadra = (Quadra) colecaoQuadra.iterator().next();
        sessao.setAttribute("idRegistroAtualizar", new Integer(quadra.getId()).toString());
      } else {
        sessao.setAttribute("colecaoQuadra", colecaoQuadra);
      }
    }

    return retorno;
  }
  public void testSubmitExecute() throws Exception {

    ActionHelper ah = createActionHelper("success");
    ah.getForm().set(ProbeEditAction.SUBMITTED, new Boolean(true));
    ah.getForm().set("description", probe.getDescription());
    ah.getForm().set("notification", new Boolean(true));
    Long intv = new Long(probe.getCheckIntervalMinutes().longValue());
    ah.getForm().set("check_interval_min", intv);
    ah.getForm().set("notification_interval_min", probe.getNotificationIntervalMinutes());

    MonitoringTestUtils.setupParamValues(ah, probe.getCommand(), 3);

    ActionForward af = ah.executeAction();
    assertEquals("success", af.getName());

    Probe edited = (Probe) reload(probe);
    assertTrue(edited.isNotifyCritical().booleanValue());
    MonitoringTestUtils.verifyParameters(edited, probe.getCommand());
    assertEquals(intv, edited.getCheckIntervalMinutes());
  }
  /**
   * <Breve descrição sobre o caso de uso>
   *
   * <p>[UC0287] - Efetuar Login
   *
   * @author Pedro Alexandre
   * @date 04/07/2006
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Prepara o retorno da ação para a tela principal
    ActionForward retorno = actionMapping.findForward("telaSucesso");

    // Obtém a instância da Fachada
    Fachada fachada = Fachada.getInstancia();

    // Recupera uma instância da sessão
    HttpSession sessao = httpServletRequest.getSession(false);

    // Recupera o usuário que está solicitando o lembrete da senha
    Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");

    // Recupera o ActionForm
    EfetuarAlteracaoSenhaActionForm efetuarAlteracaoSenhaActionForm =
        (EfetuarAlteracaoSenhaActionForm) actionForm;

    // Recupera todos os dados necessários para verificar se o usuário
    // pode ser lembrada sua senha
    String dataNascimentoString = efetuarAlteracaoSenhaActionForm.getDataNascimento();
    String cpf = efetuarAlteracaoSenhaActionForm.getCpf();
    String lembreteSenha = efetuarAlteracaoSenhaActionForm.getLembreteSenha();
    String novaSenha = efetuarAlteracaoSenhaActionForm.getNovaSenha();
    String confirmacaoNovaSenha = efetuarAlteracaoSenhaActionForm.getConfirmacaoNovaSenha();

    fachada.efetuarAlteracaoSenha(
        usuarioLogado, dataNascimentoString, cpf, lembreteSenha, novaSenha, confirmacaoNovaSenha);

    // Caso o mapeamento seja para a tela de sucesso do popup
    // monta a tela de sucesso indicando que o email foi enviado
    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(httpServletRequest, "Senha alterada com sucesso.", "", "");
    }

    return retorno;
  }
  /**
   * < <Descrição do método>>
   *
   * @param actionMapping Descrição do parâmetro
   * @param actionForm Descrição do parâmetro
   * @param httpServletRequest Descrição do parâmetro
   * @param httpServletResponse Descrição do parâmetro
   * @return Descrição do retorno
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    ManutencaoRegistroActionForm manutencaoRegistroActionForm =
        (ManutencaoRegistroActionForm) actionForm;

    String[] ids = manutencaoRegistroActionForm.getIdRegistrosRemocao();

    ActionForward retorno = actionMapping.findForward("telaSucesso");

    Fachada fachada = Fachada.getInstancia();

    // mensagem de erro quando o usuário tenta excluir sem ter selecionado
    // nenhum
    // registro
    if (ids == null || ids.length == 0) {
      throw new ActionServletException("atencao.registros.nao_selecionados");
    }

    try {
      fachada.removerFaturamentoCronograma(ids, FaturamentoGrupoCronogramaMensal.class.getName());
    } catch (ControladorException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    // Monta a página de sucesso
    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(
          httpServletRequest,
          ids.length + " Cronograma(s) de Faturamento removido(s) com sucesso",
          "Realizar outra Manutenção de Cronograma de Faturamento",
          "exibirFiltrarFaturamentoCronogramaAction.do");
    }

    return retorno;
  }
  /**
   * Description of the Method
   *
   * @param actionMapping Description of the Parameter
   * @param actionForm Description of the Parameter
   * @param httpServletRequest Description of the Parameter
   * @param httpServletResponse Description of the Parameter
   * @return Description of the Return Value
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // localiza o action no objeto actionmapping
    ActionForward retorno = actionMapping.findForward("telaSucesso");
    HttpSession sessao = httpServletRequest.getSession(false);

    EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
        efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm =
            (EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm) actionForm;
    Fachada fachada = Fachada.getInstancia();

    // Usuario logado no sistema
    Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");

    String ordemServicoId =
        efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getIdOrdemServico();

    HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico =
        new HidrometroInstalacaoHistorico();
    hidrometroInstalacaoHistorico =
        this.setDadosHidrometroInstalacaoHistorico(
            hidrometroInstalacaoHistorico,
            efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm);

    Imovel imovel = null;

    if (ordemServicoId != null && !ordemServicoId.equals("")) {

      OrdemServico ordemServico = (OrdemServico) sessao.getAttribute("ordemServico");

      if (ordemServico == null) {
        throw new ActionServletException(
            "atencao.ordem_servico_inexistente", null, "ORDEM DE SERVIÇO INEXISTENTE");
      }

      if (sessao.getAttribute("imovel") != null) {
        imovel = (Imovel) sessao.getAttribute("imovel");

        FiltroImovel filtroImovel = new FiltroImovel();
        filtroImovel.adicionarCaminhoParaCarregamentoEntidade(
            "localidade.hidrometroLocalArmazenagem");
        filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, imovel.getId()));

        Collection colecaoImoveis = fachada.pesquisar(filtroImovel, Imovel.class.getName());

        Imovel imovelComLocalidade = (Imovel) Util.retonarObjetoDeColecao(colecaoImoveis);

        if (imovelComLocalidade != null
            && imovelComLocalidade.getLocalidade().getHidrometroLocalArmazenagem() != null
            && hidrometroInstalacaoHistorico.getHidrometro().getHidrometroLocalArmazenagem() != null
            && !hidrometroInstalacaoHistorico
                .getHidrometro()
                .getHidrometroLocalArmazenagem()
                .getId()
                .equals(
                    imovelComLocalidade.getLocalidade().getHidrometroLocalArmazenagem().getId())) {
          throw new ActionServletException(
              "atencao.hidrometro_local_armazenagem_imovel_diferente_hidrometro_local_armazenagem_hidrometro");
        }

        imovel.setUltimaAlteracao(new Date());
      }

      FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua();
      filtroLigacaoAgua.adicionarParametro(
          new ParametroSimples(FiltroLigacaoAgua.ID, imovel.getId()));

      Collection colecaoLigacoesAgua =
          fachada.pesquisar(filtroLigacaoAgua, LigacaoAgua.class.getName());

      LigacaoAgua ligacaoAgua = (LigacaoAgua) Util.retonarObjetoDeColecao(colecaoLigacoesAgua);

      ligacaoAgua.setDataRestabelecimentoAgua(
          Util.converteStringParaDate(
              efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                  .getDataRestabelecimento()));

      hidrometroInstalacaoHistorico.setLigacaoAgua(ligacaoAgua);

      ordemServico =
          this.setDadosOrdemServico(
              ordemServico, efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm);

      String qtdParcelas =
          efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
              .getQuantidadeParcelas();

      IntegracaoComercialHelper integracaoComercialHelper = new IntegracaoComercialHelper();

      integracaoComercialHelper.setLigacaoAgua(ligacaoAgua);
      integracaoComercialHelper.setImovel(imovel);
      integracaoComercialHelper.setOrdemServico(ordemServico);
      integracaoComercialHelper.setQtdParcelas(qtdParcelas);
      integracaoComercialHelper.setHidrometroInstalacaoHistorico(hidrometroInstalacaoHistorico);

      if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
          .getVeioEncerrarOS()
          .equalsIgnoreCase("FALSE")) {
        integracaoComercialHelper.setVeioEncerrarOS(Boolean.FALSE);

        fachada.efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometro(
            integracaoComercialHelper, usuario);
      } else {
        integracaoComercialHelper.setVeioEncerrarOS(Boolean.TRUE);
        sessao.setAttribute("integracaoComercialHelper", integracaoComercialHelper);

        if (sessao.getAttribute("semMenu") == null) {
          retorno = actionMapping.findForward("encerrarOrdemServicoAction");
        } else {
          retorno = actionMapping.findForward("encerrarOrdemServicoPopupAction");
        }
        sessao.removeAttribute("caminhoRetornoIntegracaoComercial");
      }
      if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
        // Monta a página de sucesso
        montarPaginaSucesso(
            httpServletRequest,
            "Restabelecimento da Ligação de Água com Instalação de Hidrômetro efetuada com Sucesso",
            "Efetuar outro Restabelecimento da Ligação de Água com Instalação de Hidrômetro",
            "exibirEfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroAction.do?menu=sim");
      }

      return retorno;
    } else {
      throw new ActionServletException("atencao.informe_campo", null, "Ordem de Serviço");
    }
  }
  /**
   * Description of the Method
   *
   * @param actionMapping Description of the Parameter
   * @param actionForm Description of the Parameter
   * @param httpServletRequest Description of the Parameter
   * @param httpServletResponse Description of the Parameter
   * @return Description of the Return Value
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    ActionForward retorno = actionMapping.findForward("telaSucessoPopup");

    Fachada fachada = Fachada.getInstancia();

    HttpSession sessao = httpServletRequest.getSession(false);

    DesfazerVinculoPopupActionForm form = (DesfazerVinculoPopupActionForm) actionForm;

    String[] ids = form.getIdImovel();

    Imovel imovelCondominio = null;
    if (sessao.getAttribute("imovelCondominio") != null) {
      imovelCondominio = (Imovel) sessao.getAttribute("imovelCondominio");
    }

    boolean desvincular = false;
    if (ids.length == ((Collection) sessao.getAttribute("colecaoImoveisVinculados")).size()) {
      desvincular = true;
    } else {
      /*
       * SB0003 - FS 4. Caso a opção de desvincular não seja TODOS, o
       * sistema verifica se o imóvel com indicador de área comum foi
       * selecionado, [FS0015 - Pesquisar Imóvel Área Comum]
       */
      Integer idImovelAreaComum = fachada.pesquisarImovelAreaComum(imovelCondominio.getId());
      if (idImovelAreaComum != null) {
        for (String idImovelParaRemover : ids) {

          if (Integer.parseInt(idImovelParaRemover.trim()) == idImovelAreaComum.intValue()) {
            throw new ActionServletException(
                "atencao.imovel_selecionado_corresponde_area_comum", idImovelParaRemover);
          }
        }
      }
    }

    /**
     * alterado por pedro alexandre dia 20/11/2006 Recupera o usuário logado para passar no metódo
     * de desfazer vínculo para verificar se o usuário tem abrangência para desfazer o vínculo do
     * imóvel informado.
     */
    Usuario usuarioLogado = (Usuario) sessao.getAttribute(Usuario.USUARIO_LOGADO);
    fachada.desfazerVinculo(imovelCondominio, ids, desvincular, usuarioLogado);

    // remove da sessao
    if (sessao.getAttribute("colecaoImoveisVinculados") != null) {
      sessao.removeAttribute("colecaoImoveisVinculados");
    }
    if (sessao.getAttribute("imovelCondominio") != null) {
      sessao.removeAttribute("imovelCondominio");
    }

    // Monta a página de sucesso
    if (retorno.getName().equalsIgnoreCase("telaSucessoPopup")) {
      montarPaginaSucesso(
          httpServletRequest,
          ids.length
              + " imóvel(is) desvinculado(s) do imóvel condomínio "
              + imovelCondominio.getId()
              + " com sucesso.",
          "",
          "");
    }

    return retorno;
  }
  /**
   * @author Vivianne Sousa
   * @date 12/05/2006
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    AtualizarParcelamentoPerfilActionForm atualizarParcelamentoPerfilActionForm =
        (AtualizarParcelamentoPerfilActionForm) actionForm;
    ActionForward retorno = actionMapping.findForward("telaSucesso");
    Fachada fachada = Fachada.getInstancia();
    HttpSession sessao = httpServletRequest.getSession(false);

    String idPerfilParcelamento = (String) sessao.getAttribute("idRegistroAtualizacao");
    String numeroResolucaoDiretoria =
        atualizarParcelamentoPerfilActionForm.getNumeroResolucaoDiretoria();

    FiltroParcelamentoPerfil filtroParcelamentoPerfil = new FiltroParcelamentoPerfil();
    // Seta o filtro para buscar o ParcelamentoPerfil na base
    // e recuperar o idImovelSituacaoTipo,idImovelPerfil e o idSubcategoria
    filtroParcelamentoPerfil.adicionarParametro(
        new ParametroSimples(FiltroParcelamentoPerfil.ID, idPerfilParcelamento));
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelSituacaoTipo");
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelPerfil");
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("subcategoria");
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("categoria");
    // Procura o ParcelamentoPerfil na base
    ParcelamentoPerfil parcelamentoPerfilNaBase = null;
    parcelamentoPerfilNaBase =
        (ParcelamentoPerfil)
            ((List)
                    (fachada.pesquisar(
                        filtroParcelamentoPerfil, ParcelamentoPerfil.class.getName())))
                .get(0);

    Integer idImovelSituacaoTipo = parcelamentoPerfilNaBase.getImovelSituacaoTipo().getId();

    Integer idImovelPerfil = null;
    if (parcelamentoPerfilNaBase.getImovelPerfil() != null
        && !parcelamentoPerfilNaBase.getImovelPerfil().equals("")) {
      idImovelPerfil = parcelamentoPerfilNaBase.getImovelPerfil().getId();
    }

    Integer idSubcategoria = null;
    if (parcelamentoPerfilNaBase.getSubcategoria() != null
        && !parcelamentoPerfilNaBase.getSubcategoria().equals("")) {
      idSubcategoria = parcelamentoPerfilNaBase.getSubcategoria().getId();
    }

    Integer idCategoria = null;
    if (parcelamentoPerfilNaBase.getCategoria() != null
        && !parcelamentoPerfilNaBase.getCategoria().equals("")) {
      idCategoria = parcelamentoPerfilNaBase.getCategoria().getId();
    }

    String percentualDescontoAcrescimoMulta = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoMulta() != null) {
      percentualDescontoAcrescimoMulta =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoMulta()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoJurosMora = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoJurosMora() != null) {
      percentualDescontoAcrescimoJurosMora =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoJurosMora()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoAtualizacaoMonetaria = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoAtualizacaoMonetaria()
        != null) {
      percentualDescontoAcrescimoAtualizacaoMonetaria =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoAtualizacaoMonetaria()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoPagamentoAVista = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoPagamentoAVista()
            != null
        && !atualizarParcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoPagamentoAVista()
            .equalsIgnoreCase("")) {
      percentualDescontoAcrescimoPagamentoAVista =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoPagamentoAVista()
              .toString()
              .replace(",", ".");
    }

    String percentualTarifaMinimaPrestacao = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualTarifaMinimaPrestacao() != null
        && !atualizarParcelamentoPerfilActionForm
            .getPercentualTarifaMinimaPrestacao()
            .equalsIgnoreCase("")) {
      percentualTarifaMinimaPrestacao =
          atualizarParcelamentoPerfilActionForm
              .getPercentualTarifaMinimaPrestacao()
              .toString()
              .replace(",", ".");
    }

    atualizaColecoesNaSessao(sessao, httpServletRequest);

    // collectionParcelamentoQuantidadeReparcelamentoHelper
    Collection collectionParcelamentoQuantidadeReparcelamentoHelper = null;
    if (sessao.getAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper") != null) {
      collectionParcelamentoQuantidadeReparcelamentoHelper =
          (Collection) sessao.getAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper");
    }

    // collectionParcelamentoDescontoInatividade
    Collection collectionParcelamentoDescontoInatividade = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoInatividade") != null) {
      collectionParcelamentoDescontoInatividade =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividade");
    }

    // collectionParcelamentoDescontoInatividadeAVista
    Collection collectionParcelamentoDescontoInatividadeAVista = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVista") != null) {
      collectionParcelamentoDescontoInatividadeAVista =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVista");
    }

    // collectionParcelamentoDescontoAntiguidade
    Collection collectionParcelamentoDescontoAntiguidade = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoAntiguidade") != null) {
      collectionParcelamentoDescontoAntiguidade =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoAntiguidade");
    }

    Collection collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas =
        (Collection)
            sessao.getAttribute(
                "collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas");

    Collection collectionParcelamentoDescontoInatividadeLinhaRemovidas =
        (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividadeLinhaRemovidas");

    Collection collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas =
        (Collection)
            sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas");

    Collection collectionParcelamentoDescontoAntiguidadeLinhaRemovidas =
        (Collection) sessao.getAttribute("collectionParcelamentoDescontoAntiguidadeLinhaRemovidas");

    Collection collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas =
        (Collection)
            sessao.getAttribute("collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas");

    validacaoFinal(
        percentualDescontoAcrescimoMulta,
        percentualDescontoAcrescimoJurosMora,
        percentualDescontoAcrescimoAtualizacaoMonetaria,
        percentualDescontoAcrescimoPagamentoAVista,
        percentualTarifaMinimaPrestacao,
        httpServletRequest,
        collectionParcelamentoQuantidadeReparcelamentoHelper,
        collectionParcelamentoDescontoAntiguidade,
        collectionParcelamentoDescontoInatividade,
        idPerfilParcelamento,
        fachada,
        collectionParcelamentoDescontoInatividadeAVista);

    ParcelamentoPerfil parcelamentoPerfil = new ParcelamentoPerfil();

    parcelamentoPerfil.setId(new Integer(idPerfilParcelamento));

    ResolucaoDiretoria resolucaoDiretoria = null;
    if (numeroResolucaoDiretoria != null && !numeroResolucaoDiretoria.equals("")) {

      FiltroResolucaoDiretoria filtroResolucaoDiretoria = new FiltroResolucaoDiretoria();
      filtroResolucaoDiretoria.adicionarParametro(
          new ParametroSimples(FiltroResolucaoDiretoria.NUMERO, numeroResolucaoDiretoria));
      Collection<ResolucaoDiretoria> collectionResolucaoDiretoria =
          fachada.pesquisar(filtroResolucaoDiretoria, ResolucaoDiretoria.class.getName());

      if (collectionResolucaoDiretoria != null && !collectionResolucaoDiretoria.isEmpty()) {
        resolucaoDiretoria =
            (ResolucaoDiretoria) Util.retonarObjetoDeColecao(collectionResolucaoDiretoria);
        parcelamentoPerfil.setResolucaoDiretoria(resolucaoDiretoria);
      }
    }

    ImovelSituacaoTipo imovelSituacaoTipo = null;
    if (idImovelSituacaoTipo != null
        && !idImovelSituacaoTipo.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      imovelSituacaoTipo = new ImovelSituacaoTipo();
      imovelSituacaoTipo.setId(new Integer(idImovelSituacaoTipo));
      parcelamentoPerfil.setImovelSituacaoTipo(imovelSituacaoTipo);
    }

    ImovelPerfil imovelPerfil = null;
    if (idImovelPerfil != null
        && !idImovelPerfil.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      imovelPerfil = new ImovelPerfil();
      imovelPerfil.setId(new Integer(idImovelPerfil));
      parcelamentoPerfil.setImovelPerfil(imovelPerfil);
    }

    Subcategoria subcategoria = null;
    if (idSubcategoria != null
        && !idSubcategoria.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      subcategoria = new Subcategoria();
      subcategoria.setId(new Integer(idSubcategoria));
      parcelamentoPerfil.setSubcategoria(subcategoria);
    }

    Categoria categoria = null;
    if (idCategoria != null && !idCategoria.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      categoria = new Categoria();
      categoria.setId(new Integer(idCategoria));
      parcelamentoPerfil.setCategoria(categoria);
    }

    if (percentualDescontoAcrescimoMulta != null && !percentualDescontoAcrescimoMulta.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoMulta);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoAcrescimoMulta(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoAcrescimoMulta(new BigDecimal(0));
    }

    if (percentualDescontoAcrescimoJurosMora != null
        && !percentualDescontoAcrescimoJurosMora.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoJurosMora);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoAcrescimoJurosMora(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoAcrescimoJurosMora(new BigDecimal(0));
    }

    if (percentualDescontoAcrescimoAtualizacaoMonetaria != null
        && !percentualDescontoAcrescimoAtualizacaoMonetaria.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoAtualizacaoMonetaria);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoAcrescimoAtualizacaoMonetaria(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoAcrescimoAtualizacaoMonetaria(new BigDecimal(0));
    }

    if (percentualDescontoAcrescimoPagamentoAVista != null
        && !percentualDescontoAcrescimoPagamentoAVista.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoPagamentoAVista);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoPagamentoAVista(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoPagamentoAVista(new BigDecimal(0));
    }

    if (percentualTarifaMinimaPrestacao != null
        && !percentualTarifaMinimaPrestacao.equalsIgnoreCase("")) {
      parcelamentoPerfil.setPercentualTarifaMinimaPrestacao(
          new BigDecimal(percentualTarifaMinimaPrestacao));
    } else {
      parcelamentoPerfil.setPercentualTarifaMinimaPrestacao(new BigDecimal(0));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorParcelarChequeDevolvido() != null
        && !atualizarParcelamentoPerfilActionForm
            .getIndicadorParcelarChequeDevolvido()
            .equals("")) {
      parcelamentoPerfil.setIndicadorChequeDevolvido(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorParcelarChequeDevolvido()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Não parcelar com cheque devolvido");
    }

    if (atualizarParcelamentoPerfilActionForm.getConsumoMinimo() != null
        && !atualizarParcelamentoPerfilActionForm.getConsumoMinimo().equals("")) {
      parcelamentoPerfil.setNumeroConsumoMinimo(
          new Integer(atualizarParcelamentoPerfilActionForm.getConsumoMinimo()));
    }

    if (atualizarParcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio() != null
        && !atualizarParcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio().equals("")) {
      parcelamentoPerfil.setPercentualVariacaoConsumoMedio(
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorParcelarSancoesMaisDeUmaConta() != null
        && !atualizarParcelamentoPerfilActionForm
            .getIndicadorParcelarSancoesMaisDeUmaConta()
            .equals("")) {
      parcelamentoPerfil.setIndicadorSancoesUnicaConta(
          new Short(
              atualizarParcelamentoPerfilActionForm.getIndicadorParcelarSancoesMaisDeUmaConta()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Não parcelar com sanções em mais de uma conta");
    }

    if (atualizarParcelamentoPerfilActionForm.getNumeroConsumoEconomia() != null
        && !atualizarParcelamentoPerfilActionForm.getNumeroConsumoEconomia().trim().equals("")) {
      parcelamentoPerfil.setNumeroConsumoEconomia(
          new Integer(atualizarParcelamentoPerfilActionForm.getNumeroConsumoEconomia()));
    }

    if (atualizarParcelamentoPerfilActionForm.getNumeroAreaConstruida() != null
        && !atualizarParcelamentoPerfilActionForm.getNumeroAreaConstruida().trim().equals("")) {
      parcelamentoPerfil.setNumeroAreaConstruida(
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getNumeroAreaConstruida()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial() != null
        && !atualizarParcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial().equals("")) {
      parcelamentoPerfil.setIndicadorRetroativoTarifaSocial(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Indicador de retroativo de tarifa social");
    }

    if (atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteInferior() != null
        && !atualizarParcelamentoPerfilActionForm
            .getAnoMesReferenciaLimiteInferior()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setAnoMesReferenciaLimiteInferior(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteInferior())));
    }

    if (atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteSuperior() != null
        && !atualizarParcelamentoPerfilActionForm
            .getAnoMesReferenciaLimiteSuperior()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setAnoMesReferenciaLimiteSuperior(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteSuperior())));
    }

    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoTarifaSocial() != null
        && !atualizarParcelamentoPerfilActionForm
            .getPercentualDescontoTarifaSocial()
            .trim()
            .equals("")) {
      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getPercentualDescontoTarifaSocial());
      verificarPercentualMaximo(percentual);
      parcelamentoPerfil.setPercentualDescontoTarifaSocial(percentual);
    }

    if (atualizarParcelamentoPerfilActionForm.getParcelaQuantidadeMinimaFatura() != null
        && !atualizarParcelamentoPerfilActionForm
            .getParcelaQuantidadeMinimaFatura()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setParcelaQuantidadeMinimaFatura(
          new Integer(atualizarParcelamentoPerfilActionForm.getParcelaQuantidadeMinimaFatura()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima() != null
        && !atualizarParcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima().equals("")) {
      parcelamentoPerfil.setIndicadorAlertaParcelaMinima(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Indicador de alerta de parcela mínima");
    }

    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoSancao() != null
        && !atualizarParcelamentoPerfilActionForm.getPercentualDescontoSancao().trim().equals("")) {
      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getPercentualDescontoSancao());
      verificarPercentualMaximo(percentual);
      parcelamentoPerfil.setPercentualDescontoSancao(percentual);
    }

    if (atualizarParcelamentoPerfilActionForm.getQuantidadeEconomias() != null
        && !atualizarParcelamentoPerfilActionForm.getQuantidadeEconomias().trim().equals("")) {
      parcelamentoPerfil.setQuantidadeEconomias(
          new Integer(atualizarParcelamentoPerfilActionForm.getQuantidadeEconomias()));
    }

    if (atualizarParcelamentoPerfilActionForm.getQuantidadeMaximaReparcelamento() != null
        && !atualizarParcelamentoPerfilActionForm
            .getQuantidadeMaximaReparcelamento()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setQuantidadeMaximaReparcelamento(
          new Integer(atualizarParcelamentoPerfilActionForm.getQuantidadeMaximaReparcelamento()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorEntradaMinima() != null
        && !atualizarParcelamentoPerfilActionForm.getIndicadorEntradaMinima().equals("")) {
      parcelamentoPerfil.setIndicadorEntradaMinima(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorEntradaMinima()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Indicador de entrada mínima");
    }

    if (atualizarParcelamentoPerfilActionForm.getCapacidadeHidrometro() != null
        && !atualizarParcelamentoPerfilActionForm.getCapacidadeHidrometro().trim().equals("")) {
      parcelamentoPerfil.setCapacidadeHidrometro(
          new Short(atualizarParcelamentoPerfilActionForm.getCapacidadeHidrometro()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Indicador pesquisa capacidade do hidrometro");
    }

    if (atualizarParcelamentoPerfilActionForm.getDataLimiteDescontoPagamentoAVista() != null
        && !atualizarParcelamentoPerfilActionForm
            .getDataLimiteDescontoPagamentoAVista()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setDataLimiteDescontoPagamentoAVista(
          Util.converteStringParaDate(
              atualizarParcelamentoPerfilActionForm.getDataLimiteDescontoPagamentoAVista()));
    }

    parcelamentoPerfil.setUltimaAlteracao(
        Util.converteStringParaDateHora(
            atualizarParcelamentoPerfilActionForm.getUltimaAlteracao()));

    fachada.atualizarPerfilParcelamento(
        parcelamentoPerfil,
        collectionParcelamentoQuantidadeReparcelamentoHelper,
        collectionParcelamentoDescontoInatividade,
        collectionParcelamentoDescontoAntiguidade,
        collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas,
        collectionParcelamentoDescontoInatividadeLinhaRemovidas,
        collectionParcelamentoDescontoAntiguidadeLinhaRemovidas,
        collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas,
        this.getUsuarioLogado(httpServletRequest),
        collectionParcelamentoDescontoInatividadeAVista,
        collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas);

    sessao.removeAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividade");
    sessao.removeAttribute("collectionParcelamentoDescontoAntiguidade");
    sessao.removeAttribute("idRegistroAtualizacao");
    sessao.removeAttribute("collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividadeLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoDescontoAntiguidadeLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividadeAVista");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas");

    //
    // Monta a página de sucesso
    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(
          httpServletRequest,
          "Perfil de Parcelamento da RD de número "
              + numeroResolucaoDiretoria
              + " atualizado com sucesso.",
          "Realizar outra Manutenção de Perfil de Parcelamento",
          "exibirFiltrarPerfilParcelamentoAction.do?desfazer=S");
    }

    return retorno;
  }
 /**
  * Return a new <code>ActionForward</code> based on the given one but with the specified parameter
  * name and value added to the new forward's path. NOTE: this method would be unnecessary if
  * Struts allowed us to "unfreeze" the <code>ForwardConfig</code> that is the superclass of the
  * forward.
  *
  * @param forward the ActionForward on which the new forward is based
  * @param param the name of the path parameter to add
  * @param value the value of the parameter to add
  * @exception ServletException if encoding the path parameter fails
  */
 public static ActionForward changeForwardPath(ActionForward forward, Map params)
     throws Exception {
   String newUrl = changeUrl(forward.getPath(), params);
   ActionForward newForward = new ActionForward(forward.getName(), newUrl, forward.getRedirect());
   return newForward;
 }
  public ActionForward executeAction(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response,
      SessionAPI session)
      throws Exception {

    // Comprobar si el usuario tiene asignadas las funciones adecuadas
    FunctionHelper.checkFunctions(
        request,
        session.getClientContext(),
        new int[] {ISecurityAPI.FUNC_INV_DOCTYPES_EDIT, ISecurityAPI.FUNC_INV_TEMPLATES_EDIT});

    IInvesflowAPI invesFlowAPI = session.getAPI();
    ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI();
    ITemplateAPI templateAPI = invesFlowAPI.getTemplateAPI();

    // Formulario asociado a la acción
    UploadForm defaultForm = (UploadForm) form;

    int keyId = Integer.parseInt(defaultForm.getKey());
    int entityId = Integer.parseInt(defaultForm.getEntity());
    String name = defaultForm.getProperty("NOMBRE");
    String code = defaultForm.getProperty("COD_PLANT");
    CTTemplate template = null;

    try {

      if (keyId == ISPACEntities.ENTITY_NULLREGKEYID) {

        int type = Integer.parseInt(defaultForm.getProperty("ID_TPDOC"));
        String expresion = defaultForm.getProperty("EXPRESION");
        FormFile fichero = defaultForm.getUploadFile();
        EntityApp entityapp = catalogAPI.getCTDefaultEntityApp(entityId, getRealPath(""));

        // Comprobar si existe otra plantilla con el mismo nombre
        IItemCollection itemcol =
            catalogAPI.queryCTEntities(
                ICatalogAPI.ENTITY_CT_TEMPLATE,
                " WHERE NOMBRE = '" + DBUtil.replaceQuotes(name) + "'");
        if (itemcol.next() && !isGeneric(templateAPI, itemcol)) {
          ActionMessages errors = new ActionMessages();
          errors.add(
              "property(NOMBRE)",
              new ActionMessage("error.template.nameDuplicated", new String[] {name}));
          saveAppErrors(request, errors);

          return new ActionForward(mapping.getInput());
        }

        // Comprobar si existe otra plantilla con el mismo código
        if (StringUtils.isNotBlank(code)) {
          itemcol =
              catalogAPI.queryCTEntities(
                  ICatalogAPI.ENTITY_CT_TEMPLATE,
                  " WHERE COD_PLANT = '" + DBUtil.replaceQuotes(code) + "'");
          if (itemcol.next()) {
            ActionMessages errors = new ActionMessages();
            errors.add(
                "property(COD_PLANT)",
                new ActionMessage("error.template.codeDuplicated", new String[] {code}));
            saveAppErrors(request, errors);

            return new ActionForward(mapping.getInput());
          }
        }

        if (!entityapp.validate()) {

          ActionMessages errors = new ActionMessages();
          List errorList = entityapp.getErrors();
          Iterator iteError = errorList.iterator();
          while (iteError.hasNext()) {

            ValidationError validError = (ValidationError) iteError.next();
            ActionMessage error = new ActionMessage(validError.getErrorKey(), validError.getArgs());
            errors.add(ActionMessages.GLOBAL_MESSAGE, error);
          }
          saveAppErrors(request, errors);

          return new ActionForward(mapping.getInput());
        }

        if (fichero.getFileName().equals("")) {
          template = templateAPI.newTemplate(type, name, code, 0, expresion, null);
        } else {
          if (fichero.getFileSize() > 0) {

            // Comprobar si el tipo MIME de la plantilla está soportado
            String mimeType = MimetypeMapping.getFileMimeType(fichero.getFileName());
            // Se comprueba si esta habilitado el uso de plantillas ODT
            if (StringUtils.equals(mimeType, "application/vnd.oasis.opendocument.text")
                && !ConfigurationMgr.getVarGlobalBoolean(
                    session.getClientContext(), ConfigurationMgr.USE_ODT_TEMPLATES, false)) {
              throw new ISPACInfo(
                  getResources(request).getMessage("exception.template.odt.disabled"));
            }

            if (templateAPI.isMimeTypeSupported(mimeType)) {
              template =
                  templateAPI.newTemplate(
                      type, name, code, 0, expresion, fichero.getInputStream(), mimeType);
            } else {
              throw new ISPACInfo(
                  getResources(request).getMessage("exception.template.document.invalidFile"));
            }
          } else {
            throw new ISPACInfo("exception.uploadfile.empty");
          }
        }
      } else {
        EntityApp entityapp = catalogAPI.getCTDefaultEntityApp(entityId, getRealPath(""));

        // Comprobar si existe otra plantilla con el mismo nombre
        IItemCollection itemcol =
            catalogAPI.queryCTEntities(
                ICatalogAPI.ENTITY_CT_TEMPLATE,
                " WHERE NOMBRE = '" + DBUtil.replaceQuotes(name) + "' AND ID != " + keyId);
        if (itemcol.next() && !isGeneric(templateAPI, itemcol)) {
          ActionMessages errors = new ActionMessages();
          errors.add(
              "property(NOMBRE)",
              new ActionMessage("error.template.nameDuplicated", new String[] {name}));
          saveAppErrors(request, errors);

          return new ActionForward(mapping.getInput());
        }

        // Comprobar si existe otra plantilla con el mismo código
        if (StringUtils.isNotBlank(code)) {
          itemcol =
              catalogAPI.queryCTEntities(
                  ICatalogAPI.ENTITY_CT_TEMPLATE,
                  " WHERE COD_PLANT = '" + DBUtil.replaceQuotes(code) + "' AND ID != " + keyId);
          if (itemcol.next()) {
            ActionMessages errors = new ActionMessages();
            errors.add(
                "property(COD_PLANT)",
                new ActionMessage("error.template.codeDuplicated", new String[] {code}));
            saveAppErrors(request, errors);

            return new ActionForward(mapping.getInput());
          }
        }

        defaultForm.processEntityApp(entityapp);
        entityapp.getItem().set("FECHA", new Date());
        entityapp.store();
      }

    } catch (Exception e) {
      ActionForward action = mapping.findForward("success");
      String url =
          action.getPath()
              + "?entity="
              + entityId
              + "&type="
              + defaultForm.getProperty("ID_TPDOC")
              + "&key="
              + keyId;

      request.getSession().setAttribute(BaseAction.LAST_URL_SESSION_KEY, url);

      if (e instanceof ISPACInfo) {
        throw e;
      } else {
        throw new ISPACInfo(e.getMessage());
      }
    }

    if (template != null) {
      keyId = template.getInt("TEMPLATE:ID");
    }

    ActionForward action = mapping.findForward("success");
    String redirected =
        action.getPath()
            + "?entity="
            + entityId
            + "&type="
            + defaultForm.getProperty("ID_TPDOC")
            + "&key="
            + keyId;
    return new ActionForward(action.getName(), redirected, true);
  }
  public ActionForward executeAction(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response,
      SessionAPI session)
      throws Exception {

    // Comprobar si el usuario tiene asignadas las funciones adecuadas
    FunctionHelper.checkFunctions(
        request, session.getClientContext(), new int[] {ISecurityAPI.FUNC_INV_PROCEDURES_EDIT});

    int intTpObj = Integer.parseInt(request.getParameter("TpObj"));
    int intIdObj = Integer.parseInt(request.getParameter("IdObj"));

    // Prepara las API's a utilizar
    IInvesflowAPI invesFlowAPI = session.getAPI();
    ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI();

    if (request.getParameter("idRule") != null) {
      catalogAPI.addPRuleEvent(
          intTpObj,
          intIdObj,
          Integer.parseInt(request.getParameter("codEvent")),
          Integer.parseInt(request.getParameter("idRule")));

      ActionForward forward = mapping.findForward("showevents");
      String path = forward.getPath() + "?TpObj=" + intTpObj + "&IdObj=" + intIdObj;
      return new ActionForward(forward.getName(), path, forward.getRedirect());
    }

    request.setAttribute("TpObj", String.valueOf(intTpObj));
    request.setAttribute("IdObj", String.valueOf(intIdObj));

    CacheFormatterFactory factory = CacheFormatterFactory.getInstance();
    String ispacbase = (String) servlet.getServletContext().getAttribute("ispacbase");

    if (request.getParameter("codEvent") != null) {
      request.setAttribute("codEvent", request.getParameter("codEvent"));
      IItemCollection rulecol = catalogAPI.getCTRules();
      List rulelist = CollectionBean.getBeanList(rulecol);

      request.setAttribute("RulesList", rulelist);

      BeanFormatter formatter =
          factory.getFormatter(getISPACPath("/formatters/events/ruleslistformatter.xml"));

      request.setAttribute("RulesListFormatter", formatter);
      request.setAttribute(
          "application", StaticContext.rewritePage(ispacbase, "common/events/ruleslist.jsp"));
    } else {
      List eventlist = DescriptionsPEvents.getDescEventsList(intTpObj, intIdObj);
      request.setAttribute("EventsList", eventlist);

      BeanFormatter formatter =
          factory.getFormatter(getISPACPath("/formatters/events/eventslistformatter.xml"));

      request.setAttribute("EventsListFormatter", formatter);
      request.setAttribute(
          "application", StaticContext.rewritePage(ispacbase, "common/events/eventslist.jsp"));
    }

    return mapping.findForward("success");
  }
  /**
   * [UC0360] Efetuar Supressao de Água
   *
   * <p>Este caso de uso permite efetuar supressão da ligação de água, sendo chamada pela
   * funcionalidade que encerra a execução da ordem de serviço ou chamada diretamente do menu.
   *
   * @param actionMapping Description of the Parameter
   * @param actionForm Description of the Parameter
   * @param httpServletRequest Description of the Parameter
   * @param httpServletResponse Description of the Parameter
   * @return Description of the Return Value
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Set no mapeamento de retorno
    ActionForward retorno = actionMapping.findForward("telaSucesso");

    // Obtém a instância da fachada
    Fachada fachada = Fachada.getInstancia();

    HttpSession sessao = httpServletRequest.getSession(false);

    EfetuarSupressaoLigacaoAguaActionForm efetuarSupressaoLigacaoAguaActionForm =
        (EfetuarSupressaoLigacaoAguaActionForm) actionForm;

    IntegracaoComercialHelper integracaoComercialHelper = new IntegracaoComercialHelper();

    OrdemServico ordemServico = (OrdemServico) sessao.getAttribute("ordemServico");

    // Usuario logado no sistema
    Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
    integracaoComercialHelper.setUsuarioLogado(usuario);

    // Ordem de serviço

    String idOrdemServico = efetuarSupressaoLigacaoAguaActionForm.getIdOrdemServico();
    String motivoSupressao = efetuarSupressaoLigacaoAguaActionForm.getMotivoSupressao();
    String numeroLeituraSupressao =
        efetuarSupressaoLigacaoAguaActionForm.getNumeroLeituraSupressao();
    String tipoSupressao = efetuarSupressaoLigacaoAguaActionForm.getTipoSupressao();
    String numeroSeloSupressao = efetuarSupressaoLigacaoAguaActionForm.getNumeroSeloSupressao();
    String indicadorTipoSupressao =
        efetuarSupressaoLigacaoAguaActionForm.getIndicadorTipoSupressao();
    String dataEncerramento = efetuarSupressaoLigacaoAguaActionForm.getDataSupressao();
    String idServicoMotivoNaoCobranca =
        efetuarSupressaoLigacaoAguaActionForm.getMotivoNaoCobranca();
    String valorPercentual = efetuarSupressaoLigacaoAguaActionForm.getPercentualCobranca();

    // Comentado por Raphael Rossiter em 28/02/2007
    // Imovel imovel = ordemServico.getRegistroAtendimento().getImovel();
    Imovel imovel = ordemServico.getImovel();

    FiltroImovel filtroImovel = new FiltroImovel();

    filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, imovel.getId()));

    filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAgua");

    Collection colecaoImovel = fachada.pesquisar(filtroImovel, Imovel.class.getName());

    imovel = (Imovel) colecaoImovel.iterator().next();

    // [SB0001] - Atualizar Ligacao Agua

    // validar Data Corte
    Date dataSupressao = null;
    if (dataEncerramento != null && !dataEncerramento.equals("")) {
      dataSupressao = Util.converteStringParaDate(dataEncerramento);
    } else {
      throw new ActionServletException("atencao.required", null, " Data do Corte");
    }

    SupressaoTipo supressaoTipo = new SupressaoTipo();
    supressaoTipo.setId(new Integer(tipoSupressao));

    LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao();

    if (indicadorTipoSupressao.equals("1")) {
      ligacaoAguaSituacao.setId(LigacaoAguaSituacao.SUPRIMIDO);

      supressaoTipo.setIndicadorTotal(ConstantesSistema.INDICADOR_USO_ATIVO);
    } else {
      ligacaoAguaSituacao.setId(LigacaoAguaSituacao.SUPR_PARC_PEDIDO);
      supressaoTipo.setIndicadorParcial(ConstantesSistema.INDICADOR_USO_ATIVO);
    }

    SupressaoMotivo supressaoMotivo = new SupressaoMotivo();
    supressaoMotivo.setId(new Integer(motivoSupressao));

    FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua();
    filtroLigacaoAgua.adicionarCaminhoParaCarregamentoEntidade(
        FiltroLigacaoAgua.HIDROMETRO_INSTALACAO_HISTORICO);
    filtroLigacaoAgua.adicionarParametro(
        new ParametroSimples(FiltroLigacaoAgua.ID, imovel.getLigacaoAgua().getId()));

    Collection colecaoLigacaoAgua =
        fachada.pesquisar(filtroLigacaoAgua, LigacaoAgua.class.getName());

    filtroLigacaoAgua.adicionarCaminhoParaCarregamentoEntidade("hidrometroInstalacaoHistorico");

    LigacaoAgua ligacaoAgua = (LigacaoAgua) colecaoLigacaoAgua.iterator().next();

    if (ligacaoAgua.getHidrometroInstalacaoHistorico() != null) {
      FiltroHidrometroInstalacaoHistorico filtroHidrometroInstalacaoHistorico =
          new FiltroHidrometroInstalacaoHistorico();

      filtroHidrometroInstalacaoHistorico.adicionarParametro(
          new ParametroSimples(
              FiltroHidrometroInstalacaoHistorico.ID,
              ligacaoAgua.getHidrometroInstalacaoHistorico().getId()));

      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("imovel");

      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade(
          "hidrometroProtecao");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("hidrometro");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("rateioTipo");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("ligacaoAgua");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade(
          "hidrometroLocalInstalacao");

      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("rateioTipo");

      Collection colecaoHidrometroInstalacaHistorico =
          fachada.pesquisar(
              filtroHidrometroInstalacaoHistorico, HidrometroInstalacaoHistorico.class.getName());

      HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico =
          (HidrometroInstalacaoHistorico) colecaoHidrometroInstalacaHistorico.iterator().next();

      if (hidrometroInstalacaoHistorico != null && numeroLeituraSupressao != null) {

        if (numeroLeituraSupressao != null && !numeroLeituraSupressao.equals("")) {
          hidrometroInstalacaoHistorico.setNumeroLeituraSupressao(
              new Integer(numeroLeituraSupressao));
        }

        hidrometroInstalacaoHistorico.setUltimaAlteracao(new Date());

        ligacaoAgua.setHidrometroInstalacaoHistorico(hidrometroInstalacaoHistorico);
      }

      integracaoComercialHelper.setHidrometroInstalacaoHistorico(hidrometroInstalacaoHistorico);
    }
    ligacaoAgua.setDataSupressao(dataSupressao);
    if (numeroSeloSupressao != null && !numeroSeloSupressao.equals("")) {
      ligacaoAgua.setNumeroSeloSupressao(new Integer(numeroSeloSupressao));
    }

    // ligacaoAgua.setDataSupressao(ordemServico.getDataEncerramento());
    ligacaoAgua.setSupressaoTipo(supressaoTipo);
    ligacaoAgua.setSupressaoMotivo(supressaoMotivo);
    ligacaoAgua.setUltimaAlteracao(new Date());

    imovel.setLigacaoAguaSituacao(ligacaoAguaSituacao);
    imovel.setLigacaoAgua(ligacaoAgua);
    imovel.setUltimaAlteracao(new Date());

    BigDecimal valorAtual = new BigDecimal(0);

    if (ordemServico != null && efetuarSupressaoLigacaoAguaActionForm.getIdTipoDebito() != null) {

      ServicoNaoCobrancaMotivo servicoNaoCobrancaMotivo = null;

      ordemServico.setIndicadorComercialAtualizado(ConstantesSistema.SIM);

      if (efetuarSupressaoLigacaoAguaActionForm.getValorDebito() != null) {
        String valorDebito =
            efetuarSupressaoLigacaoAguaActionForm.getValorDebito().toString().replace(".", "");

        valorDebito = valorDebito.replace(",", ".");

        valorAtual = new BigDecimal(valorDebito);

        ordemServico.setValorAtual(valorAtual);
      }

      if (idServicoMotivoNaoCobranca != null && !idServicoMotivoNaoCobranca.equals("-1")) {
        servicoNaoCobrancaMotivo = new ServicoNaoCobrancaMotivo();
        servicoNaoCobrancaMotivo.setId(new Integer(idServicoMotivoNaoCobranca));
      }
      ordemServico.setServicoNaoCobrancaMotivo(servicoNaoCobrancaMotivo);

      if (valorPercentual != null) {
        ordemServico.setPercentualCobranca(
            new BigDecimal(efetuarSupressaoLigacaoAguaActionForm.getPercentualCobranca()));
      }

      ordemServico.setUltimaAlteracao(new Date());
    }

    String qtdParcelas = efetuarSupressaoLigacaoAguaActionForm.getQuantidadeParcelas();

    integracaoComercialHelper.setLigacaoAgua(ligacaoAgua);

    integracaoComercialHelper.setImovel(imovel);
    integracaoComercialHelper.setOrdemServico(ordemServico);
    integracaoComercialHelper.setQtdParcelas(qtdParcelas);

    if (efetuarSupressaoLigacaoAguaActionForm.getVeioEncerrarOS().equalsIgnoreCase("FALSE")) {
      integracaoComercialHelper.setVeioEncerrarOS(Boolean.FALSE);

      fachada.efetuarSupressaoLigacaoAgua(integracaoComercialHelper);
    } else {
      integracaoComercialHelper.setVeioEncerrarOS(Boolean.TRUE);
      sessao.setAttribute("integracaoComercialHelper", integracaoComercialHelper);

      if (sessao.getAttribute("semMenu") == null) {
        retorno = actionMapping.findForward("encerrarOrdemServicoAction");
      } else {
        retorno = actionMapping.findForward("encerrarOrdemServicoPopupAction");
      }
      sessao.removeAttribute("caminhoRetornoIntegracaoComercial");
    }
    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(
          httpServletRequest,
          "Supressão da Ligação de Água para o imóvel " + imovel.getId() + " efetuada com sucesso.",
          "Efetuar outra Supressão da Ligação de Água",
          "exibirEfetuarSupressaoLigacaoAguaAction.do?menu=sim",
          "exibirEfetuarSupressaoLigacaoAguaAction.do?idOrdemServico=" + idOrdemServico + "",
          "Atualizar Supressão de Ligação de Água");
    }

    return retorno;
  }
  public ActionForward execute(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {
    HttpSession session = request.getSession();

    AddApplicationServicesForm addForm = (AddApplicationServicesForm) form;
    AppdefEntityID aeid = new AppdefEntityID(addForm.getType().intValue(), addForm.getRid());

    HashMap<String, Object> forwardParams = new HashMap<String, Object>(2);
    forwardParams.put(Constants.ENTITY_ID_PARAM, aeid.getAppdefKey());
    forwardParams.put(Constants.ACCORDION_PARAM, "3");

    ActionForward forward = checkSubmit(request, mapping, form, forwardParams);
    if (forward != null) {
      BaseValidatorForm spiderForm = (BaseValidatorForm) form;

      if (spiderForm.isCancelClicked()
          || spiderForm.isResetClicked()
          || forward.getName().equalsIgnoreCase(Constants.RESET_URL)) {
        log.trace("removing pending service list");
        SessionUtils.removeList(session, Constants.PENDING_APPSVCS_SES_ATTR);
      } else if (spiderForm.isAddClicked()) {
        log.trace(
            "adding to pending service list " + Arrays.asList(addForm.getAvailableServices()));
        SessionUtils.addToList(
            session, Constants.PENDING_APPSVCS_SES_ATTR, addForm.getAvailableServices());
      } else if (spiderForm.isRemoveClicked()) {
        log.trace("removing from pending service list");
        SessionUtils.removeFromList(
            session, Constants.PENDING_APPSVCS_SES_ATTR, addForm.getPendingServices());
      }
      return forward;
    }

    Integer sessionId = RequestUtils.getSessionId(request);

    log.trace("getting pending service list");
    List<String> uiPendings =
        SessionUtils.getListAsListStr(session, Constants.PENDING_APPSVCS_SES_ATTR);
    List<AppdefEntityID> svcList = new ArrayList<AppdefEntityID>();

    for (int pRcs = 0; pRcs < uiPendings.size(); pRcs++) {
      log.debug("uiPendings = " + uiPendings.get(pRcs));
      StringTokenizer tok = new StringTokenizer(uiPendings.get(pRcs), " ");
      svcList.add(new AppdefEntityID(tok.nextToken()));
    }
    // when we call boss.setApplicationServices(...) our map must
    // be populated with all of the existing services (and whether
    // or not they're entry points) as well as our new ones

    // first, get the existing ones
    PageControl nullPc = new PageControl(-1, -1);
    List<AppdefResourceValue> existingServices =
        appdefBoss.findServiceInventoryByApplication(sessionId.intValue(), aeid.getId(), nullPc);
    DependencyTree tree = appdefBoss.getAppDependencyTree(sessionId.intValue(), aeid.getId());
    for (AppdefResourceValue service : existingServices) {

      log.debug("service =" + service.getClass().getName());

      tree.findAppService(service);
      svcList.add(service.getEntityId());
    }

    // second, get the new ones

    // set all added services to be entry points, if they're not to be
    // entry points and are instead part of a dependency chain,
    // setting up the dependencies is a separate activity

    log.trace("adding servicess " + svcList + " for application [" + aeid.getID() + "]");
    appdefBoss.setApplicationServices(sessionId.intValue(), aeid.getId(), svcList);
    log.trace("removing pending service list");
    SessionUtils.removeList(session, Constants.PENDING_APPSVCS_SES_ATTR);

    RequestUtils.setConfirmation(request, "resource.application.inventory.confirm.AddedServices");
    return returnSuccess(request, mapping, forwardParams);
  }