读书人

一 springmvc 权限控制中写的一个小小

发布时间: 2013-03-21 10:08:17 作者: rapoo

1 springmvc 权限控制中写的一个小小的工具类1

?

package com.er07.book.springmvc.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.er07.book.springmvc.dao.RightDao;import com.er07.book.springmvc.model.Right;import com.er07.book.springmvc.service.RightService;import com.er07.book.springmvc.util.StringUtil;import com.er07.book.springmvc.util.ValidateUtil;/** * 权限管理 * @version 1.0  @author 高元东  * I'm glad to share with you my learning techniques! * @mailto 466862016@qq.com * 2013-3-11 */@Servicepublic class RightServiceImpl implements RightService {@Resourceprivate RightDao rightDao;/** * 保存或者更新权限  根据要求生成权限码 * @mailto 466862016@qq.com * @param right */public void saveOrUpdateRight(Right right) {long rightCode =1l;int rightPos =0;//是否插入if(right.getId()==null) { String hql ="select max(r.rightPos),max(r.rightCode) from Right r where r.rightPos = (select max(rr.rightPos) from Right rr)";   Object[] obj = (Object[]) this.rightDao.uniqueResult(hql);   Integer topPos = (Integer) obj[0];   Long topCode = (Long) obj[1];   if(topPos==null) {   rightCode = 1;   rightPos = 0;   } else {      //达到没有最大值吗?    if(topCode>=1l<<60) {//达到最大值   rightPos = topPos+1;   rightCode =1l;   } else {  //没有达到最大值      rightCode = topCode<<1;   rightPos = topPos;   }      }   //设置 权限位和权限码  保存在数据库中   right.setRightCode(rightCode);   right.setRightPos(rightPos);   }this.rightDao.saveOrUpdateEntity(right);}/** * 通过 url 增加或修改权限 */public void appendRightByUrl(String url) {//查询 此url 在数据库中是否存在  此权限String hql = "from Right where rightUrl =?";Right r = (Right) this.rightDao.uniqueResult(hql, url);if(r==null) { //不存在 , 插入数据库中Right newRight = new Right();newRight.setRightUrl(url);this.saveOrUpdateRight(newRight);}}/** * 查找在指定范围内的 权限集合 */public List<Right> findRangeRight(Integer[] ownRightIds) {if(!ValidateUtil.isValid(ownRightIds)) {return null;} else {String hql = "from Right where id in("+StringUtil.arr2Str(ownRightIds)+")";List<Right> rights = this.rightDao.findEntityByHQL(hql);return rights;}}/*** * 查找所有权限 */public List<Right> findAllRights() {return this.rightDao.findEntityByHQL("from Right");}/** * 查找最大的权限位 */public int findMaxRightPos() {String hql ="select max(rightPos) from Right";Integer max = (Integer) this.rightDao.uniqueResult(hql); return max==null?0:max;}}

?

读书人网 >VC/MFC

热点推荐