//$Id: AuthorityDaoHibernate.java,v 1.3 2007/01/13 07:06:51 chaostone Exp $ /* * * Copyright c 2005-2009 * Licensed under the Apache License, Version 2.0 (the "License") * http://www.apache.org/licenses/LICENSE-2.0 * */ /******************************************************************************** * @author chaostone * * MODIFICATION DESCRIPTION * * Name Date Description * ============ ============ ============ * chaostone 2005-9-27 Created * ********************************************************************************/ package org.beanfuse.security.dao; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.beanfuse.persist.hibernate.BaseDaoHibernate; import org.beanfuse.security.Authority; import org.beanfuse.security.Group; import org.beanfuse.security.Resource; import org.hibernate.Query; public class AuthorityDaoHibernate extends BaseDaoHibernate implements AuthorityDao { public Authority getAuthority(Group group, Resource resource) { Map params = new HashMap(); params.put("group", group); params.put("resource", resource); List authorityList = entityDao.searchNamedQuery("getGroupAuthorityByResource", params, false); if (authorityList.isEmpty()) return null; else return (Authority) authorityList.get(0); } public List getAuthorities(Group group) { Map params = new HashMap(); params.put("groupId", group.getId()); return entityDao.searchNamedQuery("getAuthorities", params, false); } /** * 查询用户组对应的模块 */ public List getResources(Group group) { String hql = "select distinct m from Group as r join r.authorities as a" + " join a.resource as m where r.id = :groupId and m.enabled = true"; Query query = getSession().createQuery(hql); query.setParameter("groupId", group.getId()); query.setCacheable(true); return query.list(); } /** * 找到该组内激活的资源id */ public Set getResourceIds(Group group) { String hql = "select m.id from Group as r join r.authorities as a" + " join a.resource as m where r.id = :groupId and m.enabled = true"; Query query = getSession().createQuery(hql); query.setParameter("groupId", group.getId()); query.setCacheable(true); return new HashSet(query.list()); } public void saveOrUpdate(Authority authority) { entityDao.saveOrUpdate(authority); } public void remove(Authority authority) { entityDao.remove(authority); } }