package kr.wisestone.owl.domain; import kr.wisestone.owl.domain.enumType.ProjectType; import org.hibernate.annotations.Type; 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 Project extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; public static final String PROJECT_READY = "01"; public static final String PROJECT_OPEN = "02"; public static final String PROJECT_CLOSE = "03"; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String projectKey; private String description; private String status; private String startDate; private String endDate; @Type(type="yes_no") private Boolean defaultYn = Boolean.FALSE; @Enumerated(EnumType.STRING) private ProjectType projectType; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "workspace_id") private Workspace workspace; @OneToMany(mappedBy = "project", cascade = {CascadeType.ALL}, orphanRemoval = true) private Set issues = new HashSet<>(); @OneToMany(mappedBy = "project", cascade = {CascadeType.ALL}, orphanRemoval = true) private Set issueNumberGenerators = new HashSet<>(); @OneToMany(mappedBy = "project", cascade = {CascadeType.ALL}, orphanRemoval = true) private Set issueTypeCustomFields = new HashSet<>(); @OneToMany(mappedBy = "project", cascade={CascadeType.ALL}, orphanRemoval=true) private Set projectRoles = new HashSet<>(); @OneToMany(mappedBy = "project", cascade = {CascadeType.ALL}, orphanRemoval = true) private Set userInviteProjects = new HashSet<>(); @OneToMany(mappedBy = "project", cascade = {CascadeType.ALL}, orphanRemoval = true) private Set projectClosures = new HashSet<>(); 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 getProjectKey() { return projectKey; } public void setProjectKey(String projectKey) { this.projectKey = projectKey; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getStartDate() { return startDate; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getEndDate() { return endDate; } public void setEndDate(String endDate) { this.endDate = endDate; } public Boolean getDefaultYn() { return defaultYn; } public void setDefaultYn(Boolean defaultYn) { this.defaultYn = defaultYn; } public ProjectType getProjectType() { return projectType; } public void setProjectType(ProjectType projectType) { this.projectType = projectType; } public Workspace getWorkspace() { return workspace; } public void setWorkspace(Workspace workspace) { this.workspace = workspace; } public Set getIssues() { return issues; } public void setIssues(Set issues) { this.issues = issues; } public Set getIssueNumberGenerators() { return issueNumberGenerators; } public void setIssueNumberGenerators(Set issueNumberGenerators) { this.issueNumberGenerators = issueNumberGenerators; } public Set getIssueTypeCustomFields() { return issueTypeCustomFields; } public void setIssueTypeCustomFields(Set issueTypeCustomFields) { this.issueTypeCustomFields = issueTypeCustomFields; } public Set getProjectRoles() { return projectRoles; } public void setProjectRoles(Set projectRoles) { this.projectRoles = projectRoles; } public Set getUserInviteProjects() { return userInviteProjects; } public void setUserInviteProjects(Set userInviteProjects) { this.userInviteProjects = userInviteProjects; } public Set getProjectClosures() { return projectClosures; } public ProjectClosure getParentProjectClosure() { if (this.projectClosures != null && this.projectClosures.size() > 0) { Iterator iter = this.projectClosures.iterator(); return iter.next(); } return null; } public void setProjectClosures(Set childProjects) { this.projectClosures = childProjects; } public void addParent(ProjectClosure project){ projectClosures.add(project); } }