package kr.wisestone.owl.domain; import com.google.common.collect.Lists; import javax.persistence.*; import java.io.Serializable; import java.util.*; @Entity public class SystemRole extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String roleType; @OneToMany(mappedBy="systemRole", cascade={CascadeType.ALL}, orphanRemoval=true) private Set systemRoleUsers = new HashSet<>(); @OneToMany(mappedBy="systemRole", cascade={CascadeType.ALL}, orphanRemoval=true) private Set systemRolePermissions = new HashSet<>(); public SystemRole() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Set getSystemRoleUsers() { return this.systemRoleUsers; } public List getUsers() { List users = Lists.newArrayList(); Iterator iterator = this.systemRoleUsers.iterator(); while (iterator.hasNext()) { users.add(iterator.next().getUser()); } return users; } public void setSystemRoleUsers(Set systemRoleUsers) { this.systemRoleUsers = systemRoleUsers; } public Set getSystemRolePermissions() { return this.systemRolePermissions; } public List getPermissions() { List permissions = new ArrayList(); Iterator iterator = this.systemRolePermissions.iterator(); while (iterator.hasNext()) { permissions.add(iterator.next().getPermission()); } return permissions; } public void setSystemRolePermissions(Set systemRolePermissions) { this.systemRolePermissions = systemRolePermissions; } public void addSystemRolePermission(SystemRolePermission systemRolePermission) { if (this.systemRolePermissions == null) { this.systemRolePermissions = new HashSet<>(); } this.systemRolePermissions.add(systemRolePermission); } public void removeSystemRolePermission(SystemRolePermission systemRolePermission) { this.systemRolePermissions.remove(systemRolePermission); } public void addSystemRoleUser(SystemRoleUser systemRoleUser) { if (this.systemRoleUsers == null) { this.systemRoleUsers = new HashSet<>(); } this.systemRoleUsers.add(systemRoleUser); } public String getRoleType() { return roleType; } public void setRoleType(String roleType) { this.roleType = roleType; } public void removeSystemRoleUser(SystemRoleUser systemRoleUser) { this.systemRoleUsers.remove(systemRoleUser); } public boolean contains(User user) { for (SystemRoleUser systemRoleUser : this.systemRoleUsers) { if (user.getId().equals(systemRoleUser.getUser().getId())) { return true; } } return false; } public boolean contains(Long userId) { for (SystemRoleUser systemRoleUser : this.systemRoleUsers) { if (userId.equals(systemRoleUser.getUser().getId())) { return true; } } return false; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (this.id == null ? 0 : this.id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (this.getClass() != obj.getClass()) { return false; } SystemRole other = (SystemRole) obj; if (this.id == null) { if (other.id != null) { return false; } } else if (!this.id.equals(other.id)) { return false; } return true; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("SystemRole ["); if (this.id != null) { builder.append("id="); builder.append(this.id); builder.append(", "); } if (this.name != null) { builder.append("name="); builder.append(this.name); builder.append(", "); } if (this.systemRoleUsers != null) { builder.append("systemRoleUsers="); builder.append(this.systemRoleUsers); builder.append(", "); } if (this.systemRolePermissions != null) { builder.append("systemRolePermissions="); builder.append(this.systemRolePermissions); } builder.append("]"); return builder.toString(); } public void addUser(User user) { if (this.systemRoleUsers == null) { this.systemRoleUsers = new HashSet<>(); } SystemRoleUser systemRoleUser = new SystemRoleUser(); systemRoleUser.setSystemRole(this); systemRoleUser.setUser(user); this.systemRoleUsers.add(systemRoleUser); } public void removeUser(User user) { for (SystemRoleUser systemRoleUser : this.systemRoleUsers) { if (user.getId().equals(systemRoleUser.getUser().getId())) { this.systemRoleUsers.remove(systemRoleUser); break; } } } public void addPermission(Permission permission) { SystemRolePermission systemRolePermission = new SystemRolePermission(); systemRolePermission.setSystemRole(this); systemRolePermission.setPermission(permission); systemRolePermissions.add(systemRolePermission); } }