package ru.ulstu.paper.model; import org.hibernate.validator.constraints.NotBlank; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.core.model.UserContainer; import ru.ulstu.file.model.FileData; import ru.ulstu.user.model.User; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.validation.constraints.NotNull; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; @Entity public class Paper extends BaseEntity implements UserContainer { public enum PaperStatus { ATTENTION("Обратить внимание"), ON_PREPARATION("На подготовке"), DRAFT("Черновик"), COMPLETED("Завершена"), FAILED("Провалены сроки"); private String name; PaperStatus(String name) { this.name = name; } public String getName() { return name; } } @NotBlank private String title; @Enumerated(value = EnumType.STRING) private PaperStatus status = PaperStatus.DRAFT; @Column(name = "create_date") private Date createDate = new Date(); @Column(name = "update_date") private Date updateDate = new Date(); @Column(name = "deadline_date") @NotNull private Date deadlineDate; private String comment; private Boolean locked = false; @ManyToOne @JoinColumn(name = "file_id") private FileData fileData; @ManyToMany(fetch = FetchType.EAGER) private Set authors = new HashSet<>(); public PaperStatus getStatus() { return status; } public void setStatus(PaperStatus status) { this.status = status; } 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 Date getDeadlineDate() { return deadlineDate; } public void setDeadlineDate(Date deadlineDate) { this.deadlineDate = deadlineDate; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public Boolean getLocked() { return locked; } public void setLocked(Boolean locked) { this.locked = locked; } public FileData getFileData() { return fileData; } public void setFileData(FileData fileData) { this.fileData = fileData; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Set getAuthors() { return authors; } public void setAuthors(Set authors) { this.authors = authors; } @Override public Set getUsers() { return getAuthors(); } }