package ru.ulstu.project.model; import org.hibernate.validator.constraints.NotBlank; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.grant.model.Grant; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; @Entity public class Project extends BaseEntity { public enum ProjectStatus { APPLICATION("Заявка"), ON_COMPETITION("Отправлен на конкурс"), SUCCESSFUL_PASSAGE("Успешное прохождение"), IN_WORK("В работе"), COMPLETED("Завершен"), FAILED("Провалены сроки"); private String statusName; ProjectStatus(String statusName) { this.statusName = statusName; } public String getStatusName() { return statusName; } } @NotBlank private String title; @Enumerated(value = EnumType.STRING) private ProjectStatus status = ProjectStatus.APPLICATION; @NotNull private String description; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "project_id") private List deadlines = new ArrayList<>(); @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "grant_id") private Grant grant; @NotNull private String repository; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public ProjectStatus getStatus() { return status; } public void setStatus(ProjectStatus status) { this.status = status; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Grant getGrant() { return grant; } public void setGrant(Grant grant) { this.grant = grant; } public String getRepository() { return repository; } public void setRepository(String repository) { this.repository = repository; } public List getDeadlines() { return deadlines; } public void setDeadlines(List deadlines) { this.deadlines = deadlines; } }