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

📄 acl.java

📁 这是一个jbpm的高级应用,是一个oa工作流的系统,里面用到了spring,hibernate技术等.实为学习jbpm的好资料!
💻 JAVA
字号:
package com.bjsxt.oa.model;

/**
 * 
 * @author Administrator
 * @hibernate.class table="T_ACL"
 */
public class ACL {
	
	public static final String TYPE_ROLE = "Role";
	public static final String TYPE_USER = "User";
	
	/**
	 * @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 String resourceSn;
	
	/**
	 * 用aclState的后四位来表示CRUD操作权限
	 * @hibernate.property
	 */
	private int aclState;
	
	/**
	 * 是否继承,0表示不继承,-1表示继承
	 * @hibernate.property
	 */
	private int aclTriState;
	
	//授权允许
	public static final int ACL_YES = 1;
	
	//授权不允许
	public static final int ACL_NO = 0;
	
	//授权不确定
	public static final int ACL_NEUTRAL = -1;

	public int getAclState() {
		return aclState;
	}

	public void setAclState(int aclState) {
		this.aclState = aclState;
	}

	public int getAclTriState() {
		return aclTriState;
	}

	public void setAclTriState(int aclTriState) {
		this.aclTriState = aclTriState;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getPrincipalSn() {
		return principalSn;
	}

	public void setPrincipalSn(int principalSn) {
		this.principalSn = principalSn;
	}

	public String getPrincipalType() {
		return principalType;
	}

	public void setPrincipalType(String principalType) {
		this.principalType = principalType;
	}

	public String getResourceSn() {
		return resourceSn;
	}

	public void setResourceSn(String resourceSn) {
		this.resourceSn = resourceSn;
	}
	
	//acl实例跟主体和资源关联
	//针对这个实例授权:某种操作是否允许
	public void setPermission(int permission,boolean yes){
		int tmp = 1;
		
		tmp = tmp << permission;
		
		if(yes){
			aclState |= tmp;
		}else{
			aclState &= ~tmp;
		}
	}
	
	//获得ACL授权
	public int getPermission(int permission){
		int tmp = 1;
		tmp = tmp << permission;
		
		//如果继承,则返回未定的授权信息
		if(aclTriState == 0xFFFFFFFF){
			return ACL_NEUTRAL;
		}
		
		tmp &= aclState;
		if(tmp != 0){
			return ACL_YES;
		}
		
		return ACL_NO;
	}
	
	//设置本授权是否是继承的!
	public void setExtends(boolean yes){
		if(yes){
			aclTriState = 0xFFFFFFFF;
		}else{
			aclTriState = 0;
		}
	}
}

⌨️ 快捷键说明

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