?? acl.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";
/**
* 授權允許
*/
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;
/**
* 授權狀態,用其后四位(bit)來表示CRUD操作
* @hibernate.property
* not-null="true"
*/
private int aclState;
/**
* 表示是否繼承,0表示不繼承,-1表示表示繼承
* @hibernate.property
* not-null="true"
*/
private int aclTriState;
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 int getResourceSn() {
return resourceSn;
}
public void setResourceSn(int resourceSn) {
this.resourceSn = resourceSn;
}
/**
* 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(aclTriState == 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){
aclTriState = 0xFFFFFFFF;
}else{
aclTriState = 0;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -