package gcom.gui.cadastro.endereco; import gcom.cadastro.endereco.Cep; import gcom.cadastro.endereco.FiltroCep; import gcom.cadastro.geografico.FiltroBairro; import gcom.cadastro.geografico.FiltroMunicipio; import gcom.cadastro.geografico.Municipio; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.filtro.ParametroSimples; 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; /** * Action que define o processamento da p�gina de pesquisa de Logradouro * * @author rossiter */ public class PesquisarLogradouroAction 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) { // Seta o retorno ActionForward retorno = actionMapping .findForward("pesquisarLogradouro"); // Obt�m a inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); // Obt�m a sess�o HttpSession sessao = httpServletRequest.getSession(false); ExibirPesquisarLogradouroActionForm exibirPesquisarLogradouroActionForm = (ExibirPesquisarLogradouroActionForm) actionForm; // Carregando as vari�veis do action form String codigoMunicipioJSP = exibirPesquisarLogradouroActionForm .getCodigoMunicipio(); String nomeJSP = exibirPesquisarLogradouroActionForm.getNome(); String nomepopularJSP = exibirPesquisarLogradouroActionForm .getNomePopular(); String logradouroTipoJSP = exibirPesquisarLogradouroActionForm .getTipoLogradouro(); String logradouroTituloJSP = exibirPesquisarLogradouroActionForm .getTitulo(); String cep = exibirPesquisarLogradouroActionForm.getCep(); String codigoBairroJSP = exibirPesquisarLogradouroActionForm .getCodigoBairro(); String tipoPesquisa = exibirPesquisarLogradouroActionForm .getTipoPesquisa(); String tipoPesquisaPopular = exibirPesquisarLogradouroActionForm .getTipoPesquisaPopular(); // Criando o filtro e o objeto de retorno da pesquisa de munic�pio FiltroMunicipio filtroMunicipio = new FiltroMunicipio(); FiltroBairro filtroBairro = new FiltroBairro(); Collection colecaoMunicipio = null; //Collection colecaoBairro = null; // Validando o campo c�digo e o campo nome do munic�pio if (codigoMunicipioJSP != null && !codigoMunicipioJSP.equalsIgnoreCase("")) { filtroMunicipio.adicionarParametro(new ParametroSimples( FiltroMunicipio.ID, new Integer(codigoMunicipioJSP))); // Validando as informa��es referentes ao munic�pio // ---------------------------------------------------------------------- colecaoMunicipio = fachada.pesquisar(filtroMunicipio, Municipio.class.getName()); if (colecaoMunicipio == null || colecaoMunicipio.isEmpty()) { // Nenhum munic�pio cadastrado de acordo com os par�metros // passados throw new ActionServletException( "atencao.pesquisa.municipio_inexistente"); } } else { throw new ActionServletException( "atencao.pesquisa.logradouro_codigo_nome_municipio"); } // Validando o campo c�digo e o campo nome do Bairro if (codigoBairroJSP != null && !codigoBairroJSP.equalsIgnoreCase("")) { filtroBairro.adicionarParametro(new ParametroSimples( FiltroBairro.ID, new Integer(codigoBairroJSP))); // Validando as informa��es referentes ao munic�pio // ---------------------------------------------------------------------- //colecaoBairro = fachada.pesquisar(filtroBairro, Bairro.class // .getName()); if (colecaoMunicipio == null || colecaoMunicipio.isEmpty()) { // Nenhum munic�pio cadastrado de acordo com os par�metros // passados throw new ActionServletException( "atencao.pesquisa.bairro_inexistente"); } } Collection colecaoLogradouro = null; /** * * //Criando o filtro e o objeto de retorno da pesquisa FiltroLogradouro * filtroLogradouro = new FiltroLogradouro(FiltroLogradouro.NOME); * FiltroLogradouroCep filtroLogradouroCep = new * FiltroLogradouroCep(FiltroLogradouroCep.NOME_LOGRADOURO); * * * //Objetos que ser�o retornados pelo hibernate * filtroLogradouro.adicionarCaminhoParaCarregamentoEntidade("municipio.nome"); * filtroLogradouro.adicionarCaminhoParaCarregamentoEntidade("logradouroTipo.descricaoAbreviada"); * filtroLogradouro.adicionarCaminhoParaCarregamentoEntidade("logradouroTitulo.descricaoAbreviada"); * * Collection colecaoFiltroLogradouroBairro = null; */ boolean peloMenosUmParametroInformado = false; // Validando os campos do formulario // Se o parametro cep estiver preenchido pesquisa pela tabela // logradouro_cep // sen�o pesquisa pela tabela logradouro if (cep == null || cep.trim().equals("")) { if (codigoMunicipioJSP != null && !codigoMunicipioJSP.equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; /** * filtroLogradouro.adicionarParametro(new ParametroSimples( * FiltroLogradouro.ID_MUNICIPIO, new Integer( * codigoMunicipioJSP))); */ } // Validando o campo nome do logradouro if (nomeJSP != null && !nomeJSP.equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; /** * filtroLogradouro.adicionarParametro(new ComparacaoTexto( * FiltroLogradouro.NOME, nomeJSP)); */ } // Validando o campo nome do logradouro if (nomepopularJSP != null && !nomepopularJSP.equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; // filtroLogradouro.adicionarParametro(new ComparacaoTexto( // FiltroLogradouro.NOME_POPULAR, nomepopularJSP)); } // Validando o campo tipo do logradouro if (logradouroTipoJSP != null && !logradouroTipoJSP.equalsIgnoreCase(String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) { peloMenosUmParametroInformado = true; // filtroLogradouro.adicionarParametro(new ParametroSimples( // FiltroLogradouro.ID_LOGRADOUROTIPO, logradouroTipoJSP)); } // Validando o campo titulo do logradouro if (logradouroTituloJSP != null && !logradouroTituloJSP.equalsIgnoreCase(String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) { peloMenosUmParametroInformado = true; // filtroLogradouro.adicionarParametro(new ParametroSimples( // FiltroLogradouro.ID_LOGRADOUROTITULO, logradouroTituloJSP)); } /** * if( sessao.getAttribute("indicadorUsoTodos") == null ){ * filtroLogradouro.adicionarParametro(new ParametroSimples( * FiltroLogradouro.INDICADORUSO, * ConstantesSistema.INDICADOR_USO_ATIVO)); } */ // Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ActionServletException( "atencao.filtro.nenhum_parametro_informado"); } /** * //Retorna o(s) logradouro(s) colecaoLogradouro = * fachada.pesquisar(filtroLogradouro, Logradouro.class.getName()); * */ } else { // Validando as informa��es referentes ao cep // ---------------------------------------------------------------------- FiltroCep filtroCep = new FiltroCep(); filtroCep.adicionarParametro(new ParametroSimples(FiltroCep.CODIGO, cep)); Collection colecaoCep = fachada.pesquisar(filtroCep, Cep.class .getName()); if (colecaoCep.isEmpty()) { // Nenhum cep cadastrado de acordo com os par�metros passados throw new ActionServletException( "atencao.pesquisa.cep_inexistente"); } if (codigoMunicipioJSP != null && !codigoMunicipioJSP.equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; // filtroLogradouroCep.adicionarParametro(new ParametroSimples( // FiltroLogradouroCep.ID_MUNICIPIO_LOGRADOURO, new Integer( // codigoMunicipioJSP))); } // Validando o campo nome do logradouro if (nomeJSP != null && !nomeJSP.equalsIgnoreCase("")) { peloMenosUmParametroInformado = true; // filtroLogradouroCep.adicionarParametro(new ComparacaoTexto( // FiltroLogradouroCep.NOME_LOGRADOURO, nomeJSP)); } // Validando o campo tipo do logradouro if (logradouroTipoJSP != null && !logradouroTipoJSP.equalsIgnoreCase(String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) { peloMenosUmParametroInformado = true; // filtroLogradouroCep.adicionarParametro(new ParametroSimples( // FiltroLogradouroCep.ID_LOGRADOUROTIPO_LOGRADOURO, // logradouroTipoJSP)); } // Validando o campo titulo do logradouro if (logradouroTituloJSP != null && !logradouroTituloJSP.equalsIgnoreCase(String .valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) { peloMenosUmParametroInformado = true; // filtroLogradouroCep.adicionarParametro(new ParametroSimples( // FiltroLogradouroCep.ID_LOGRADOUROTITULO_LOGRADOURO, // logradouroTituloJSP)); } /** * if( sessao.getAttribute("indicadorUsoTodos") == null ){ * filtroLogradouro.adicionarParametro(new ParametroSimples( * FiltroLogradouroCep.INDICADOR_USO, * ConstantesSistema.INDICADOR_USO_ATIVO)); } */ // Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ActionServletException( "atencao.filtro.nenhum_parametro_informado"); } /** * //Retorna o(s) logradouro(s) colecaoLogradouro = * fachada.pesquisar(filtroLogradouroCep, * LogradouroCep.class.getName()); */ } // // ---------------------------------------------------------------------- // 1� Passo - Pegar o total de registros atrav�s de um count da consulta // que aparecer� na tela Integer totalRegistros = fachada.pesquisarLogradouroCompletoCount( codigoMunicipioJSP, codigoBairroJSP, nomeJSP, nomepopularJSP, logradouroTipoJSP, logradouroTituloJSP, cep, "", "", tipoPesquisa, tipoPesquisaPopular); if (totalRegistros.intValue() <= 0 || totalRegistros == null) { throw new ActionServletException("atencao.pesquisa.nenhumresultado"); } // 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 colecaoLogradouro = fachada.pesquisarLogradouroCompleto( codigoMunicipioJSP, codigoBairroJSP, nomeJSP, nomepopularJSP, logradouroTipoJSP, logradouroTituloJSP, cep, "", "", tipoPesquisa, tipoPesquisaPopular, (Integer) httpServletRequest .getAttribute("numeroPaginasPesquisa")); sessao.setAttribute("logradouros", colecaoLogradouro); sessao.setAttribute("tipoReultado", "logradouro"); // devolve o mapeamento de retorno sessao.removeAttribute("indicadorUso"); return retorno; } }