package gcom.gui.cadastro.endereco; import gcom.cadastro.endereco.Cep; import gcom.cadastro.endereco.FiltroCep; import gcom.cadastro.endereco.FiltroLogradouroTipo; import gcom.cadastro.endereco.FiltroLogradouroTitulo; import gcom.cadastro.endereco.LogradouroTipo; import gcom.cadastro.endereco.LogradouroTitulo; import gcom.cadastro.geografico.Bairro; 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.ComparacaoTexto; import gcom.util.filtro.ParametroSimples; import gcom.util.Util; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; 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 respons�vel pela pre-exibi��o da pagina de inserir logradouro * * @author S�vio Luiz * @created 15 de Julho de 2005 */ public class ExibirInserirLogradouroAction extends GcomAction { /** * 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("inserirLogradouro"); Fachada fachada = Fachada.getInstancia(); //Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); LogradouroActionForm logradouroActionForm = (LogradouroActionForm) actionForm; logradouroActionForm.setColecaoBairro(""); logradouroActionForm.setColecaoCep(""); if (sessao.getAttribute("colecaoBairrosSelecionadosUsuario") != null){ Collection colecaoBairros = (List) sessao .getAttribute("colecaoBairrosSelecionadosUsuario"); if (!colecaoBairros.isEmpty()){ logradouroActionForm.setColecaoBairro("CARREGADO"); } else{ logradouroActionForm.setColecaoBairro(""); } } if (sessao.getAttribute("colecaoCepSelecionadosUsuario") != null){ Collection colecaoCep = (List) sessao .getAttribute("colecaoCepSelecionadosUsuario"); if (!colecaoCep.isEmpty()){ logradouroActionForm.setColecaoCep("CARREGADO"); } else{ logradouroActionForm.setColecaoCep(""); } } //-------Parte que trata do c�digo quando o usu�rio tecla enter //caso seja o id do municipio String idDigitadoEnterMunicipio = (String) logradouroActionForm .getIdMunicipio(); String codigoDigitadoEnterBairro = (String) logradouroActionForm .getCodigoBairro(); // verifica se n�o foi a pesquisa do enter //se n�o for ent�o � a primeiravez que entra no action //prepara as cole��es de logradouro tipo e logradouro titulo para // exibir //na p�gina if ((idDigitadoEnterMunicipio == null || idDigitadoEnterMunicipio .trim().equals("")) && (codigoDigitadoEnterBairro == null || codigoDigitadoEnterBairro .trim().equals(""))) { FiltroLogradouroTipo filtroLogradouroTipo = new FiltroLogradouroTipo( FiltroLogradouroTipo.DESCRICAO); filtroLogradouroTipo.setConsultaSemLimites(true); filtroLogradouroTipo.adicionarParametro(new ParametroSimples( FiltroLogradouroTipo.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection logradouroTipos = fachada.pesquisar( filtroLogradouroTipo, LogradouroTipo.class.getName()); if (logradouroTipos == null || logradouroTipos.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhumresultado", null, "logradouro tipo"); } else { sessao.setAttribute("logradouroTipos", logradouroTipos); } FiltroLogradouroTitulo filtroLogradouroTitulo = new FiltroLogradouroTitulo( FiltroLogradouroTitulo.DESCRICAO); filtroLogradouroTitulo.setConsultaSemLimites(true); filtroLogradouroTitulo.adicionarParametro(new ParametroSimples( FiltroLogradouroTipo.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection logradouroTitulos = fachada.pesquisar( filtroLogradouroTitulo, LogradouroTitulo.class.getName()); if (logradouroTitulos == null || logradouroTitulos.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhumresultado", null, "logradouro t�tulo"); } else { sessao.setAttribute("logradouroTitulos", logradouroTitulos); } } /* * Removendo toda a cole��o de bairro da sess�o */ String removerColecaoBairro = httpServletRequest.getParameter("removerColecaoBairro"); if (removerColecaoBairro != null && !removerColecaoBairro.equals("")){ sessao.removeAttribute("colecaoBairrosSelecionadosUsuario"); logradouroActionForm.setColecaoBairro(""); } /* * Removendo toda a cole��o de cep da sess�o */ String removerColecaoCep = httpServletRequest.getParameter("removerColecaoCep"); if (removerColecaoCep != null && !removerColecaoCep.equals("")){ sessao.removeAttribute("colecaoCepSelecionadosUsuario"); logradouroActionForm.setColecaoCep(""); } //Verifica se o c�digo foi digitado if (idDigitadoEnterMunicipio != null && !idDigitadoEnterMunicipio.trim().equals("") && !Util.validarValorNaoNumerico(idDigitadoEnterMunicipio)) { FiltroMunicipio filtroMunicipio = new FiltroMunicipio(); filtroMunicipio.adicionarParametro(new ParametroSimples( FiltroMunicipio.ID, idDigitadoEnterMunicipio)); filtroMunicipio.adicionarParametro(new ParametroSimples( FiltroMunicipio.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection municipioEncontrado = fachada.pesquisar(filtroMunicipio, Municipio.class.getName()); if (municipioEncontrado != null && !municipioEncontrado.isEmpty()) { //O municipio foi encontrado logradouroActionForm .setIdMunicipio(((Municipio) ((List) municipioEncontrado) .get(0)).getId().toString()); logradouroActionForm .setNomeMunicipio(((Municipio) ((List) municipioEncontrado) .get(0)).getNome()); httpServletRequest.setAttribute("nomeCampo", "codigoBairro"); httpServletRequest.setAttribute("idMunicipioNaoEncontrado", "true"); Municipio municipio = ((Municipio) ((List) municipioEncontrado).get(0)); if (!fachada.verificarMunicipioComCepPorLogradouro(municipio)){ httpServletRequest.setAttribute("cepUnico", "OK"); Cep cep = fachada.obterCepUnicoMunicipio(municipio); if (cep != null){ Collection colecaoCepSelecionadosUsuario = new ArrayList(); colecaoCepSelecionadosUsuario.add(cep); sessao.setAttribute("colecaoCepSelecionadosUsuario", colecaoCepSelecionadosUsuario); } } } else { logradouroActionForm.setIdMunicipio(""); httpServletRequest.setAttribute("nomeCampo", "idMunicipio"); httpServletRequest.setAttribute("idMunicipioNaoEncontrado", "exception"); logradouroActionForm.setNomeMunicipio("Munic�pio inexistente"); } } //Verifica se o c�digo foi digitado if (codigoDigitadoEnterBairro != null && !codigoDigitadoEnterBairro.trim().equals("") && !Util.validarValorNaoNumerico(codigoDigitadoEnterBairro)) { FiltroBairro filtroBairro = new FiltroBairro(); filtroBairro.adicionarCaminhoParaCarregamentoEntidade("municipio"); filtroBairro.adicionarParametro(new ParametroSimples( FiltroBairro.CODIGO, codigoDigitadoEnterBairro)); filtroBairro.adicionarParametro(new ParametroSimples( FiltroBairro.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); // verifica se o bairro pesquisado � de um municipio existente if (idDigitadoEnterMunicipio != null && !idDigitadoEnterMunicipio.trim().equals("") && Integer.parseInt(idDigitadoEnterMunicipio) > 0) { filtroBairro.adicionarParametro(new ParametroSimples( FiltroBairro.MUNICIPIO_ID, idDigitadoEnterMunicipio)); } Collection bairroEncontrado = fachada.pesquisar(filtroBairro, Bairro.class.getName()); if (bairroEncontrado != null && !bairroEncontrado.isEmpty()) { //O bairro foi encontrado Bairro objetoBairroEncontrado = (Bairro) Util.retonarObjetoDeColecao(bairroEncontrado); logradouroActionForm.setCodigoBairro(String.valueOf(objetoBairroEncontrado.getCodigo())); logradouroActionForm.setNomeBairro(objetoBairroEncontrado.getNome()); httpServletRequest.setAttribute("nomeCampo", "botaoAdicionarBairro"); httpServletRequest.setAttribute("idBairroNaoEncontrado", "true"); /* * Adicionado o novo BAIRRO na cole��o */ String adicionarBairroColecao = httpServletRequest.getParameter("adicionarBairroColecao"); if (adicionarBairroColecao != null && !adicionarBairroColecao.equals("")){ logradouroActionForm.setCodigoBairro(""); logradouroActionForm.setNomeBairro(""); List colecaoBairrosSelecionadosUsuario = new ArrayList(); if (sessao.getAttribute("colecaoBairrosSelecionadosUsuario") != null){ colecaoBairrosSelecionadosUsuario = (List) sessao .getAttribute("colecaoBairrosSelecionadosUsuario"); if (!colecaoBairrosSelecionadosUsuario.contains((Bairro) ((List) bairroEncontrado).get(0))){ colecaoBairrosSelecionadosUsuario.add((Bairro) ((List) bairroEncontrado).get(0)); logradouroActionForm.setColecaoBairro("CARREGADO"); } else{ throw new ActionServletException( "atencao.objeto_ja_selecionado", null, "Bairro"); } } else{ colecaoBairrosSelecionadosUsuario.add((Bairro) ((List) bairroEncontrado).get(0)); sessao.setAttribute("colecaoBairrosSelecionadosUsuario", colecaoBairrosSelecionadosUsuario); logradouroActionForm.setColecaoBairro("CARREGADO"); } } } else { logradouroActionForm.setCodigoBairro(""); httpServletRequest.setAttribute("nomeCampo", "codigoBairro"); httpServletRequest.setAttribute("idBairroNaoEncontrado", "exception"); logradouroActionForm.setNomeBairro("Bairro inexistente"); } } //fim da parte da pesquisa do enter /* * Removendo o bairro selecionado da sess�o */ String idBairro = httpServletRequest.getParameter("idBairro"); if (idBairro != null && !idBairro.equals("") && sessao.getAttribute("colecaoBairrosSelecionadosUsuario") != null){ Collection colecaoBairrosSelecionadosUsuario = (Collection) sessao .getAttribute("colecaoBairrosSelecionadosUsuario"); Iterator colecaoBairrosSelecionadosUsuarioIterator; Bairro bairroInserir; colecaoBairrosSelecionadosUsuarioIterator = colecaoBairrosSelecionadosUsuario .iterator(); while (colecaoBairrosSelecionadosUsuarioIterator.hasNext()) { bairroInserir = (Bairro) colecaoBairrosSelecionadosUsuarioIterator .next(); if (bairroInserir.getId().equals(new Integer(idBairro))) { colecaoBairrosSelecionadosUsuario.remove(bairroInserir); break; } } if (colecaoBairrosSelecionadosUsuario.isEmpty()){ logradouroActionForm.setColecaoBairro(""); } } /* * Removendo o CEP selecionado da sess�o */ String idCep = httpServletRequest.getParameter("idCep"); if (idCep != null && !idCep.equals("") && sessao.getAttribute("colecaoCepSelecionadosUsuario") != null){ Collection colecaoCepSelecionadosUsuario = (Collection) sessao .getAttribute("colecaoCepSelecionadosUsuario"); Iterator colecaoCepSelecionadosUsuarioIterator; Cep cepInserir; colecaoCepSelecionadosUsuarioIterator = colecaoCepSelecionadosUsuario .iterator(); while (colecaoCepSelecionadosUsuarioIterator.hasNext()) { cepInserir = (Cep) colecaoCepSelecionadosUsuarioIterator .next(); if (cepInserir.getCepId().equals(new Integer(idCep))) { colecaoCepSelecionadosUsuario.remove(cepInserir); break; } } if (colecaoCepSelecionadosUsuario.isEmpty()){ logradouroActionForm.setColecaoCep(""); } } /* * Adicionando um cep na cole��o a partir do nome do munic�pio e do c�digo do cep */ String codigoDigitadoEnterCep = (String) logradouroActionForm.getCodigoCEP(); if (codigoDigitadoEnterCep != null && !codigoDigitadoEnterCep.trim().equals("") && !Util.validarValorNaoNumerico(codigoDigitadoEnterCep)) { FiltroCep filtroCep = new FiltroCep(); filtroCep.adicionarParametro(new ParametroSimples( FiltroCep.CODIGO, codigoDigitadoEnterCep)); filtroCep.adicionarParametro(new ParametroSimples( FiltroCep.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); if (logradouroActionForm.getNomeMunicipio() != null && !logradouroActionForm.getNomeMunicipio().trim().equals("")) { filtroCep.adicionarParametro(new ComparacaoTexto( FiltroCep.MUNICIPIO, logradouroActionForm.getNomeMunicipio())); } Collection cepEncontrado = fachada.pesquisar(filtroCep, Cep.class.getName()); if (cepEncontrado != null && !cepEncontrado.isEmpty()) { Cep objetoCepEncontrado = (Cep) Util.retonarObjetoDeColecao(cepEncontrado); logradouroActionForm.setCodigoCEP(String.valueOf(objetoCepEncontrado.getCodigo())); logradouroActionForm.setDescricaoCEP(objetoCepEncontrado.getDescricaoLogradouroFormatada()); httpServletRequest.setAttribute("nomeCampo", "botaoAdicionarCep"); httpServletRequest.setAttribute("idCEPNaoEncontrado", "true"); /* * Adicionado o novo CEP na cole��o */ String adicionarCepColecao = httpServletRequest.getParameter("adicionarCepColecao"); if (adicionarCepColecao != null && !adicionarCepColecao.equals("")){ logradouroActionForm.setCodigoCEP(""); logradouroActionForm.setDescricaoCEP(""); List colecaoCepSelecionadosUsuario = new ArrayList(); if (sessao.getAttribute("colecaoCepSelecionadosUsuario") != null){ colecaoCepSelecionadosUsuario = (List) sessao .getAttribute("colecaoCepSelecionadosUsuario"); if (!colecaoCepSelecionadosUsuario.contains((Cep) ((List) cepEncontrado).get(0))){ colecaoCepSelecionadosUsuario.add((Cep) ((List) cepEncontrado).get(0)); logradouroActionForm.setColecaoCep("CARREGADO"); } else{ throw new ActionServletException( "atencao.objeto_ja_selecionado", null, "Cep"); } } else{ colecaoCepSelecionadosUsuario.add((Cep) ((List) cepEncontrado).get(0)); sessao.setAttribute("colecaoCepSelecionadosUsuario", colecaoCepSelecionadosUsuario); logradouroActionForm.setColecaoCep("CARREGADO"); } } } else { logradouroActionForm.setCodigoCEP(""); httpServletRequest.setAttribute("nomeCampo", "codigoCEP"); httpServletRequest.setAttribute("idCEPNaoEncontrado", "exception"); logradouroActionForm.setDescricaoCEP("CEP inexistente"); } } return retorno; } }