119 lines
2.8 KiB
Java
119 lines
2.8 KiB
Java
package ru.ulstu.students.model;
|
||
|
||
import org.hibernate.annotations.Fetch;
|
||
import org.hibernate.annotations.FetchMode;
|
||
import org.hibernate.validator.constraints.NotBlank;
|
||
import ru.ulstu.core.model.BaseEntity;
|
||
import ru.ulstu.deadline.model.Deadline;
|
||
import ru.ulstu.tags.model.Tag;
|
||
|
||
import javax.persistence.*;
|
||
import java.util.ArrayList;
|
||
import java.util.Date;
|
||
import java.util.List;
|
||
|
||
@Entity
|
||
public class Task extends BaseEntity {
|
||
|
||
public enum TaskStatus {
|
||
IN_WORK("В работе"),
|
||
COMPLETED("Завершен"),
|
||
FAILED("Провалены сроки"),
|
||
LOADED_FROM_KIAS("Загружен автоматически");
|
||
|
||
private String statusName;
|
||
|
||
TaskStatus(String name) {
|
||
this.statusName = name;
|
||
}
|
||
|
||
public String getStatusName() {
|
||
return statusName;
|
||
}
|
||
}
|
||
|
||
@NotBlank
|
||
private String title;
|
||
|
||
private String description;
|
||
|
||
@Enumerated(value = EnumType.STRING)
|
||
private ru.ulstu.students.model.Task.TaskStatus status = TaskStatus.IN_WORK;
|
||
|
||
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
|
||
@JoinColumn(name = "task_id", unique = true)
|
||
@Fetch(FetchMode.SUBSELECT)
|
||
@OrderBy("date")
|
||
private List<Deadline> deadlines = new ArrayList<>();
|
||
|
||
@Column(name = "create_date")
|
||
@Temporal(TemporalType.TIMESTAMP)
|
||
private Date createDate = new Date();
|
||
|
||
@Column(name = "update_date")
|
||
@Temporal(TemporalType.TIMESTAMP)
|
||
private Date updateDate = new Date();
|
||
|
||
@ManyToMany(fetch = FetchType.EAGER)
|
||
@JoinTable(name = "task_tags",
|
||
joinColumns = {@JoinColumn(name = "task_id")},
|
||
inverseJoinColumns = {@JoinColumn(name = "tag_id")})
|
||
private List<Tag> tags = new ArrayList<>();
|
||
|
||
public String getTitle() {
|
||
return title;
|
||
}
|
||
|
||
public void setTitle(String title) {
|
||
this.title = title;
|
||
}
|
||
|
||
public TaskStatus getStatus() {
|
||
return status;
|
||
}
|
||
|
||
public void setStatus(TaskStatus status) {
|
||
this.status = status;
|
||
}
|
||
|
||
public String getDescription() {
|
||
return description;
|
||
}
|
||
|
||
public void setDescription(String description) {
|
||
this.description = description;
|
||
}
|
||
|
||
public List<Deadline> getDeadlines() {
|
||
return deadlines;
|
||
}
|
||
|
||
public void setDeadlines(List<Deadline> deadlines) {
|
||
this.deadlines = deadlines;
|
||
}
|
||
|
||
public Date getCreateDate() {
|
||
return createDate;
|
||
}
|
||
|
||
public void setCreateDate(Date createDate) {
|
||
this.createDate = createDate;
|
||
}
|
||
|
||
public Date getUpdateDate() {
|
||
return updateDate;
|
||
}
|
||
|
||
public void setUpdateDate(Date updateDate) {
|
||
this.updateDate = updateDate;
|
||
}
|
||
|
||
public List<Tag> getTags() {
|
||
return tags;
|
||
}
|
||
|
||
public void setTags(List<Tag> tags) {
|
||
this.tags = tags;
|
||
}
|
||
}
|