package kr.wisestone.owl.domain; import javax.persistence.*; import java.io.Serializable; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * Created by jeong on 2017-12-30. */ @Entity public class ProjectRole extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; public static final String TYPE_DEFAULT = "01"; // 일반 사용자 public static final String TYPE_MANAGER = "02"; // 관리자 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String roleType; @ManyToOne(fetch= FetchType.LAZY) @JoinColumn(name="project_id") private Project project; @OneToMany(mappedBy="projectRole", cascade={CascadeType.ALL}, orphanRemoval=true) private Set projectRoleUsers = new HashSet<>(); @OneToMany(mappedBy="projectRole", cascade={CascadeType.ALL}, orphanRemoval=true) private Set projectRoleDepartments = new HashSet<>(); @OneToMany(mappedBy="projectRole", cascade={CascadeType.ALL}, orphanRemoval=true) private Set projectRolePermissions = new HashSet<>(); public ProjectRole(){} public ProjectRole(Project project, String name, String roleType){ this.project = project; this.name = name; this.roleType = roleType; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getRoleType() { return roleType; } public void setRoleType(String roleType) { this.roleType = roleType; } public Project getProject() { return project; } public void setProject(Project project) { this.project = project; } public Set getProjectRoleUsers() { return projectRoleUsers; } public void setProjectRoleUsers(Set projectRoleUsers) { this.projectRoleUsers = projectRoleUsers; } public Set getProjectRoleDepartments() { return projectRoleDepartments; } public void setProjectRoleDepartments(Set projectRoleDepartments) { this.projectRoleDepartments = projectRoleDepartments; } public Set getProjectRolePermissions() { return projectRolePermissions; } public void setProjectRolePermissions(Set projectRolePermissions) { this.projectRolePermissions = projectRolePermissions; } public void addUser(User user) { if (this.projectRoleUsers == null) { this.projectRoleUsers = new HashSet<>(); } ProjectRoleUser projectRoleUser = new ProjectRoleUser(this, user); this.projectRoleUsers.add(projectRoleUser); } public void addDepartment(Department department) { if (this.projectRoleDepartments == null) { this.projectRoleDepartments = new HashSet<>(); } ProjectRoleDepartment projectRoleDepartment = new ProjectRoleDepartment(this, department); this.projectRoleDepartments.add(projectRoleDepartment); } public void removeProjectRole(User user) { Iterator iterator = this.projectRoleUsers.iterator(); while (iterator.hasNext()) { ProjectRoleUser projectRoleUser = iterator.next(); if (user.getId().equals(projectRoleUser.getUser().getId())) { this.projectRoleUsers.remove(projectRoleUser); break; } } } }