package gcom.gui.cadastro.imovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.cliente.FiltroClienteImovel; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelPerfil; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.filtro.FiltroParametro; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesDiferenteDe; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.validator.DynaValidatorForm; /** * Realiza a pesquisa de imovel de acordo com os par�metros informados * * @author S�vio Luiz * @created 21 de Julho de 2005 */ public class PesquisarImovelAction extends GcomAction { /** * < <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; } }