package ru.ulstu.timeline.model; import ru.ulstu.conference.model.Conference; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.grant.model.Grant; import ru.ulstu.paper.model.Paper; import ru.ulstu.project.model.Project; import ru.ulstu.students.model.Task; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; 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.persistence.OneToMany; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Date; import java.util.List; @Entity public class Event extends BaseEntity { public enum EventStatus { POSSIBLE("Возможное"), NEW("Новое"), IN_PROGRESS("В процессе"), COMPLETED("Завершено"); private final String name; EventStatus(String name) { this.name = name; } public String getName() { return name; } } @NotBlank private String title; @Enumerated(value = EnumType.STRING) private PeriodEvent period; @Enumerated(value = EnumType.STRING) private EventStatus status; @Column(name = "execute_date") @Temporal(TemporalType.TIMESTAMP) @NotNull private Date executeDate; @Column(name = "create_date") @Temporal(TemporalType.TIMESTAMP) private Date createDate; @Column(name = "update_date") @Temporal(TemporalType.TIMESTAMP) private Date updateDate; private String description; @ManyToMany(fetch = FetchType.LAZY) private List recipients = new ArrayList<>(); @ManyToOne @JoinColumn(name = "child_id") private Event child; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "child_id") private List parents; @ManyToOne @JoinColumn(name = "paper_id") private Paper paper; @ManyToOne @JoinColumn(name = "conference_id") private Conference conference; @ManyToOne @JoinColumn(name = "grant_id") private Grant grant; @ManyToOne @JoinColumn(name = "project_id") private Project project; @ManyToOne @JoinColumn(name = "task_id") private Task task; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Event.EventStatus getStatus() { return status; } public void setStatus(EventStatus status) { this.status = status; } public PeriodEvent getPeriod() { return period; } public void setPeriod(PeriodEvent period) { this.period = period; } 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 String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public List getRecipients() { return recipients; } public void setRecipients(List recipients) { this.recipients = recipients; } public Date getExecuteDate() { return executeDate; } public void setExecuteDate(Date executeDate) { this.executeDate = executeDate; } public Event getChild() { return child; } public void setChild(Event child) { this.child = child; } public List getParents() { return parents; } public void setParents(List parents) { this.parents = parents; } public Paper getPaper() { return paper; } public void setPaper(Paper paper) { this.paper = paper; } public Conference getConference() { return conference; } public void setConference(Conference conference) { this.conference = conference; } public Grant getGrant() { return grant; } public void setGrant(Grant grant) { this.grant = grant; } public Project getProject() { return project; } public void setProject(Project project) { this.project = project; } public Task getTask() { return task; } public void setTask(Task task) { this.task = task; } }