package ru.ulstu.grant.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.hibernate.validator.constraints.NotEmpty; import ru.ulstu.deadline.model.DeadlineDto; import ru.ulstu.grant.model.Grant; import ru.ulstu.project.model.ProjectDto; import java.util.ArrayList; import java.util.List; import static ru.ulstu.core.util.StreamApiUtils.convert; public class GrantDto { private Integer id; @NotEmpty private String title; private Grant.GrantStatus status; private List deadlines = new ArrayList<>(); private String comment; private String applicationFileName; private ProjectDto project; public GrantDto() { deadlines.add(new DeadlineDto()); } @JsonCreator public GrantDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @JsonProperty("status") Grant.GrantStatus status, @JsonProperty("deadlines") List deadlines, @JsonProperty("comment") String comment, @JsonProperty("project") ProjectDto project) { this.id = id; this.title = title; this.status = status; this.deadlines = deadlines; this.comment = comment; this.applicationFileName = null; this.project = project; } public GrantDto(Grant grant) { this.id = grant.getId(); this.title = grant.getTitle(); this.status = grant.getStatus(); this.deadlines = convert(grant.getDeadlines(), DeadlineDto::new); this.comment = grant.getComment(); this.project = grant.getProject() == null ? null : new ProjectDto(grant.getProject()); this.applicationFileName = grant.getApplication() == null ? null : grant.getApplication().getName(); } public Integer getId() { return id; } public void setId(Integer id) {this.id = id;} public String getTitle() { return title; } public void setTitle(String title) {this.title = title;} public Grant.GrantStatus getStatus() { return status; } public void setStatus(Grant.GrantStatus status) { this.status = status; } public List getDeadlines() { return deadlines; } public void setDeadlines(List deadlines) { this.deadlines = deadlines; } public String getComment() { return comment; } public void setComment(String comment) {this.comment = comment;} public ProjectDto getProject() { return project; } public void setProject(ProjectDto project) {this.project = project;} public String getApplicationFileName() { return applicationFileName; } public void setApplicationFileName(String applicationFileName) { this.applicationFileName = applicationFileName;} }