package gcom.gui.seguranca.acesso.usuario; import gcom.cadastro.unidade.FiltroUnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.gui.StatusWizard; import gcom.seguranca.acesso.Grupo; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.FiltroUsuarioGrupo; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioGrupo; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.Collection; import java.util.Iterator; 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; /** * Description of the Class * * @author S�vio Luiz */ public class ExibirAtualizarUsuarioAction 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) { // localiza o action no objeto actionmapping ActionForward retorno = actionMapping.findForward("atualizarUsuario"); // obt�m a inst�ncia da sess�o HttpSession sessao = httpServletRequest.getSession(false); // Usuario logado no sistema Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); StatusWizard statusWizard = null; // obtem o gerenciador de paginas na sess�o // gerenciadorPaginas = (GerenciadorPaginas) // sessao.getAttribute("gerenciadorPaginas"); // limpa a sess�o sessao.removeAttribute("usuarioGrupo"); sessao.removeAttribute("usuarioParaAtualizar"); sessao.removeAttribute("grupo"); sessao.removeAttribute("collEmpresa"); sessao.removeAttribute("collUsuarioTipo"); sessao.removeAttribute("collUsuarioAbrangencia"); sessao.removeAttribute("collGrupo"); sessao.removeAttribute("collGerenciaRegional"); sessao.removeAttribute("collUnidadeNegocio"); sessao.removeAttribute("AtualizarUsuarioDadosGeraisActionForm"); sessao.removeAttribute("desabilitaUsuarioAbrangencia"); String idUsuario = null; if (httpServletRequest.getParameter("desfazer") == null) { if (httpServletRequest.getParameter("idRegistroAtualizacao") != null) { idUsuario = (String) httpServletRequest .getParameter("idRegistroAtualizacao"); } else { idUsuario = (String) httpServletRequest .getAttribute("idRegistroAtualizacao"); } // verifica se chegou no atualizar imovel atraves da tela de filtrar // devido a um unico registro // ou atraves da lista de imoveis no manter imovel if (httpServletRequest.getAttribute("atualizar") != null) { statusWizard = new StatusWizard("atualizarUsuarioWizardAction", "concluirAtualizarUsuarioAction", "cancelarAtualizarUsuarioAction", "exibirFiltrarUsuarioAction", "exibirAtualizarUsuarioAction.do", idUsuario); } else if (httpServletRequest.getParameter("sucesso") != null) { statusWizard = new StatusWizard("atualizarUsuarioWizardAction", "concluirAtualizarUsuarioAction", "cancelarAtualizarUsuarioAction", "exibirFiltrarUsuarioAction", "exibirAtualizarUsuarioAction.do", idUsuario); } else { statusWizard = new StatusWizard("atualizarUsuarioWizardAction", "concluirAtualizarUsuarioAction", "cancelarAtualizarUsuarioAction", "exibirManterUsuarioAction", "exibirAtualizarUsuarioAction.do", idUsuario); } statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 1, "DadosGeraisPrimeiraAbaA.gif", "DadosGeraisPrimeiraAbaD.gif", "exibirAtualizarUsuarioDadosGeraisAction", "atualizarUsuarioDadosGeraisAction")); statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 2, "AcessosUsuarioUltimaAbaA.gif", "AcessosUsuarioUltimaAbaD.gif", "exibirAtualizarUsuarioAcessosUsuarioAction", "atualizarUsuarioAcessosUsuarioAction")); } else { statusWizard = (StatusWizard) sessao.getAttribute("statusWizard"); idUsuario = statusWizard.getId(); } AtualizarUsuarioDadosGeraisActionForm atualizarUsuarioDadosGeraisActionForm = (AtualizarUsuarioDadosGeraisActionForm) actionForm; // Parte da verifica��o do filtro FiltroUsuario filtroUsuario = new FiltroUsuario(); // filtroUsuario.setCampoOrderBy(FiltroUsuario.NOME_USUARIO); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.ID, idUsuario)); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("unidadeOrganizacional.unidadeTipo"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("usuarioTipo"); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("funcionario.unidadeOrganizacional"); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("funcionario.empresa"); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("usuarioAbrangencia"); filtroUsuario .adicionarCaminhoParaCarregamentoEntidade("usuarioSituacao"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("localidadeElo"); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade("localidade"); Collection colecaoUsuario = Fachada.getInstancia().pesquisar( filtroUsuario, Usuario.class.getName()); Usuario usuarioParaAtualizar = (Usuario) Util .retonarObjetoDeColecao(colecaoUsuario); // [FS0008] - Verificar permiss�o para atualiza��o UnidadeOrganizacional unidadeEmpresa = usuarioParaAtualizar .getUnidadeOrganizacional(); if (unidadeEmpresa == null) { if (usuarioParaAtualizar.getFuncionario() != null && usuarioParaAtualizar.getFuncionario().equals("")) { unidadeEmpresa = usuarioParaAtualizar.getFuncionario() .getUnidadeOrganizacional(); } } // caso o usu�rio que esteja efetuando a inser��o n�o // seja // do grupo de administradores FiltroUsuarioGrupo filtroUsuarioGrupo = new FiltroUsuarioGrupo(); filtroUsuarioGrupo.adicionarParametro(new ParametroSimples( FiltroUsuarioGrupo.USUARIO_ID, usuario.getId())); filtroUsuarioGrupo.adicionarParametro(new ParametroSimples( FiltroUsuarioGrupo.GRUPO_ID, Grupo.ADMINISTRADOR)); Collection colecaoUsuarioGrupo = Fachada.getInstancia().pesquisar( filtroUsuarioGrupo, UsuarioGrupo.class.getName()); if (colecaoUsuarioGrupo == null || colecaoUsuarioGrupo.isEmpty()) { // se a unidade de lotacao do usuario que estiver // efetuando seja diferente da unidade de // lota��o informada if (usuario.getUnidadeOrganizacional() != null && usuario.getUnidadeOrganizacional().getId() != null) { // recupera a unidade do usu�rio FiltroUnidadeOrganizacional filtroUnidadeEmpresaUsuario = new FiltroUnidadeOrganizacional(); filtroUnidadeEmpresaUsuario .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, usuario .getUnidadeOrganizacional().getId())); filtroUnidadeEmpresaUsuario .adicionarCaminhoParaCarregamentoEntidade("unidadeTipo"); Collection colecaoUnidadeEmpresa = Fachada.getInstancia() .pesquisar(filtroUnidadeEmpresaUsuario, UnidadeOrganizacional.class.getName()); UnidadeOrganizacional unidadeEmpresaUsuario = null; if (colecaoUnidadeEmpresa != null && !colecaoUnidadeEmpresa.isEmpty()) { unidadeEmpresaUsuario = (UnidadeOrganizacional) Util .retonarObjetoDeColecao(colecaoUnidadeEmpresa); } // se o nivel da unidade de lota��o do usu�rio // que // estiver efetuando a inser��o seja maior ou // igual // ao nivel de unidade de lota��o informada if (unidadeEmpresaUsuario != null) { if (unidadeEmpresaUsuario.getUnidadeTipo().getNivel() != null && unidadeEmpresa.getUnidadeTipo().getNivel() != null) { if (unidadeEmpresaUsuario.getUnidadeTipo().getNivel() .intValue() >= unidadeEmpresa.getUnidadeTipo() .getNivel().intValue()) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa.getDescricao()); } } else { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario .getLogin(), unidadeEmpresa .getDescricao()); } // ou a unidade superior da unidade de // lota��o // informada seja diferente da unidade de // lota��o do usu�rio // enquanto o nivel superior da unidade de // lota��o n�o esteja no mesmo nivel da // unidade // de lota��o do usu�rio boolean mesmoNivel = true; int idNivelUsuario = unidadeEmpresaUsuario.getUnidadeTipo() .getNivel().intValue(); UnidadeOrganizacional unidadeEmpresaSuperior = null; while (mesmoNivel) { Integer idUnidadeEmpresaSuperior = null; if (unidadeEmpresaSuperior == null) { if (unidadeEmpresa.getUnidadeSuperior() != null && !unidadeEmpresa.getUnidadeSuperior() .equals("")) { idUnidadeEmpresaSuperior = unidadeEmpresa .getUnidadeSuperior().getId(); } } else { if (unidadeEmpresaSuperior.getUnidadeSuperior() != null && !unidadeEmpresaSuperior .getUnidadeSuperior().equals("")) { idUnidadeEmpresaSuperior = unidadeEmpresaSuperior .getUnidadeSuperior().getId(); } } if (idUnidadeEmpresaSuperior == null) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa .getDescricao()); } // recupera a unidade do usu�rio FiltroUnidadeOrganizacional filtroUnidadeEmpresaSuperior = new FiltroUnidadeOrganizacional(); filtroUnidadeEmpresaSuperior .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, idUnidadeEmpresaSuperior)); filtroUnidadeEmpresaSuperior .adicionarCaminhoParaCarregamentoEntidade("unidadeTipo"); Collection colecaoUnidadeEmpresaSuperior = Fachada .getInstancia().pesquisar( filtroUnidadeEmpresaSuperior, UnidadeOrganizacional.class.getName()); if (colecaoUnidadeEmpresaSuperior != null && !colecaoUnidadeEmpresaSuperior.isEmpty()) { unidadeEmpresaSuperior = (UnidadeOrganizacional) Util .retonarObjetoDeColecao(colecaoUnidadeEmpresaSuperior); } if (unidadeEmpresaSuperior != null) { if (unidadeEmpresaSuperior.getUnidadeTipo() .getNivel() == null || unidadeEmpresaSuperior.getUnidadeTipo() .getNivel().equals("")) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa .getDescricao()); } // caso seja o mesmo nivel if (unidadeEmpresaSuperior.getUnidadeTipo() .getNivel().intValue() == idNivelUsuario) { mesmoNivel = false; // caso o id da unidade empresa // informado for diferente do id // da // unidade empresa do usu�rio no // mesmo nivel if (!unidadeEmpresaSuperior.getId().equals( unidadeEmpresaUsuario.getId())) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa.getDescricao()); } } } } } } } //comentado a pedido de Leonardo Vieira //Vivianne Sousa 06/02/2007 // [FS0018] - Verificar situa��o do usu�rio // if (usuarioParaAtualizar.getUsuarioSituacao() != null // && !usuarioParaAtualizar.getUsuarioSituacao().getId().equals( // UsuarioSituacao.ATIVO)) { // throw new ActionServletException("atencao.usuario.situacao", null, // usuarioParaAtualizar.getLogin(), usuarioParaAtualizar // .getUsuarioSituacao().getDescricaoUsuarioSituacao()); // } atualizarUsuarioDadosGeraisActionForm.setNome(usuarioParaAtualizar .getNomeUsuario()); // cria um array de string para os ids do grupo String[] idsGrupos = null; Collection colecaoGruposUsuario = Fachada.getInstancia() .pesquisarGruposUsuario(new Integer(idUsuario)); if (colecaoGruposUsuario != null && !colecaoGruposUsuario.isEmpty()) { idsGrupos = new String[colecaoGruposUsuario.size()]; Iterator iteratorGrupos = colecaoGruposUsuario.iterator(); int i = 0; while (iteratorGrupos.hasNext()) { Grupo grupo = (Grupo) iteratorGrupos.next(); idsGrupos[i] = grupo.getId().toString(); i++; } } if (usuarioParaAtualizar.getId() != null && !usuarioParaAtualizar.getId().equals("")) { statusWizard.adicionarItemHint("C�digo:", usuarioParaAtualizar .getId().toString()); } if (usuarioParaAtualizar.getNomeUsuario() != null && !usuarioParaAtualizar.getNomeUsuario().equals("")) { statusWizard.adicionarItemHint("Nome:", usuarioParaAtualizar .getNomeUsuario()); } if (usuarioParaAtualizar.getUsuarioTipo() != null && !usuarioParaAtualizar.getUsuarioTipo().equals("")) { if (usuarioParaAtualizar.getUsuarioTipo().getId() != null && !usuarioParaAtualizar.getUsuarioTipo().equals("")) { statusWizard.adicionarItemHint("Tipo:", usuarioParaAtualizar .getUsuarioTipo().getDescricao()); } } if (usuarioParaAtualizar.getUsuarioAbrangencia() != null && !usuarioParaAtualizar.getUsuarioAbrangencia().equals("")) { if (usuarioParaAtualizar.getUsuarioAbrangencia().getId() != null && !usuarioParaAtualizar.getUsuarioAbrangencia().equals("")) { statusWizard.adicionarItemHint("Abrang�ncia:", usuarioParaAtualizar.getUsuarioAbrangencia() .getDescricao()); } } sessao.setAttribute("statusWizard", statusWizard); sessao.setAttribute("usuarioParaAtualizar", usuarioParaAtualizar); sessao.setAttribute("usuario", usuario); sessao.setAttribute("grupo", idsGrupos); return retorno; } }