package gcom.gui.integracao; import gcom.atendimentopublico.registroatendimento.FiltroRegistroAtendimento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.cadastro.DbVersaoBase; import gcom.cadastro.endereco.EnderecoReferencia; import gcom.cadastro.endereco.FiltroEnderecoReferencia; import gcom.cadastro.endereco.FiltroLogradouroBairro; import gcom.cadastro.endereco.FiltroLogradouroCep; import gcom.cadastro.endereco.LogradouroBairro; import gcom.cadastro.endereco.LogradouroCep; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.gui.SessaoHttpListener; import gcom.gui.seguranca.acesso.MenuGCOM; import gcom.integracao.GisRetornoMotivo; import gcom.seguranca.acesso.FiltroGrupoFuncionalidadeOperacao; import gcom.seguranca.acesso.Funcionalidade; import gcom.seguranca.acesso.FuncionalidadeCategoria; import gcom.seguranca.acesso.Grupo; import gcom.seguranca.acesso.GrupoFuncionalidadeOperacao; import gcom.seguranca.acesso.GrupoFuncionalidadeOperacaoPK; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.FiltroUsuarioGrupoRestricao; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioFavorito; import gcom.seguranca.acesso.usuario.UsuarioGrupoRestricao; import gcom.seguranca.acesso.usuario.UsuarioSituacao; import gcom.util.ConstantesSistema; import gcom.util.Internacionalizador; import gcom.util.Util; import gcom.util.filtro.FiltroParametro; import gcom.util.filtro.ParametroSimples; import gcom.util.validacao.AssinaturaDSA; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.Globals; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.util.PropertyMessageResources; /** * Action utilizado * * * * @author Yara T. Souza * @since 10/03/2009 */ public class ProcessarRequisicaoGisAction extends GcomAction { public static HashMap<String, Collection> listaRAIntegracaoGIS = null; static { listaRAIntegracaoGIS = new HashMap<String, Collection> (); } // Obt�m a inst�ncia da fachada private Fachada fachada = Fachada.getInstancia(); Integer retorno = GisRetornoMotivo.OPERACAO_SUCESSO; /** * Action que captura as requisi��es vindas do Gis para inser��o de RA no GSAN * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { HttpSession sessao = request.getSession(false); String hashValidacao = request.getParameter("sign"); /** * * Requisi��o vinda do ProGIS * **/ if(hashValidacao != null && !hashValidacao.equals("")){ String loginUsuario = request.getParameter("usur_nmlogin"); ActionForward retorno = actionMapping.findForward("exibirInserirRA"); //Objeto GIS que ser� usado para preencher os dados passados pelo GIS no GSAN GisHelper gisHelper = new GisHelper(); gisHelper.setHashValidacao(hashValidacao); gisHelper.setLogin(loginUsuario); //Subistitui os caracteres usados para passagem de par�metro via GET pelos de BASE64 Correspondentes hashValidacao = hashValidacao.replace("-","/").replace("_","+")+"=="; Usuario usuarioLogado = null; //Limpa a sess�o para o primeiro acesso sessao.removeAttribute("gis"); sessao.removeAttribute("origemGIS"); sessao.removeAttribute("temImovelGIS"); sessao.removeAttribute("idRegistroAtendimento"); sessao.removeAttribute("colecaoEnderecos"); sessao.removeAttribute("enderecoPertenceImovel"); sessao.removeAttribute("habilitarAlteracaoEndereco"); sessao.removeAttribute("colecaoBairroArea"); sessao.removeAttribute("desabilitarMunicipioBairro"); sessao.removeAttribute("desabilitarDivisaoEsgoto"); sessao.removeAttribute("desabilitarPavimentoRua"); sessao.removeAttribute("desabilitarPavimentoCalcada"); sessao.removeAttribute("desabilitarLcalidadeSetorQuadra"); sessao.removeAttribute("indicCoordenadaSemLogradouro"); sessao.removeAttribute("colecaoPagamentosDuplicidade"); sessao.removeAttribute("colecaoConta"); /** * RM5236 - Abertura de RA Atrav�s do PROGIS * * Verifica se o usu�rio que est� tentando realizar a requisi��o � oriundo de uma chamada GIS. * Caso sim, cria um usu�rio para a sess�o. * **/ //Valida��o da assinatura String path = getServlet().getServletContext().getRealPath("/WEB-INF/util/DSA_PROGIS_Publica.xml"); //String path = getServlet().getServletContext().getRealPath("/WEB-inf/util/DSA_PROGIS_Publica_TESTES.xml"); AssinaturaDSA verificador = new AssinaturaDSA(path); if(!verificador.validarHash(loginUsuario.getBytes(),hashValidacao.getBytes())){ throw new ActionServletException("atencao.assinatura.invalida", null, loginUsuario); } /********************* Login do Usu�rio ***************************/ FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("gerenciaRegional"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("localidadeElo"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("usuarioSituacao"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("usuarioTipo"); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("unidadeOrganizacional.unidadeTipo"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("funcionario"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("empresa"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("usuarioAbrangencia"); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN,loginUsuario)); List<Usuario> list = new ArrayList(fachada.pesquisar(filtroUsuario,Usuario.class.getName())); //Valida o usu�rio if(list.size() != 0) usuarioLogado = list.get(0); else throw new ActionServletException("atencao.login.inexistente", loginUsuario); //Verifica a situa��o do usu�rio if (!this.verificarSituacaoUsuario(usuarioLogado)) { if (usuarioLogado.getUsuarioSituacao().getId().equals(UsuarioSituacao.INATIVO)) { throw new ActionServletException("atencao.usuario_invalido", null, usuarioLogado.getLogin()); } else { throw new ActionServletException("atencao.usuario.cpf.inexistente", null,""); } } // Buscar as permiss�es do(s) grupo(s) do usu�rio FiltroGrupoFuncionalidadeOperacao filtroGrupoFuncionalidadeOperacao = new FiltroGrupoFuncionalidadeOperacao(); filtroGrupoFuncionalidadeOperacao.setCampoOrderBy(FiltroGrupoFuncionalidadeOperacao.FUNCIONALIDADE_NUMERO_ORDEM_MENU); filtroGrupoFuncionalidadeOperacao.setConsultaSemLimites(true); // Pesquisa os grupos do usu�rio Collection colecaoGruposUsuario = this.getFachada().pesquisarGruposUsuario(usuarioLogado.getId()); // Seta na sess�o os grupos aos que o usu�rio pertence sessao.setAttribute("colecaoGruposUsuario",colecaoGruposUsuario); // Cria o iterator dos grupos do usu�rio logado Iterator iterator = colecaoGruposUsuario.iterator(); // La�o para adicionar todos os id's dos grupos no filtro // para pesquisar os acessos de todos os grupos do usu�rio // logado while (iterator.hasNext()) { Grupo grupoUsuario = (Grupo) iterator.next(); filtroGrupoFuncionalidadeOperacao.adicionarParametro(new ParametroSimples(FiltroGrupoFuncionalidadeOperacao.GRUPO_ID,grupoUsuario.getId(),FiltroParametro.CONECTOR_OR)); // Verifica se existe alguma mensagem para o // grupo que o usuario logado pertence. if(grupoUsuario.getMensagem()!=null && !grupoUsuario.getMensagem().equals("")){ // Coloca a mensagem na sessao sessao.setAttribute("mensagemGrupo",grupoUsuario.getMensagem()); } } /* * Pesquisa todas as permiss�es do usu�rio * pesquisa ocorr�ncia na tabela GrupoFuncionalidadeOperacao para os grupos * aos quais o usu�rio logado pertence */ Collection permissoes = this.getFachada().pesquisar(filtroGrupoFuncionalidadeOperacao,GrupoFuncionalidadeOperacao.class.getName()); /* * Pesquisa todas as restri��es do usu�rio * pesquisa se existe ocorr�ncia na tabela UsuarioGrupoRestricao para o usu�rio * que est� logado. */ Collection restricoes = this.pesquisarRestricaoUsuario(usuarioLogado); //Caso exista restri��es para o usu�rio logado //remove todas as funcionalidades que o usu�rio n�o tem acesso if(restricoes != null && !restricoes.isEmpty()){ permissoes.removeAll(restricoes); } // Obt�m a �rvore de funcionalidades do sistema FuncionalidadeCategoria arvoreFuncionalidades = this.getFachada().pesquisarArvoreFuncionalidades(permissoes); // Pega o ip do usuario logado.Esse ip sera usado no registrar transacao. // Para cada registrar transacao, sera gravado o ip na tabela usuario_acao. String ip = request.getRemoteAddr(); usuarioLogado.setIpLogado(ip); // Coloca a �rvore de funcionalidades/permiss�es na sess�o // para // futuras consultas sessao.setAttribute("arvoreFuncionalidades",arvoreFuncionalidades); // Adiciona o usu�rio logado na sess�o sessao.setAttribute("usuarioLogado", usuarioLogado); // Cria uma inst�ncia do menu para gerar a arv�re do menu MenuGCOM menu = new MenuGCOM(); String menuGerado = menu.gerarMenu(arvoreFuncionalidades, usuarioLogado); // Coloca o menu gerado na sess�o sessao.setAttribute("menuGCOM", menuGerado); // Seta o tempo m�ximo que o usu�rio tem para expirar sua // sess�o // caso nenhuma requisi��o seja feita em 1000(mil) segundos sessao.setMaxInactiveInterval(900); /* * Recupera a data do �ltimo acesso do usu�rio caso seja a * primeira vez que o usu�rio acesse a aplica��o cria uma * nova data e seta essa data na sess�o para a p�gina de * informa��oes do usu�rio */ Date data = usuarioLogado.getUltimoAcesso(); if (data == null) { data = new Date(); } SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); String ultimaDataAcesso = formatter.format(data); sessao.setAttribute("dataUltimoAcesso", ultimaDataAcesso); // Cria a data atual e seta essa data na sess�o data = new Date(); SimpleDateFormat formatterDataAtual = new SimpleDateFormat("dd/MM/yyyy"); String dataAtual = formatterDataAtual.format(data); sessao.setAttribute("dataAtual", dataAtual); //Coloca na sess�o a mensagem informando quantos dias falta para //a senha do usu�rio expirar //sessao.setAttribute("mensagemExpiracao",mensagemExpiracao); /* * Cria a lista de �ltimos acessos do usu�rio logado * e seta essa lista html na sess�o para ser recuperada * na p�gina de informa��es do usu�rio */ String ultimosAcessos = this.construirUltimosAcessos(usuarioLogado); sessao.setAttribute("ultimosAcessos",ultimosAcessos); // Registra o acesso do usu�rio no sistema this.getFachada().registrarAcessoUsuario(usuarioLogado); //Registra a Sessao para nao permitir acesso simultaneo no sistema SessaoHttpListener.registrarAcessoUsuario(sessao, this.getSistemaParametro()); /*********************** FIM DO LOGIN ************************************/ /*********************** Vari�veis globais do sistema ************************************/ // instacia a variavel de aplicacao tituloPagina com o valor cadastrado // em sistema parametro. if ( !Util.verificarNaoVazio((String)servlet.getServletContext().getAttribute("tituloPagina"))) { // Recupera o objeto que cont�m os par�metros do sistema SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); servlet.getServletContext().setAttribute("tituloPagina",sistemaParametro.getTituloPagina()); servlet.getServletContext().setAttribute("logoMarca",sistemaParametro.getImagemLogomarca()); servlet.getServletContext().setAttribute("nomeEmpresa",sistemaParametro.getNomeAbreviadoEmpresa()); if( Util.verificarNaoVazio(sistemaParametro.getUrlhelp())){ servlet.getServletContext().setAttribute("urlHelp",sistemaParametro.getUrlhelp()); } if( Util.verificarNaoVazio(sistemaParametro.getIndicadorSenhaForte().toString())){ servlet.getServletContext().setAttribute("indicadorSenhaForte",sistemaParametro.getIndicadorSenhaForte().toString()); } } if ( !Util.verificarNaoVazio((String)servlet.getServletContext().getAttribute("rodapePagina"))) { // Recupera o objeto que cont�m as datas de Implementacao e // alteracao do Banco DbVersaoBase dbVersaoBase = fachada.pesquisarDbVersaoBase(); if ( dbVersaoBase != null ) { String versaoDataBase = Util.formatarData(dbVersaoBase.getVersaoDataBase()); servlet.getServletContext().setAttribute("versaoDataBase",versaoDataBase); } } Internacionalizador.setLocale( (Locale)request.getSession(false).getAttribute(Globals.LOCALE_KEY)); Internacionalizador.setProperties( (PropertyMessageResources)servlet.getServletContext().getAttribute(Globals.MESSAGES_KEY)); /**************** Fim das vari�veis globais ******************/ /*************** Tratamento das vari�veis GIS ***********************/ //Identificador do logradouro x bairro String idLogradouroBairro = request.getParameter("lgbr_id"); //CEP do logradouro String idCepLogradouro = request.getParameter("lgcp_id"); //Criticidade String nnCriticidade = request.getParameter("rgat_nncriticidade"); //Identificador da matr�cula do im�vel String matriculaImovel = request.getParameter("imov_id"); //Identificador da localidade String idLocalidade = request.getParameter("loca_id"); //Identificador do setor comercial String idSetorComercial = request.getParameter("stcm_id"); //Ponto de refer�ncia String dsPontoReferencia = request.getParameter("rgat_dspontoreferencia"); gisHelper.setDsPontoReferencia(dsPontoReferencia); //Complemento do endere�o String dsComplementoEndereco = request.getParameter("rgat_dscomplementondereco"); //N�mero do im�vel String numeroImovel = request.getParameter("rgat_nnimovel"); //Coordenada norte da ocorr�ncia String nnCoordenadaNorte = request.getParameter("rgat_nncoordenadanorte"); //Coordenada leste da ocorr�ncia String nnCoordenadaLeste = request.getParameter("rgat_nncoordenadaleste"); //Identificador da refer�ncia do endere�o ? valor fixo=1 String idEnderecoReferencia = request.getParameter("edrf_id"); //Diametro String diametro = request.getParameter("rgat_nndiametro"); /***************************** Valida��es dos par�metros ******************************/ if(matriculaImovel.equals("") && idLogradouroBairro.equals("")){ throw new ActionServletException("atencao.matricula.logradouro.invalidos",null,""); } if(nnCoordenadaNorte.equals("") || nnCoordenadaLeste.equals("")){ throw new ActionServletException("atencao.coordenada.invalida",null,""); } Imovel imovel = new Imovel(); LogradouroCep logradouroCep = new LogradouroCep(); LogradouroBairro logradouroBairro = new LogradouroBairro(); if(idLogradouroBairro != null && !idLogradouroBairro.equals("")){ FiltroLogradouroBairro filtroBairro = new FiltroLogradouroBairro(); filtroBairro .adicionarCaminhoParaCarregamentoEntidade("logradouro"); filtroBairro .adicionarCaminhoParaCarregamentoEntidade("bairro"); filtroBairro .adicionarCaminhoParaCarregamentoEntidade("bairro.municipio"); filtroBairro .adicionarCaminhoParaCarregamentoEntidade("bairro.municipio.unidadeFederacao"); filtroBairro.adicionarParametro(new ParametroSimples(FiltroLogradouroBairro.ID,idLogradouroBairro)); filtroBairro.adicionarParametro(new ParametroSimples(FiltroLogradouroBairro.INDICADORUSO_BAIRRO,ConstantesSistema.INDICADOR_USO_ATIVO)); //filtroBairro.adicionarParametro(new ParametroSimples(FiltroLogradouroBairro.ID_BAIRRO,idLogradouroBairro)); ArrayList<LogradouroBairro> listaBairro = new ArrayList<LogradouroBairro>(this.fachada.pesquisar(filtroBairro,LogradouroBairro.class.getName())); if(listaBairro.size() == 0) throw new ActionServletException("atencao.bairro.inexistente",null,""); logradouroBairro = listaBairro.get(0); FiltroLogradouroCep filtroCep = new FiltroLogradouroCep(); filtroCep .adicionarCaminhoParaCarregamentoEntidade("logradouro"); filtroCep .adicionarCaminhoParaCarregamentoEntidade("cep"); filtroCep .adicionarCaminhoParaCarregamentoEntidade("logradouro.logradouroTipo"); filtroCep .adicionarCaminhoParaCarregamentoEntidade("logradouro.logradouroTitulo"); filtroCep.adicionarParametro(new ParametroSimples(FiltroLogradouroCep.ID_LOGRADOURO,logradouroBairro.getLogradouro().getId())); filtroCep.adicionarParametro(new ParametroSimples(FiltroLogradouroCep.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO)); if(idCepLogradouro != null && !idCepLogradouro.equals("")) filtroCep.adicionarParametro(new ParametroSimples(FiltroLogradouroCep.ID,idCepLogradouro)); ArrayList<LogradouroCep> listaCep = new ArrayList<LogradouroCep>(this.fachada.pesquisar(filtroCep,LogradouroCep.class.getName())); if(listaCep.size() == 0) throw new ActionServletException("atencao.cep.inexistente",null,""); if(listaCep.size()>1){ gisHelper.setInformarCep("true"); }else if(listaCep.size()==1){ logradouroCep = (LogradouroCep) Util .retonarObjetoDeColecao(listaCep); } } if(matriculaImovel != null && !matriculaImovel.equals("")) imovel.setId(new Integer(matriculaImovel).intValue()); imovel.setLogradouroCep(logradouroCep); imovel.setLogradouroBairro(logradouroBairro); imovel.setComplementoEndereco(dsComplementoEndereco); imovel.setNumeroImovel(numeroImovel); if (idEnderecoReferencia != null && !idEnderecoReferencia.equals("")) { Collection colecaoEnderecoReferencia = null; FiltroEnderecoReferencia filtroEnderecoReferencia = new FiltroEnderecoReferencia(); filtroEnderecoReferencia .adicionarParametro(new ParametroSimples( FiltroEnderecoReferencia.ID, idEnderecoReferencia)); filtroEnderecoReferencia .adicionarParametro(new ParametroSimples( FiltroEnderecoReferencia.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoEnderecoReferencia = fachada.pesquisar( filtroEnderecoReferencia, EnderecoReferencia.class .getName()); if (colecaoEnderecoReferencia == null || colecaoEnderecoReferencia.isEmpty()) { } else { EnderecoReferencia enderecoReferencia = (EnderecoReferencia) Util .retonarObjetoDeColecao(colecaoEnderecoReferencia); imovel.setEnderecoReferencia(enderecoReferencia); } } if(diametro!=null && !diametro.equals("")){ gisHelper.setNnDiametro(diametro); } gisHelper.setImovel(imovel); gisHelper.setDsPontoReferencia(dsPontoReferencia); gisHelper.setLocalidade(idLocalidade); gisHelper.setNnCriticidade(nnCriticidade); gisHelper.setSetorComercial(idSetorComercial); gisHelper.setNnCoordenadaNorte(nnCoordenadaNorte); gisHelper.setNnCoordenadaLeste(nnCoordenadaLeste); if(idLogradouroBairro.equals("")&& nnCoordenadaNorte != null && !(nnCoordenadaNorte.equals("")) && nnCoordenadaLeste != null && !(nnCoordenadaLeste.equals(""))) gisHelper.setIndicadorCoordenadaSemLogradouro((Short)ConstantesSistema.SIM); else gisHelper.setIndicadorCoordenadaSemLogradouro((Short)ConstantesSistema.NAO); sessao.setAttribute("gisHelper",gisHelper); //indicador de que a origem da chamada � uma requisi��o GIS sessao.setAttribute("origemGIS", Boolean.TRUE); sessao.setAttribute("usuarioLogado",usuarioLogado); return retorno; } /** * * Requisi��o vinda do AcquaGIS * **/ else{ ActionForward actionForward = null; String loginUsuario = request.getParameter("usur_nmlogin"); String rgat_idselecionados = request.getParameter("rgat_idselecionados"); System.out.println("ACQUAGIS PARTE 1 - " + loginUsuario + " & " + rgat_idselecionados); if (loginUsuario != null && !loginUsuario.trim().equals("") && rgat_idselecionados != null && !rgat_idselecionados.trim().equals("")) { //Usuario usuarioLogado = getUsuarioLogado(request); FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples( FiltroUsuario.LOGIN, loginUsuario)); Usuario usuarioLogado = (Usuario) Util.retonarObjetoDeColecao( fachada.pesquisar(filtroUsuario, Usuario.class.getName())); if (usuarioLogado != null) { Collection idsRASelecionados = Util.separarCamposString(";", rgat_idselecionados); // Faz a validacao das RAs no GSAN Iterator iRASelecionados = idsRASelecionados.iterator(); while(iRASelecionados.hasNext()) { String idRa = (String) iRASelecionados.next(); FiltroRegistroAtendimento filtroRA = new FiltroRegistroAtendimento(); filtroRA.adicionarParametro(new ParametroSimples( FiltroRegistroAtendimento.ID, idRa)); RegistroAtendimento ra = (RegistroAtendimento) Util.retonarObjetoDeColecao( fachada.pesquisar(filtroRA, RegistroAtendimento.class.getName())); if (ra == null) { retorno = GisRetornoMotivo.REGISTRO_ATENDIMENTO_INEXISTENTE; try { PrintWriter pw = response.getWriter(); pw.println(retorno); pw.flush(); } catch (IOException e) { e.printStackTrace(); } return actionForward; } } listaRAIntegracaoGIS.put(loginUsuario, idsRASelecionados); try { PrintWriter pw = response.getWriter(); pw.println(retorno); pw.flush(); } catch (IOException e) { e.printStackTrace(); } return actionForward; } else { retorno = GisRetornoMotivo.LOGIN_USUARIO_INEXISTENTE; try { PrintWriter pw = response.getWriter(); pw.println(retorno); pw.flush(); } catch (IOException e) { e.printStackTrace(); } return actionForward; } } // Flag usada para verificar se a requisi��o gis veio da tela correta. //inser��o de um R.A (Aba n� 02 - Dados do local de ocorr�ncia HttpSession sessaoUsuario = SessaoHttpListener.listaSessoesAtivasGis.get(loginUsuario); if(sessaoUsuario == null){ retorno = GisRetornoMotivo.LOGIN_USUARIO_INEXISTENTE; }else{ GisHelper gisHelper = new GisHelper(); //Login do usu�rio if(loginUsuario==null){ retorno = GisRetornoMotivo.LOGIN_USUARIO_INEXISTENTE; } //Identificador do logradouro x bairro String idLogradouroBairro = request.getParameter("lgbr_id"); //Ponto de refer�ncia String dsPontoReferencia = request.getParameter("rgat_dspontoreferencia"); gisHelper.setDsPontoReferencia(dsPontoReferencia); //Complemento do endere�o String dsComplementoEndereco = request.getParameter("rgat_dscomplementondereco"); //N�mero do im�vel String numeroImovel = request.getParameter("rgat_nnimovel"); //Coordenada norte da ocorr�ncia String nnCoordenadaNorte = request.getParameter("rgat_nncoordenadanorte"); if("".equals(nnCoordenadaNorte) || nnCoordenadaNorte == null){ retorno = GisRetornoMotivo.COORDENADA_NORTE_INVALIDA; }else{ gisHelper.setNnCoordenadaNorte(nnCoordenadaNorte); } //Coordenada leste da ocorr�ncia String nnCoordenadaLeste = request.getParameter("rgat_nncoordenadaleste"); if("".equals(nnCoordenadaLeste) || nnCoordenadaLeste == null){ retorno = GisRetornoMotivo.COORDENADA_LESTE_INVALIDA; }else{ gisHelper.setNnCoordenadaLeste(nnCoordenadaLeste); } //Identificador da refer�ncia do endere�o ? valor fixo=1 String idEnderecoReferencia = request.getParameter("edrf_id"); if("".equals(idEnderecoReferencia)|| idEnderecoReferencia == null){ retorno = GisRetornoMotivo.IDENTIFICADOR_REFERENCIA_ENDERECO_INVALIDO; } System.out.println("ACQUAGIS PARTE 2 - " + idLogradouroBairro + " & " + dsPontoReferencia + " & " + dsComplementoEndereco + " & " + numeroImovel + " & " + nnCoordenadaNorte + " & " + nnCoordenadaLeste + " & " + idEnderecoReferencia); //Carregando os objetos finais com o LogradouroCep e // LogradouroBairro if(!(idLogradouroBairro.equals(""))) { Imovel imovel = new Imovel(); LogradouroBairro logradouroBairro = new LogradouroBairro(); if (idLogradouroBairro != null) { Collection colecaoLogradouroBairro = null; FiltroLogradouroBairro filtroLogradouroBairro = new FiltroLogradouroBairro(); // Objetos que ser�o retornados pelo hibernate. filtroLogradouroBairro .adicionarCaminhoParaCarregamentoEntidade("logradouro"); filtroLogradouroBairro .adicionarCaminhoParaCarregamentoEntidade("bairro"); filtroLogradouroBairro .adicionarCaminhoParaCarregamentoEntidade("bairro.municipio"); filtroLogradouroBairro .adicionarCaminhoParaCarregamentoEntidade("bairro.municipio.unidadeFederacao"); filtroLogradouroBairro.adicionarParametro(new ParametroSimples( FiltroLogradouroBairro.ID,idLogradouroBairro)); filtroLogradouroBairro.adicionarParametro(new ParametroSimples( FiltroLogradouroBairro.INDICADORUSO_BAIRRO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoLogradouroBairro = fachada.pesquisar(filtroLogradouroBairro, LogradouroBairro.class.getName()); if (colecaoLogradouroBairro == null || colecaoLogradouroBairro.isEmpty()) { retorno = GisRetornoMotivo.IDENTIFICADOR_LOGRADOURO_BAIRRO_INEXISTENTE; } else { logradouroBairro = (LogradouroBairro) Util .retonarObjetoDeColecao(colecaoLogradouroBairro); } } LogradouroCep logradouroCep = new LogradouroCep(); if (logradouroBairro!= null) { Collection colecaoLogradouroCep = null; FiltroLogradouroCep filtroLogradouroCep = new FiltroLogradouroCep(); // Objetos que ser�o retornados pelo hibernate. filtroLogradouroCep .adicionarCaminhoParaCarregamentoEntidade("logradouro"); filtroLogradouroCep .adicionarCaminhoParaCarregamentoEntidade("cep"); filtroLogradouroCep .adicionarCaminhoParaCarregamentoEntidade("logradouro.logradouroTipo"); filtroLogradouroCep .adicionarCaminhoParaCarregamentoEntidade("logradouro.logradouroTitulo"); filtroLogradouroCep.adicionarParametro(new ParametroSimples( FiltroLogradouroCep.ID_LOGRADOURO, logradouroBairro.getLogradouro().getId())); filtroLogradouroCep.adicionarParametro(new ParametroSimples( FiltroLogradouroCep.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoLogradouroCep = fachada.pesquisar(filtroLogradouroCep, LogradouroCep.class.getName()); if (colecaoLogradouroCep == null || colecaoLogradouroCep.isEmpty()) { retorno = GisRetornoMotivo.IDENTIFICADOR_LOGRADOURO_CEP_INEXISTENTE; } else if(colecaoLogradouroCep.size()>1){ gisHelper.setInformarCep("true"); }else if(colecaoLogradouroCep.size()==1){ logradouroCep = (LogradouroCep) Util .retonarObjetoDeColecao(colecaoLogradouroCep); } } imovel.setLogradouroCep(logradouroCep); imovel.setLogradouroBairro(logradouroBairro); imovel.setComplementoEndereco(dsComplementoEndereco); imovel.setNumeroImovel(numeroImovel); if (dsPontoReferencia != null) { Collection colecaoEnderecoReferencia = null; FiltroEnderecoReferencia filtroEnderecoReferencia = new FiltroEnderecoReferencia(); filtroEnderecoReferencia .adicionarParametro(new ParametroSimples( FiltroEnderecoReferencia.ID, idEnderecoReferencia)); filtroEnderecoReferencia .adicionarParametro(new ParametroSimples( FiltroEnderecoReferencia.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoEnderecoReferencia = fachada.pesquisar( filtroEnderecoReferencia, EnderecoReferencia.class .getName()); if (colecaoEnderecoReferencia == null || colecaoEnderecoReferencia.isEmpty()) { retorno = GisRetornoMotivo.IDENTIFICADOR_REFERENCIA_ENDERECO_INEXISTENTE; } else { EnderecoReferencia enderecoReferencia = (EnderecoReferencia) Util .retonarObjetoDeColecao(colecaoEnderecoReferencia); imovel.setEnderecoReferencia(enderecoReferencia); } } gisHelper.setImovel(imovel); } if(idLogradouroBairro.equals("")&& nnCoordenadaNorte != null && !(nnCoordenadaNorte.equals("")) && nnCoordenadaLeste != null && !(nnCoordenadaLeste.equals(""))) gisHelper.setIndicadorCoordenadaSemLogradouro((Short)ConstantesSistema.SIM); else gisHelper.setIndicadorCoordenadaSemLogradouro((Short)ConstantesSistema.NAO); //Colocando o helper na sess�o. sessaoUsuario.setAttribute("gisHelper",gisHelper); } System.out.println("ACQUAGIS PARTE 3 - " + retorno); try{ PrintWriter pw = response.getWriter(); pw.println(retorno); pw.flush(); } catch (IOException e) { e.printStackTrace(); } return actionForward; } } private String construirUltimosAcessos(Usuario usuarioLogado){ //Cria a vari�vel que vai armazenar a string contendo o html do list com //os �ltimos acessos do usu�rio String retorno = null; StringBuilder ultimosAcessos = new StringBuilder(); Collection<UsuarioFavorito> colecaoUltimosAcessos = new ArrayList(); colecaoUltimosAcessos = this.getFachada().pesquisarUsuarioFavorito(usuarioLogado.getId()); /* * Caso a cole��o de �ltimos acessos n�o esteja vazia * cria a lista contendo os �ltimos acessos do usu�rio * Caso contr�rio cria uma lista com nenhuma funcionalidade * para �ltimo acessos */ if(colecaoUltimosAcessos != null && !colecaoUltimosAcessos.isEmpty()){ /* * Trecho para cria a parte inicial do list html */ ultimosAcessos.append("<select name=\"ultimoacesso\" id=\"ultimosacessos\" onchange=\"javascript:abrirUltimoAcesso();\" style=\"width:130px\">"); ultimosAcessos.append(System.getProperty("line.separator")); ultimosAcessos.append("<option value=\"-1\">Ultimos Acessos</option>"); ultimosAcessos.append(System.getProperty("line.separator")); ultimosAcessos.append("<option value=\"-1\">- - - - - - - - - - - - - - - -</option>"); //La�o para adicionar as funcionalidades a lista de �ltimos acessos for(UsuarioFavorito usuarioFavorito : colecaoUltimosAcessos){ Funcionalidade funcionalidade = usuarioFavorito.getFuncionalidade(); ultimosAcessos.append("<option value=\""+funcionalidade.getCaminhoUrl()+"\">"+funcionalidade.getDescricao()+"</option>"); ultimosAcessos.append(System.getProperty("line.separator")); } //Fecha o list html ultimosAcessos.append("</select>"); retorno = ultimosAcessos.toString(); }else{ /* * Cria o list html sem nenhuma funcionalidade dentro */ ultimosAcessos.append("<select name=\"ultimoacesso\" id=\"ultimosacessos\" onchange=\"javascript:abrirUltimoAcesso();\" style=\"width:130px\">"); ultimosAcessos.append(System.getProperty("line.separator")); ultimosAcessos.append("<option value=\"-1\"><font size=\"1\">Ultimos Acessos</font></option>"); ultimosAcessos.append(System.getProperty("line.separator")); ultimosAcessos.append("<option value=\"-1\">- - - - - - - - - - - - - - - -</option>"); ultimosAcessos.append("</select>"); retorno = ultimosAcessos.toString(); } //Retorna o html de uma lista contendo as funcionalidades �ltimas acessadas pelo usu�rio return retorno; } private Collection<GrupoFuncionalidadeOperacao> pesquisarRestricaoUsuario(Usuario usuarioLogado){ //Cria a cole��o que vai armazenar as restri��es do usu�rio Collection<GrupoFuncionalidadeOperacao> restricoes = new ArrayList(); //Cria o filtro para pesquisar todas as restri��es do usu�rio no sistema FiltroUsuarioGrupoRestricao filtroUsuarioGrupoRestricao = new FiltroUsuarioGrupoRestricao(); filtroUsuarioGrupoRestricao.adicionarParametro(new ParametroSimples(FiltroUsuarioGrupoRestricao.USUARIO_ID, usuarioLogado.getId())); filtroUsuarioGrupoRestricao.setConsultaSemLimites(true); Collection colecaoUsuarioRestricoes = Fachada.getInstancia().pesquisar(filtroUsuarioGrupoRestricao, UsuarioGrupoRestricao.class.getName()); //Caso exista restri��o para o usu�rio //Existe ocorr�ncia para o id do usu�rio logado na tabela UsuarioGrupoRestricao if(colecaoUsuarioRestricoes != null && !colecaoUsuarioRestricoes.isEmpty()){ //Cria o iterator das restri��es do usu�rio Iterator<UsuarioGrupoRestricao> iterator = colecaoUsuarioRestricoes.iterator(); while(iterator.hasNext()){ //Recupera a restri��o do iterator UsuarioGrupoRestricao usuarioGrupoRestricao = iterator.next(); //Recupera qual a funcionalidade e sua opera��o a qual o usu�rio tem restri��o //para um determinado grupo GrupoFuncionalidadeOperacao grupoFuncionalidadeOperacao = new GrupoFuncionalidadeOperacao(); GrupoFuncionalidadeOperacaoPK grupoFuncionalidadeOperacaoPK = new GrupoFuncionalidadeOperacaoPK(); grupoFuncionalidadeOperacaoPK.setGrupoId(usuarioGrupoRestricao.getComp_id().getGrupoId()); grupoFuncionalidadeOperacaoPK.setFuncionalidadeId(usuarioGrupoRestricao.getComp_id().getFuncionalidadeId()); grupoFuncionalidadeOperacaoPK.setOperacaoId(usuarioGrupoRestricao.getComp_id().getOperacaoId()); grupoFuncionalidadeOperacao.setComp_id(grupoFuncionalidadeOperacaoPK); //Adiciona a opera��o a cole��o de restri��o restricoes.add(grupoFuncionalidadeOperacao); } } //Retorna a cole��o de restri��es do sistema return restricoes; } private boolean verificarSituacaoUsuario(Usuario usuarioLogado) { boolean retorno = true; // Recupera a situa��o do usu�rio UsuarioSituacao usuarioSituacao = usuarioLogado.getUsuarioSituacao(); /* * Caso a situa��o do usu�rio n�o seja igual a ativo ou seja igual a * pendente retorna uma flag indicando que o usu�rio n�o pode acessar o * sistema */ if ((!usuarioSituacao.getId().equals(UsuarioSituacao.ATIVO)) && (!usuarioSituacao.getId().equals( UsuarioSituacao.PENDENTE_SENHA))) { retorno = false; } // Retorna uma flag indicando se a situ��o do usu�rio permite o acesso // ao sistema return retorno; } }