📄 permissiondaoimpl.java
字号:
package com.sgm.partybranch.persistence.sysadmin.hibernateImpl;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import com.sgm.partybranch.common.constants.ErrorCode;
import com.sgm.partybranch.persistence.PaginationHibernateDaoSupport;
import com.sgm.partybranch.persistence.sysadmin.PermissionDAO;
import com.sgm.partybranch.vo.sysadmin.Permission;
public class PermissionDAOImpl extends PaginationHibernateDaoSupport implements
PermissionDAO {
private static final Log log = LogFactory.getLog(PermissionDAOImpl.class);
public Permission getPermissionById(String permissionId)
throws DataAccessException {
if (log.isDebugEnabled()) {
log.debug("Getting Permission By Id");
}
try {
Permission instance = (Permission) getHibernateTemplate().get(
Permission.class, permissionId);
return instance;
} catch (DataAccessException e) {
log.error(ErrorCode.DATA_ACCESS_EXCEPTION_CODE
+ "get permission instance failed", e);
throw e;
}
}
@SuppressWarnings({ "unchecked", "deprecation" })
public List<Permission> getPermissionsByUser(final String userId) throws DataAccessException {
if(log.isDebugEnabled()){
log.debug("getting user "+userId+" permissions");
}
List<Permission> list=null;
try{
list=(List<Permission>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(final Session session)
throws HibernateException {
final String sql="select * from OWPARTYBRANCH.TM_PERMISSION p where p.PERMISSION_ID in "
+ "(select distinct PERMISSION_ID from OWPARTYBRANCH.TM_ROLE_PERMISSION_MAPPING rp where rp.ROLE_ID in "
+ "(select ROLE_ID from OWPARTYBRANCH.TM_USER_ROLE_MAPPING ur where ur.USER_ID=:uId))";
// 将查询出来的一个用户的所有的权限放入一个列表中
final List<Permission> result = (List) session
.createSQLQuery(sql).addEntity(
"TM_PERMISSION", Permission.class)
.setString("uId", userId).list();
return result;
}
}, true);
List<Permission> result = new ArrayList<Permission>();
result.addAll(list);
for (Permission permission : list) {
// 得到权限ID
String id = permission.getPermissionId();
while (id.length() > 2) {
// System.out.println("当前ID:"+id);
id = id.substring(0, id.length() - 2);
// System.out.println("当前父ID:"+id);
// 得到当前权限的父权限
Permission perm = getPermissionById(id);
if (perm != null & (!result.contains(perm))) {
result.add(perm);
}
}
}
return result;
}catch(DataAccessException e){
log.error(ErrorCode.DATA_ACCESS_EXCEPTION_CODE+"get permissions by user:"+userId+" failed");
throw e;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -