package com.jspxcms.core.domain; 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.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Transient; /** * Role * * @author liufang * */ @Entity @Table(name = "cms_role") public class Role implements java.io.Serializable { private static final long serialVersionUID = 1L; @Transient public RoleSite getRoleSite(Integer siteId) { Set<RoleSite> rss = getRoleSites(); for (RoleSite rs : rss) { if (rs.getSite().getId().equals(siteId)) { return rs; } } return null; } @Transient public String getPerms(Integer siteId) { RoleSite rs = getRoleSite(siteId); return rs != null ? rs.getPerms() : null; } @Transient public Set<Node> getInfoRights(Integer siteId) { RoleSite rs = getRoleSite(siteId); return rs != null ? rs.getInfoRights() : null; } @Transient public Set<Node> getNodeRights(Integer siteId) { RoleSite rs = getRoleSite(siteId); return rs != null ? rs.getNodeRights() : null; } @Transient public Boolean getAllPerm(Integer siteId) { RoleSite rs = getRoleSite(siteId); return rs != null ? rs.getAllPerm() : null; } @Transient public Boolean getAllInfo(Integer siteId) { RoleSite rs = getRoleSite(siteId); return rs != null ? rs.getAllInfo() : null; } @Transient public Boolean getAllNode(Integer siteId) { RoleSite rs = getRoleSite(siteId); return rs != null ? rs.getAllNode() : null; } @Transient public Integer getInfoRightType(Integer siteId) { RoleSite rs = getRoleSite(siteId); return rs != null ? rs.getInfoRightType() : null; } @Transient public Set<User> getUsers() { Set<UserRole> userRoles = getUserRoles(); if (userRoles == null) { return null; } Set<User> users = new HashSet<User>(userRoles.size()); for (UserRole userRole : userRoles) { users.add(userRole.getUser()); } return users; } public void addUserRole(UserRole userRole) { Set<UserRole> userRoles = getUserRoles(); if (userRoles == null) { userRoles = new HashSet<UserRole>(); setUserRoles(userRoles); } userRoles.add(userRole); } @Transient public void applyDefaultValue() { if (getSeq() == null) { setSeq(Integer.MAX_VALUE); } } private Integer id; private Set<RoleSite> roleSites = new HashSet<RoleSite>(); private Set<UserRole> userRoles = new HashSet<UserRole>(); private Site site; private String name; private String description; private Integer seq; @Id @Column(name = "f_role_id", unique = true, nullable = false) @TableGenerator(name = "tg_cms_role", pkColumnValue = "cms_role", table = "t_id_table", pkColumnName = "f_table", valueColumnName = "f_id_value", initialValue = 1, allocationSize = 1) @GeneratedValue(strategy = GenerationType.TABLE, generator = "tg_cms_role") public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "role") public Set<RoleSite> getRoleSites() { return this.roleSites; } public void setRoleSites(Set<RoleSite> roleSites) { this.roleSites = roleSites; } @OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "role") @OrderBy("roleIndex") public Set<UserRole> getUserRoles() { return userRoles; } public void setUserRoles(Set<UserRole> userRoles) { this.userRoles = userRoles; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "f_site_id", nullable = false) public Site getSite() { return this.site; } public void setSite(Site site) { this.site = site; } @Column(name = "f_name", nullable = false, length = 100) public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Column(name = "f_description") public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } @Column(name = "f_seq", nullable = false) public Integer getSeq() { return this.seq; } public void setSeq(Integer seq) { this.seq = seq; } }