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

📄 acl.java

📁 采用比较流行的Struts2+spring+hibernate框架
💻 JAVA
字号:
package com.oa.model;

/**
 * 
 * @author zudajun225
 * @hibernate.class table="t_acl"
 */
public class ACL {
	/**
	 * 主体类型:角色
	 */
	public static final String TYPE_ROLE = "Role";
	/**
	 * 主体类型:用户
	 */
	public static final String TYPE_USER = "User";
	/**
	 * 授权允许
	 */
	public static final int ACL_YES = 1;
	/**
	 * 授权不允许
	 */
	public static final int ACL_NO = 0;
	/**
	 * 授权不确定
	 */
	public static final int ACL_NEUTRAL = -1;
	/**
	 *  @hibernate.id
	 * 		generator-class="native"
	 */
	private int id;
	
	/**
	 * 主体类型:角色或用户
	 * @hibernate.property
	 * 			not-null="true"
	 */
	private String principalType;
	/**
	 * 主体标识:角色标识或用户标识
	 * @hibernate.property
	 * 			not-null="true"
	 */
	private int principalSn;
	/**
	 * 资源标识
	 * @hibernate.property
	 * 			not-null="true"
	 */
	private int resourceSn;
	/**
	 * 授权状态,用后4位来标识CRUD操作
	 * @hibernate.property
	 * 			not-null="true"
	 */
	private int aclState;
	/**
	 * 表示是否继承,0表示不继承,-1表示继承
	 * @hibernate.property
	 * 			not-null="true"
	 */
	private int extendsState;
	
	public String getPrincipalType() {
		return principalType;
	}
	public void setPrincipalType(String principalType) {
		this.principalType = principalType;
	}
	public int getPrincipalSn() {
		return principalSn;
	}
	public void setPrincipalSn(int principalSn) {
		this.principalSn = principalSn;
	}
	public int getResourceSn() {
		return resourceSn;
	}
	public void setResourceSn(int resourceSn) {
		this.resourceSn = resourceSn;
	}
	public int getAclState() {
		return aclState;
	}
	public void setAclState(int aclState) {
		this.aclState = aclState;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	/**
	 * acl实例跟主体和资源关联
	 * 根据此实例进行授权:某种操作是否允许
	 * @param permission 只可取值0,1,2,3
	 * @param yes true表示允许,false表示不允许
	 */
	public void setPermission(int permission, boolean yes) {
		int tmp = 1;
		tmp = tmp << permission;
		
		if(yes) {
			aclState |= tmp;
		} else {
			aclState &= ~tmp;
		}
	}
	
	/**
	 * 获得ACL授权
	 * @param permission C/R/U/D权限
	 * @return 授权标识,允许/不允许/不确定
	 */
	public int getPermission(int permission) {
		if(extendsState == 0xFFFFFFFF) {
			return ACL_NEUTRAL;
		}
		
		int tmp = 1;
		tmp = tmp << permission;
		
		tmp &= aclState;
		
		if(tmp != 0) {
			return ACL_YES;
		}
		
		return ACL_NO;
	}
	/**
	 * 设置本授权是否是继承的
	 * @param yes true表示继承,false表示不继承
	 */
	public void setExtends(boolean yes) {
		if(yes) {
			extendsState = 0xFFFFFFFF;
		} else {
			extendsState = 0;
		}
	}
	public int getExtendsState() {
		return extendsState;
	}
	public void setExtendsState(int extendsState) {
		this.extendsState = extendsState;
	}
	
}

⌨️ 快捷键说明

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