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

📄 permissiondaoimpl.java

📁 评分系统,acegi+JSF+spring+hibernate,可上传附件
💻 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 + -