⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 authdaoimpl.java

📁 动态实现基于角色的权限管理Acegi+hibernate
💻 JAVA
字号:
package sample.auth;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.acegisecurity.GrantedAuthority;

import sample.auth.cache.FunctionCache;
import sample.auth.cache.info.RoleByNameCache;
import sample.dao.IBaseDao;
import sample.mappings.function.Function;
import sample.mappings.role.Role;


public class AuthDaoImpl  implements AuthDao {

    private IBaseDao baseDao;
    private FunctionCache cache;
    private RoleByNameCache roleCache;
    
    
	public RoleByNameCache getRoleCache() {
		return roleCache;
	}

	public void setRoleCache(RoleByNameCache roleCache) {
		this.roleCache = roleCache;
	}

	public FunctionCache getCache() {
		return cache;
	}

	public void setCache(FunctionCache cache) {
		this.cache = cache;
	}

	public IBaseDao getBaseDao() {
        return baseDao;
    }

    public void setBaseDao(IBaseDao baseDao) {
        this.baseDao = baseDao;
    }

  

	public Collection getFunctionsByRoles(Collection granted) {
		Set set = new HashSet();
		if(null == granted) throw new IllegalArgumentException("Granted Roles cannot be null");
        
		for(Iterator it = granted.iterator();it.hasNext();){
            
            GrantedAuthority grantedAuthority = (GrantedAuthority)it.next();
            Role  role = roleCache.getRoleByRoleNameCache(grantedAuthority.getAuthority()); //
            if(role == null){
            	role = (Role)baseDao.loadByKey(Role.class, "name", grantedAuthority.getAuthority());
            	roleCache.putRoleInCache(role);
            }
            GrantedFunction[] grantedFunctions = cache.getFunctionFromCache(role.getName());
            
            if(grantedFunctions == null){
            	
            	Set functions = role.getFunctions();
    			for(Iterator it2 = functions.iterator();it2.hasNext();){	
                    Function function = (Function)it2.next();
                    GrantedFunction grantedFunction = new GrantedFunctionImpl(function.getName());
    				set.add(  grantedFunction  ); 
    			}
                 
    			grantedFunctions = (GrantedFunction[]) set.toArray(new GrantedFunction[0]);
    			cache.putFuncitonInCache(role.getName(),grantedFunctions);
            }
            
            for(int i = 0 ; i < grantedFunctions.length; i++){
            	 GrantedFunction grantedFunction = grantedFunctions[i];
            	 set.add(grantedFunction);
            }
		}
       
		return set;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -