package com.norteksoft.acs.entity.authorization;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import org.apache.commons.lang.builder.ToStringBuilder;
import com.norteksoft.acs.entity.IdEntity;
/**
* 角色实体
*
*/
@Entity
@Table(name = "ACS_ROLE")
public class Role extends IdEntity{
private static final long serialVersionUID = 1L;
private String code;
//角色名称
private String name;
//角色和业务系统的多对一关系
private BusinessSystem businessSystem;
//角色和角色组多对一的关系
private RoleGroup roleGroup;
private Set<RoleUser> roleUsers = new HashSet<RoleUser>(0);
private Set<RoleDepartment> roleDepartments = new HashSet<RoleDepartment>(0);
private Set<RoleFunction> roleFunctions = new HashSet<RoleFunction>(0);
private Set<RoleWorkgroup> roleWorkgroups = new HashSet<RoleWorkgroup>(0);
private Role parentRole;
private Set<Role> subRoles = new HashSet<Role>();
private Long companyId;
private Integer weight=0;//权重
public Role(){}
public Role(String code, String name){
this.name = name;
this.code = code;
}
@OneToMany(mappedBy="role")
public Set<RoleFunction> getRoleFunctions() {
return roleFunctions;
}
public void setRoleFunctions(Set<RoleFunction> roleFunctions) {
this.roleFunctions = roleFunctions;
}
private Set<RoleWorkgroup> workGroups = new HashSet<RoleWorkgroup>(0);
@OneToMany(mappedBy="role")
public Set<RoleWorkgroup> getWorkGroups() {
return workGroups;
}
public void setWorkGroups(Set<RoleWorkgroup> workGroups) {
this.workGroups = workGroups;
}
@OneToMany(mappedBy = "role")
public Set<RoleUser> getRoleUsers() {
return roleUsers;
}
public void setRoleUsers(Set<RoleUser> roleUsers) {
this.roleUsers = roleUsers;
}
@OneToMany(mappedBy = "role")
public Set<RoleDepartment> getRoleDepartments() {
return roleDepartments;
}
public void setRoleDepartments(Set<RoleDepartment> roleDepartments) {
this.roleDepartments = roleDepartments;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*
* 多对一(业务系统)
*/
@ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY)
@JoinColumn(name="FK_SYSTEM_ID")
public BusinessSystem getBusinessSystem() {
return businessSystem;
}
public void setBusinessSystem(BusinessSystem businessSystem) {
this.businessSystem = businessSystem;
}
/*
* 多对一(角色组)
*/
@ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="FK_ROLE_GROUP_ID")
public RoleGroup getRoleGroup() {
return roleGroup;
}
public void setRoleGroup(RoleGroup roleGroup) {
this.roleGroup = roleGroup;
}
@OneToMany(mappedBy="parentRole")
@OrderBy("id")
public Set<Role> getSubRoles() {
return subRoles;
}
public void setSubRoles(Set<Role> subRoles) {
this.subRoles = subRoles;
}
@ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="FK_PARENT_ROLE_ID")
public Role getParentRole() {
return parentRole;
}
public void setParentRole(Role parentRole) {
this.parentRole = parentRole;
}
@OneToMany(mappedBy="role")
public Set<RoleWorkgroup> getRoleWorkgroups() {
return roleWorkgroups;
}
public void setRoleWorkgroups(Set<RoleWorkgroup> roleWorkgroups) {
this.roleWorkgroups = roleWorkgroups;
}
@Column(name="FK_COMPANY_ID")
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Integer getWeight() {
return weight;
}
public void setWeight(Integer weight) {
this.weight = weight;
}
}