/**
   * Obtém o ClienteImovel relacionado ao imóvel informado, onde a relação entre o cliente e o
   * imóvel seja de Usuário.
   *
   * @since 22/10/2009
   * @author Marlon Patrick
   */
  private Collection<ClienteImovel> obterColecaoClienteImovel(
      InformarVencimentoAlternativoActionForm informarVencimentoAlternativoActionForm) {
    FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();

    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.setorComercial");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoAguaSituacao");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoEsgotoSituacao");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.quadra.rota.faturamentoGrupo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel");

    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(
            FiltroClienteImovel.IMOVEL_ID, informarVencimentoAlternativoActionForm.getIdImovel()));

    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO));

    filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO));

    return Fachada.getInstancia().pesquisar(filtroClienteImovel, ClienteImovel.class.getName());
  }
  /**
   * Pesquisa Cliente
   *
   * @author Leonardo Regis
   * @date 23/09/2006
   * @param form
   * @param os
   */
  private void pesquisarCliente(EfetuarCorteLigacaoAguaActionForm form, OrdemServico ordemServico) {
    // Filtro para carregar o Cliente
    FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();

    // Comentado por Raphael Rossiter em 28/02/2007
    // filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID,
    // ordemServico.getRegistroAtendimento().getImovel().getId()));
    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, ordemServico.getImovel().getId()));

    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO));
    filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO));
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");

    Collection colecaoClienteImovel =
        this.getFachada().pesquisar(filtroClienteImovel, ClienteImovel.class.getName());
    if (colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()) {

      ClienteImovel clienteImovel = (ClienteImovel) colecaoClienteImovel.iterator().next();
      Cliente cliente = clienteImovel.getCliente();

      String documento = "";
      if (cliente.getCpf() != null && !cliente.getCpf().equals("")) {
        documento = cliente.getCpfFormatado();
      } else {
        documento = cliente.getCnpjFormatado();
      }
      // Cliente Nome/CPF-CNPJ
      form.setClienteUsuario(cliente.getNome());
      form.setCpfCnpjCliente(documento);
    } else {
      throw new ActionServletException("atencao.naocadastrado", null, "Cliente");
    }
  }
  /**
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

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

    HttpSession sessao = httpServletRequest.getSession(false);

    Fachada fachada = Fachada.getInstancia();

    ManterGuiaDevolucaoActionForm manterGuiaDevolucaoActionForm =
        (ManterGuiaDevolucaoActionForm) actionForm;

    // Limpa o atributo se o usuário voltou para o manter
    if (sessao.getAttribute("guiaDevolucaoAtualizar") != null) {
      sessao.removeAttribute("guiaDevolucaoAtualizar");
    }
    FiltroGuiaDevolucao filtroGuiaDevolucao = null;

    if (sessao.getAttribute("filtroGuiaDevolucaoCliente") != null) {
      filtroGuiaDevolucao = (FiltroGuiaDevolucao) sessao.getAttribute("filtroGuiaDevolucaoCliente");
      sessao.setAttribute("filtroGuiaDevolucaoCliente", filtroGuiaDevolucao);
      Cliente cliente = (Cliente) sessao.getAttribute("cliente");
      sessao.setAttribute("cliente", cliente);

      manterGuiaDevolucaoActionForm.setIdCliente(cliente.getId().toString());
      manterGuiaDevolucaoActionForm.setNomeCliente(cliente.getNome());

      // Verifica o tipo do cliente para setar o cpf ou cnpj e profissão
      // ou ramo atividade
      if (cliente.getClienteTipo().getId().equals(ClienteTipo.INDICADOR_PESSOA_FISICA)) {
        manterGuiaDevolucaoActionForm.setCpfCnpj(cliente.getCpfFormatado());
        if (cliente.getProfissao() != null) {
          manterGuiaDevolucaoActionForm.setProfissao(cliente.getProfissao().getDescricao());
        }
      } else {
        manterGuiaDevolucaoActionForm.setCpfCnpj(cliente.getCnpjFormatado());
        if (cliente.getRamoAtividade() != null) {
          manterGuiaDevolucaoActionForm.setRamoAtividade(cliente.getRamoAtividade().getDescricao());
        }
      }

    } else {
      filtroGuiaDevolucao = (FiltroGuiaDevolucao) sessao.getAttribute("filtroGuiaDevolucaoImovel");
      sessao.setAttribute("filtroGuiaDevolucaoImovel", filtroGuiaDevolucao);
      Imovel imovel = (Imovel) sessao.getAttribute("imovel");
      sessao.setAttribute("imovel", imovel);

      manterGuiaDevolucaoActionForm.setIdImovel(imovel.getId().toString());
      manterGuiaDevolucaoActionForm.setInscricao(imovel.getInscricaoFormatada());

      FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, imovel.getId()));
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(
              FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO));
      filtroClienteImovel.adicionarParametro(
          new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO));
      filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");

      Collection colecaoClienteImovel =
          fachada.pesquisar(filtroClienteImovel, ClienteImovel.class.getName());

      if (colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()) {
        ClienteImovel clienteImovel = (ClienteImovel) colecaoClienteImovel.iterator().next();
        manterGuiaDevolucaoActionForm.setNomeCliente(clienteImovel.getCliente().getNome());
      }

      if (imovel.getLigacaoAguaSituacao() != null) {
        manterGuiaDevolucaoActionForm.setSituacaoLigacaoAgua(
            imovel.getLigacaoAguaSituacao().getDescricao());
      }

      if (imovel.getLigacaoEsgotoSituacao() != null) {
        manterGuiaDevolucaoActionForm.setSituacaoLigacaoEsgoto(
            imovel.getLigacaoEsgotoSituacao().getDescricao());
      }

      retorno = actionMapping.findForward("exibirManterGuiaDevolucaoImovel");
    }

    // 1º Passo - Pegar o total de registros através de um count da consulta
    // que aparecerá na tela
    Integer totalRegistros = fachada.pesquisarGuiaDevolucaoCount(filtroGuiaDevolucao);

    // 2º Passo - Chamar a função de Paginação passando o total de registros
    retorno = this.controlarPaginacao(httpServletRequest, retorno, totalRegistros);

    // 3º Passo - Obter a coleção da consulta que aparecerá na tela passando
    // o numero de paginas
    // da pesquisa que está no request
    // Faz os carregamentos necessários
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "registroAtendimento.imovel.localidade");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "registroAtendimento.imovel.setorComercial");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "registroAtendimento.imovel.quadra");
    //		filtroGuiaDevolucao
    //				.adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.cliente");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "ordemServico.servicoTipo.debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("localidade");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("imovel.localidade");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("imovel.setorComercial");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("cliente");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("conta");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("guiaPagamento.debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "debitoACobrarGeral.debitoACobrar.debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("creditoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("documentoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil");

    filtroGuiaDevolucao.setCampoOrderBy(
        FiltroGuiaDevolucao.CREDITO_TIPO_ID, FiltroGuiaDevolucao.DOCUMENTO_TIPO_ID);

    Collection colecaoGuiaDevolucao =
        fachada.pesquisarGuiaDevolucao(
            filtroGuiaDevolucao,
            ((Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")));

    filtroGuiaDevolucao.limparCamposOrderBy();

    if (colecaoGuiaDevolucao != null && !colecaoGuiaDevolucao.isEmpty()) {
      //			if (colecaoGuiaDevolucao.size() == 1
      //					&& (httpServletRequest.getParameter("page.offset") == null || httpServletRequest
      //							.getParameter("page.offset").equals("1"))) {
      //				if (httpServletRequest.getParameter("atualizar") != null) {
      //					retorno = actionMapping
      //							.findForward("exibirAtualizarGuiaDevolucao");
      //					GuiaDevolucao guiaDevolucao = (GuiaDevolucao) colecaoGuiaDevolucao
      //							.iterator().next();
      //					sessao.setAttribute("guiaDevolucao", guiaDevolucao);
      //				} else {
      //					httpServletRequest.setAttribute("colecaoGuiaDevolucao",
      //							colecaoGuiaDevolucao);
      //				}
      //			} else {
      httpServletRequest.setAttribute("colecaoGuiaDevolucao", colecaoGuiaDevolucao);
      //			}
    } else {
      // Nenhuma resolução de diretoria cadastrada
      throw new ActionServletException("atencao.pesquisa.nenhumresultado");
    }

    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) {

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

    Fachada fachada = Fachada.getInstancia();

    // Mudar isso quando implementar a parte de segurança
    HttpSession sessao = httpServletRequest.getSession(false);

    String matriculaImovel = httpServletRequest.getParameter("MatriculaImovel").trim();

    FiltroImovel filtroImovel = new FiltroImovel();

    filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, matriculaImovel));

    // Procura Imovel na base
    Imovel imovel =
        (Imovel)
            Util.retonarObjetoDeColecao(fachada.pesquisar(filtroImovel, Imovel.class.getName()));

    // [FS0009] - Verificar se o imóvel é um condomínio
    if (imovel.getIndicadorImovelCondominio() == null
        || !imovel.getIndicadorImovelCondominio().equals(Imovel.IMOVEL_EXCLUIDO)) {
      throw new ActionServletException("atencao.imovel.nao_condominio");
    }

    /*
     * [SB0003] Desfazer Vínculo
     * a lista deverá ser ordenada pelo indicador de imóvel área comum
     * (imov_icimovelareaccomum/imov_id,
     * Caso o referido indicador seja igual a 1  a fonte dos dados exibidos será apresentada em vermelho
     */
    FiltroClienteImovel filtroClienteImovel =
        new FiltroClienteImovel(FiltroClienteImovel.IMOVEL_INDICADOR_IMOVEL_AREA_COMUM);

    // Objetos que serão retornados pelo Hibernate através do clienteImovel
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.logradouroCep.logradouro.logradouroTipo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.logradouroCep.logradouro.logradouroTitulo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.enderecoReferencia");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.BAIRRO);
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CEP);
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.LOCALIDADE);
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroCep.logradouro");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.setorComercial.municipio.unidadeFederacao");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE);
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra.rota");

    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.logradouroBairro.bairro.municipio.unidadeFederacao");

    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO));
    filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO));
    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.IMOVEL_CONDOMINIO_ID, matriculaImovel));

    Collection<Imovel> imovelPesquisadoVinculados =
        fachada.pesquisar(filtroClienteImovel, ClienteImovel.class.getName());

    sessao.setAttribute("colecaoImoveisVinculados", imovelPesquisadoVinculados);
    sessao.setAttribute("imovelCondominio", imovel);

    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) {

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

    // Mudar isso quando tiver esquema de segurança
    HttpSession sessao = httpServletRequest.getSession(false);

    DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm;

    // Recupera os parâmetros do form
    String idLocalidade = (String) pesquisarActionForm.get("idLocalidade");
    String codigoSetorComercial = (String) pesquisarActionForm.get("codigoSetorComercial");
    String idQuadra = (String) pesquisarActionForm.get("idQuadra");
    String lote = (String) pesquisarActionForm.get("lote");
    String SubLote = (String) pesquisarActionForm.get("subLote");
    String idCliente = (String) pesquisarActionForm.get("idCliente");
    String cep = (String) pesquisarActionForm.get("cep");
    String codigoBairro = (String) pesquisarActionForm.get("codigoBairroImovel");
    String idMunicipio = (String) pesquisarActionForm.get("idMunicipioImovel");
    String idLogradouro = (String) pesquisarActionForm.get("idLogradouro");
    String numeroImovelInicialFiltro =
        (String) pesquisarActionForm.get("numeroImovelInicialFiltro");
    String numeroImovelFinalFiltro = (String) pesquisarActionForm.get("numeroImovelFinalFiltro");

    //		FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(
    //			FiltroClienteImovel.CLIENTE_NOME);

    FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();

    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.logradouroBairro.bairro.municipio.unidadeFederacao");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroCep.cep");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.logradouroCep.logradouro.logradouroTipo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.logradouroCep.logradouro.logradouroTitulo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.enderecoReferencia");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.perimetroInicial.logradouroTipo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.perimetroInicial.logradouroTitulo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.perimetroFinal.logradouroTipo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.perimetroFinal.logradouroTitulo");
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(
        "imovel.setorComercial.municipio.unidadeFederacao");

    boolean peloMenosUmParametroInformado = false;

    // caso codigo cliente esteja nulo então faz uma pesquisa por cliente
    // imovel
    if (idCliente != null && !idCliente.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;

      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.CLIENTE_ID, new Integer(idCliente)));
    }

    // Insere os parâmetros informados no filtro
    if (idLocalidade != null && !idLocalidade.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.LOCALIDADE_ID, new Integer(idLocalidade)));
    }

    if (codigoSetorComercial != null && !codigoSetorComercial.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(
              FiltroClienteImovel.SETOR_COMERCIAL_CODIGO, new Integer(codigoSetorComercial)));
    }

    if (idQuadra != null && !idQuadra.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.QUADRA_NUMERO, new Integer(idQuadra)));
    }
    if (lote != null && !lote.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.LOTE, new Short(lote)));
    }

    if (SubLote != null && !SubLote.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.SUBLOTE, new Short(SubLote)));
    }

    if (cep != null && !cep.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.CEP_CODIGO, cep));
    }

    if (idMunicipio != null && !idMunicipio.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(
              FiltroClienteImovel.MUNICIPIO_SETOR_COMERICAL_CODIGO, new Integer(idMunicipio)));
    }

    if (codigoBairro != null && !codigoBairro.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.BAIRRO_CODIGO, new Integer(codigoBairro)));
    }

    if (idLogradouro != null && !idLogradouro.trim().equalsIgnoreCase("")) {
      peloMenosUmParametroInformado = true;
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.LOGRADOURO_ID, new Integer(idLogradouro)));
    }
    // adiciona o indicador de uso de clinte(caso ativo)
    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(
            FiltroClienteImovel.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));

    // adiciona o indicador de exclusão do imovel
    filtroClienteImovel.adicionarParametro(
        new ParametroSimplesDiferenteDe(
            FiltroClienteImovel.INDICADOR_IMOVEL_EXCLUIDO,
            Imovel.IMOVEL_EXCLUIDO,
            FiltroParametro.CONECTOR_OR,
            2));

    filtroClienteImovel.adicionarParametro(
        new ParametroNulo(FiltroClienteImovel.INDICADOR_IMOVEL_EXCLUIDO));

    // inclui o parametro de pesquisa de imóveis os quais não possuem o
    // perfil de
    // tarifa social, cujo o id é 3.
    if (sessao.getAttribute("caminhoRetorno") != null
        && !sessao.getAttribute("caminhoRetorno").equals("")
        && sessao.getAttribute("caminhoRetorno").equals("exibirInserirTarifaSocialImovelAction")) {

      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(
              FiltroClienteImovel.IMOVEL_PERFIL_INDICADOR_USO,
              ConstantesSistema.INDICADOR_USO_ATIVO));
      filtroClienteImovel.adicionarParametro(
          new ParametroSimplesDiferenteDe(
              FiltroClienteImovel.IMOVEL_PERFIL, ImovelPerfil.TARIFA_SOCIAL));
    }

    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO));

    // Erro caso o usuário mandou filtrar sem nenhum parâmetro
    if (!peloMenosUmParametroInformado) {
      throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
    }

    boolean pesquisarImovelCondominio = false;
    // verfica se é so para pesquisar os imoveis condominios
    if (sessao.getAttribute("pesquisarImovelCondominio") != null) {
      pesquisarImovelCondominio = true;
    }

    Collection clienteImoveis = null;

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

    // 1º Passo - Pegar o total de registros através de um count da consulta que aparecerá na tela
    int totalRegistros =
        fachada
            .pesquisarQuantidadeImovelInscricao(
                null,
                idLocalidade,
                codigoSetorComercial,
                idQuadra,
                lote,
                SubLote,
                idCliente,
                idMunicipio,
                cep,
                codigoBairro,
                idLogradouro,
                numeroImovelInicialFiltro,
                numeroImovelFinalFiltro,
                pesquisarImovelCondominio)
            .intValue();

    if (totalRegistros == 0) {
      // Nenhuma imovel cadastrado
      throw new ActionServletException("atencao.pesquisa.nenhumresultado", "imovel");
    } else {
      // 2º Passo - Chamar a função de Paginação passando o total de registros
      retorno = this.controlarPaginacao(httpServletRequest, retorno, totalRegistros);

      // 3º Passo - Obter a coleção da consulta que aparecerá na tela passando o numero de paginas
      // da pesquisa que está no request
      clienteImoveis =
          fachada.pesquisarImovelInscricao(
              null,
              idLocalidade,
              codigoSetorComercial,
              idQuadra,
              lote,
              SubLote,
              idCliente,
              idMunicipio,
              cep,
              codigoBairro,
              idLogradouro,
              numeroImovelInicialFiltro,
              numeroImovelFinalFiltro,
              pesquisarImovelCondominio,
              ((Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")));

      // Coloca a coleção na sessão
      sessao.setAttribute("colecaoClientesImoveis", clienteImoveis);
    }

    return retorno;
  }