package gcom.tagslib; import gcom.fachada.Fachada; import gcom.seguranca.acesso.Grupo; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import java.io.IOException; import java.util.Collection; import javax.servlet.jsp.JspContext; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.SimpleTagSupport; import org.apache.struts.Globals; import org.apache.struts.util.RequestUtils; /** * Classe respons�vel por construir um bot�o habilitado caso o usu�rio logado tenha * acesso a opera��o requerida ou um bot�o desabilitado caso contr�rio. * * @author Pedro Alexandre * @date 20/07/2006 */ public class ControleAcessoBotaoTag extends SimpleTagSupport { //Nome do bot�o que vai ser criado, essa propriedade � requerida private String name; //Descri��o que vai aparecer no bot�o que vai ser criado, essa propriedade � requerida private String value; //Url da opera��o para ser acessada, essa propriedade � requerida private String url; //Met�do javascript que vai ser chamado no click do bot�o, essa propriedade � requerida private String onclick; //Essas propriedades n�o s�o requeridas private String align; private String tabindex; private String style; /** * Met�do chamado para construir o componente da tag lib * * @author Administrador * @date 20/07/2006 * * @throws JspException * @throws IOException */ public void doTag() throws JspException, IOException{ //Cria uma inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); //Cria a vari�vel que vai conter a string que cria o bot�o na jsp String botaoAcesso = null; //Cria a vari�vel contendo a parte inicial para todo o bot�o //String inicioBotao = "<input type=\"" + "button\" " + " class=\"" + "bottonRightCol\" " + " style=\""+"width: 70px;\" "; String inicioBotao = "<input type=\"" + "button\" " + " class=\"" + "bottonRightCol\" " ; //Cria a vari�vel contendo a parte final para todo o bot�o String fimBotao = "/>"; //Caso tenha informado a propriedade "tabindex" no componente //adicona a propriedade ao bot�o na parte final if(tabindex != null && !tabindex.trim().equals("")){ fimBotao = "tabindex=\"" + tabindex + "\" " + fimBotao; } //Caso tenha informado a propriedade "align" no componente //adicona a propriedade ao bot�o na parte final if(align != null && !align.trim().equals("")){ fimBotao = "align=\"" + align + "\" " + fimBotao; } //Caso tenha informado a propriedade "style" no componente //adicona a propriedade ao bot�o na parte final if(style != null && !style.trim().equals("")){ fimBotao = "style=\"" + style + "\" " + fimBotao; } //Vari�vel contendo o valor para desabilitar o bot�o caso //o usu�rio n�o tenha acesso a opera��o String desabilitado = "disabled"; //Recupera o jsp context JspContext jspContext = getJspContext(); //Recupera o usu�rio logado da sess�o Usuario usuarioLogado =(Usuario) jspContext.getAttribute("usuarioLogado",PageContext.SESSION_SCOPE); //Recupera a cole��o de grupos ao qual o us�rio pertence Collection<Grupo> colecaoGruposUsuario =(Collection<Grupo>) jspContext.getAttribute("colecaoGruposUsuario",PageContext.SESSION_SCOPE); //Chama o met�do da fachda para verificar se o usu�rio tem acesso a opera��o boolean permitirAcesso = fachada.verificarAcessoPermitidoOperacao(usuarioLogado,url,colecaoGruposUsuario); if(Util.verificarNaoVazio(this.value)){ String msg = RequestUtils.message((PageContext)jspContext, Globals.MESSAGES_KEY, Globals.LOCALE_KEY, this.value); if(Util.verificarNaoVazio(msg) && !(msg.startsWith("???") && msg.endsWith("???"))){ this.value = msg; } } /* * Caso o usu�rio tenha acesso a opera��o indicada pela url * constroi o bot�o habilitado * Caso o usu�rio n�o tenha acesso a opera��o * constroi o bot�o desabilitado */ if(permitirAcesso){ botaoAcesso =inicioBotao + "name=\""+name +"\""+ " value=\""+ value +"\""+ " onclick=\"" + onclick+"\" " + fimBotao; }else{ botaoAcesso =inicioBotao + "name=\""+name +"\""+ " value=\""+ value +"\""+ " " + desabilitado+" " + fimBotao; } //Escreve o bot�o na jsp jspContext.getOut().print(botaoAcesso); } /** * @param align O align a ser setado. */ public void setAlign(String align) { this.align = align; } /** * @param name O name a ser setado. */ public void setName(String name) { this.name = name; } /** * @param onclick O onclick a ser setado. */ public void setOnclick(String onclick) { this.onclick = onclick; } /** * @param tabindex O tabindex a ser setado. */ public void setTabindex(String tabindex) { this.tabindex = tabindex; } /** * @param url O url a ser setado. */ public void setUrl(String url) { this.url = url; } /** * @param value O value a ser setado. */ public void setValue(String value) { this.value = value; } public String getAlign() { return align; } public String getStyle() { return style; } public void setStyle(String style) { this.style = style; } }