228 lines
6.3 KiB
Java
228 lines
6.3 KiB
Java
package ru.ulstu.grant.model;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.hibernate.validator.constraints.NotEmpty;
|
|
import ru.ulstu.deadline.model.Deadline;
|
|
import ru.ulstu.paper.model.Paper;
|
|
import ru.ulstu.project.model.ProjectDto;
|
|
import ru.ulstu.user.model.UserDto;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
|
|
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
|
|
|
public class GrantDto {
|
|
private final static int MAX_AUTHORS_LENGTH = 60;
|
|
|
|
private Integer id;
|
|
@NotEmpty
|
|
private String title;
|
|
private Grant.GrantStatus status;
|
|
private List<Deadline> deadlines = new ArrayList<>();
|
|
private String comment;
|
|
private String applicationFileName;
|
|
private ProjectDto project;
|
|
private Set<Integer> authorIds;
|
|
private Set<UserDto> authors;
|
|
private Integer leaderId;
|
|
private boolean wasLeader;
|
|
private boolean hasAge;
|
|
private boolean hasDegree;
|
|
private List<Integer> paperIds = new ArrayList<>();
|
|
private List<Paper> papers = new ArrayList<>();
|
|
private List<Integer> removedDeadlineIds = new ArrayList<>();
|
|
|
|
public GrantDto() {
|
|
deadlines.add(new Deadline());
|
|
}
|
|
|
|
@JsonCreator
|
|
public GrantDto(@JsonProperty("id") Integer id,
|
|
@JsonProperty("title") String title,
|
|
@JsonProperty("status") Grant.GrantStatus status,
|
|
@JsonProperty("deadlines") List<Deadline> deadlines,
|
|
@JsonProperty("comment") String comment,
|
|
@JsonProperty("project") ProjectDto project,
|
|
@JsonProperty("authorIds") Set<Integer> authorIds,
|
|
@JsonProperty("authors") Set<UserDto> authors,
|
|
@JsonProperty("leader") Integer leaderId,
|
|
@JsonProperty("wasLeader") boolean wasLeader,
|
|
@JsonProperty("hasAge") boolean hasAge,
|
|
@JsonProperty("hasDegree") boolean hasDegree,
|
|
@JsonProperty("paperIds") List<Integer> paperIds,
|
|
@JsonProperty("papers") List<Paper> papers) {
|
|
this.id = id;
|
|
this.title = title;
|
|
this.status = status;
|
|
this.deadlines = deadlines;
|
|
this.comment = comment;
|
|
this.applicationFileName = null;
|
|
this.project = project;
|
|
this.authors = authors;
|
|
this.leaderId = leaderId;
|
|
this.wasLeader = wasLeader;
|
|
this.hasAge = hasAge;
|
|
this.hasDegree = hasDegree;
|
|
this.paperIds = paperIds;
|
|
this.papers = papers;
|
|
}
|
|
|
|
public GrantDto(Grant grant) {
|
|
this.id = grant.getId();
|
|
this.title = grant.getTitle();
|
|
this.status = grant.getStatus();
|
|
this.deadlines = grant.getDeadlines();
|
|
this.comment = grant.getComment();
|
|
this.project = grant.getProject() == null ? null : new ProjectDto(grant.getProject());
|
|
this.applicationFileName = grant.getApplication() == null ? null : grant.getApplication().getName();
|
|
this.authorIds = convert(grant.getAuthors(), user -> user.getId());
|
|
this.authors = convert(grant.getAuthors(), UserDto::new);
|
|
this.leaderId = grant.getLeader().getId();
|
|
this.wasLeader = false;
|
|
this.hasAge = false;
|
|
this.hasDegree = false;
|
|
this.paperIds = convert(grant.getPapers(), paper -> paper.getId());
|
|
this.papers = grant.getPapers();
|
|
}
|
|
|
|
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<Deadline> getDeadlines() {
|
|
return deadlines;
|
|
}
|
|
|
|
public void setDeadlines(List<Deadline> 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;
|
|
}
|
|
|
|
public Set<Integer> getAuthorIds() {
|
|
return authorIds;
|
|
}
|
|
|
|
public void setAuthorIds(Set<Integer> authorIds) {
|
|
this.authorIds = authorIds;
|
|
}
|
|
|
|
public Set<UserDto> getAuthors() {
|
|
return authors;
|
|
}
|
|
|
|
public void setAuthors(Set<UserDto> authors) {
|
|
this.authors = authors;
|
|
}
|
|
|
|
public String getAuthorsString() {
|
|
return StringUtils.abbreviate(authors
|
|
.stream()
|
|
.map(author -> author.getLastName())
|
|
.collect(Collectors.joining(", ")), MAX_AUTHORS_LENGTH);
|
|
}
|
|
|
|
public Integer getLeaderId() {
|
|
return leaderId;
|
|
}
|
|
|
|
public void setLeaderId(Integer leaderId) {
|
|
this.leaderId = leaderId;
|
|
}
|
|
|
|
public boolean isWasLeader() {
|
|
return wasLeader;
|
|
}
|
|
|
|
public void setWasLeader(boolean wasLeader) {
|
|
this.wasLeader = wasLeader;
|
|
}
|
|
|
|
public boolean isHasAge() {
|
|
return hasAge;
|
|
}
|
|
|
|
public void setHasAge(boolean hasAge) {
|
|
this.hasAge = hasAge;
|
|
}
|
|
|
|
public boolean isHasDegree() {
|
|
return hasDegree;
|
|
}
|
|
|
|
public void setHasDegree(boolean hasDegree) {
|
|
this.hasDegree = hasDegree;
|
|
}
|
|
|
|
public List<Integer> getPaperIds() {
|
|
return paperIds;
|
|
}
|
|
|
|
public void setPaperIds(List<Integer> paperIds) {
|
|
this.paperIds = paperIds;
|
|
}
|
|
|
|
public List<Paper> getPapers() {
|
|
return papers;
|
|
}
|
|
|
|
public void setPapers(List<Paper> papers) {
|
|
this.papers = papers;
|
|
}
|
|
|
|
public List<Integer> getRemovedDeadlineIds() {
|
|
return removedDeadlineIds;
|
|
}
|
|
|
|
public void setRemovedDeadlineIds(List<Integer> removedDeadlineIds) {
|
|
this.removedDeadlineIds = removedDeadlineIds;
|
|
}
|
|
}
|