package gcom.gui.seguranca.acesso.usuario; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.seguranca.acesso.Grupo; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.FiltroPemissaoEspecial; import gcom.seguranca.acesso.usuario.FiltroUsuarioGrupo; import gcom.seguranca.acesso.usuario.FiltroUsuarioPemissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioGrupo; import gcom.seguranca.acesso.usuario.UsuarioPermissaoEspecial; import gcom.util.ConstantesSistema; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; 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; /** * Action respons�vel pela pre-exibi��o das permiss�es especiais do usu�rio. * * @author S�vio Luiz * @date 12/07/2006 */ public class ExibirControlarPermissoesEspeciaisUsuarioAction 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("controlarPermissoesEspeciaisUsuario"); ControlarAcessoUsuarioActionForm controlarAcessoUsuarioActionForm = (ControlarAcessoUsuarioActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); // Recupera os acessos do grupo da sess�o //Collection grupoFuncionalidades = (Collection) sessao // .getAttribute("grupoFuncionalidades"); // Usuario logado no sistema Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); // Usuario que vai ser cadastrado no sistema, usado s� nessa // funcionalidade Usuario usuarioParaAtualizar = (Usuario) sessao .getAttribute("usuarioParaAtualizar"); Collection colecaoPermissaoEspecial = null; Collection colecaoPermissaoEspecialDesalibitado = null; String permissoesCheckBoxVazias = controlarAcessoUsuarioActionForm .getPermissoesCheckBoxVazias(); String[] permissaoEspecial = controlarAcessoUsuarioActionForm .getPermissoesEspeciais(); if (permissaoEspecial == null && permissoesCheckBoxVazias == null) { // 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()) { FiltroPemissaoEspecial filtroPemissaoEspecial = new FiltroPemissaoEspecial(FiltroPemissaoEspecial.DESCRICAO); filtroPemissaoEspecial.adicionarParametro(new ParametroSimples(FiltroPemissaoEspecial.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPermissaoEspecial = Fachada.getInstancia().pesquisar( filtroPemissaoEspecial, PermissaoEspecial.class.getName()); FiltroUsuarioPemissaoEspecial filtroUsuarioPermissaoEspecialAtualizar = new FiltroUsuarioPemissaoEspecial(); filtroUsuarioPermissaoEspecialAtualizar .adicionarCaminhoParaCarregamentoEntidade("permissaoEspecial"); filtroUsuarioPermissaoEspecialAtualizar .adicionarParametro(new ParametroSimples( FiltroUsuarioPemissaoEspecial.USUARIO_COMP_ID, usuarioParaAtualizar.getId())); // colecao de usu�rio permiss�o especial Collection colecaoUsuarioPermissaoEspecialParaAtualizar = Fachada .getInstancia().pesquisar( filtroUsuarioPermissaoEspecialAtualizar, UsuarioPermissaoEspecial.class.getName()); if (colecaoUsuarioPermissaoEspecialParaAtualizar != null && !colecaoUsuarioPermissaoEspecialParaAtualizar .isEmpty()) { Collection colecaoPermissaoEspecialAux = new ArrayList(); Iterator ite = colecaoUsuarioPermissaoEspecialParaAtualizar.iterator(); while(ite.hasNext()){ UsuarioPermissaoEspecial usuarioPermissaoEspecial = (UsuarioPermissaoEspecial)ite.next(); colecaoPermissaoEspecialAux.add(usuarioPermissaoEspecial.getPermissaoEspecial()); } // seta os campos de permiss�o especial no form para // aparecer no // jsp como checado permissaoEspecial = Fachada .getInstancia() .retornarPermissoesMarcadas( colecaoPermissaoEspecialAux); } } else { Object[] permissoesEspeciais = Fachada.getInstancia() .pesquisarPermissoesEspeciaisUsuarioEUsuarioLogado( usuarioParaAtualizar, usuario); colecaoPermissaoEspecial = (Collection) permissoesEspeciais[0]; colecaoPermissaoEspecialDesalibitado = (Collection) permissoesEspeciais[1]; permissaoEspecial = (String[]) permissoesEspeciais[2]; /* * // caso o usu�rio n�o seja do grupos de administradores * FiltroUsuarioPemissaoEspecial * filtroUsuarioPemissaoEspecialLogado = new * FiltroUsuarioPemissaoEspecial(); * filtroUsuarioPemissaoEspecialLogado .adicionarParametro(new * ParametroSimples( * FiltroUsuarioPemissaoEspecial.USUARIO_COMP_ID, * usuario.getId())); filtroUsuarioPemissaoEspecialLogado * .adicionarCaminhoParaCarregamentoEntidade("permissaoEspecial"); // * recupera as permiss�es do usuario logado Collection * colecaoUsuarioLogadoPermissaoEspecial = * Fachada.getInstancia() * .pesquisar(filtroUsuarioPemissaoEspecialLogado, * UsuarioPermissaoEspecial.class.getName()); * * FiltroUsuarioPemissaoEspecial filtroUsuarioPermissaoEspecial = * new FiltroUsuarioPemissaoEspecial(); * filtroUsuarioPermissaoEspecial .adicionarParametro(new * ParametroSimples( * FiltroUsuarioPemissaoEspecial.USUARIO_COMP_ID, * usuarioParaAtualizar.getId())); * filtroUsuarioPermissaoEspecial * .adicionarCaminhoParaCarregamentoEntidade("usuario"); * filtroUsuarioPemissaoEspecialLogado * .adicionarCaminhoParaCarregamentoEntidade("permissaoEspecial"); // * colecao de usu�rio permiss�o especial Collection * colecaoUsuarioPermissaoEspecial = * Fachada.getInstancia().pesquisar( * filtroUsuarioPermissaoEspecial, * UsuarioPermissaoEspecial.class.getName()); if * (colecaoUsuarioPermissaoEspecial != null && * !colecaoUsuarioPermissaoEspecial.isEmpty()) { // remove os * usuario permiss�o especial da cole��o de // usu�rio // logado * com permiss�o especial que tenha na cole��o de // usu�rio // * permiss�o usu�rio que est� sendo atualizado Iterator * iteratorUsuarioPermissaoEspecialLogado = * colecaoUsuarioLogadoPermissaoEspecial.iterator(); // seta os * campos de permiss�o especial no form para // aparecer no jsp * como checado Iterator iteratorUsuarioPermissaoEspecial = * colecaoPermissaoEspecial .iterator(); int i = 0; * permissaoEspecial = new String[colecaoPermissaoEspecial * .size()]; * * while (iteratorUsuarioPermissaoEspecial.hasNext()) { * UsuarioPermissaoEspecial usuarioPermissaoEspecialObject = * (UsuarioPermissaoEspecial) iteratorUsuarioPermissaoEspecial * .next(); permissaoEspecial[i] = "" + * usuarioPermissaoEspecialObject.getComp_id() * .getPermissaoEspecialId(); } } */ } // seta os campos que v�o aparecer como checado controlarAcessoUsuarioActionForm .setPermissoesEspeciais(permissaoEspecial); sessao.setAttribute("colecaoPermissaoEspecial", colecaoPermissaoEspecial); sessao.setAttribute("colecaoPermissaoEspecialDesalibitado", colecaoPermissaoEspecialDesalibitado); } return retorno; } }