145 lines
3.6 KiB
Java
145 lines
3.6 KiB
Java
package ru.ulstu.students.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.tags.model.Tag;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class TaskDto {
|
|
|
|
private final static int MAX_TAGS_LENGTH = 50;
|
|
|
|
private Integer id;
|
|
@NotEmpty
|
|
private String title;
|
|
private String description;
|
|
private Task.TaskStatus status;
|
|
private List<Deadline> deadlines = new ArrayList<>();
|
|
private Date createDate;
|
|
private Date updateDate;
|
|
private Set<Integer> tagIds;
|
|
private List<Tag> tags;
|
|
|
|
public TaskDto() {
|
|
deadlines.add(new Deadline());
|
|
}
|
|
|
|
@JsonCreator
|
|
public TaskDto(@JsonProperty("id") Integer id,
|
|
@JsonProperty("title") String title,
|
|
@JsonProperty("description") String description,
|
|
@JsonProperty("createDate") Date createDate,
|
|
@JsonProperty("updateDate") Date updateDate,
|
|
@JsonProperty("status") Task.TaskStatus status,
|
|
@JsonProperty("deadlines") List<Deadline> deadlines,
|
|
@JsonProperty("tagIds") Set<Integer> tagIds,
|
|
@JsonProperty("tags") List<Tag> tags) {
|
|
this.id = id;
|
|
this.title = title;
|
|
this.status = status;
|
|
this.deadlines = deadlines;
|
|
this.createDate = createDate;
|
|
this.updateDate = updateDate;
|
|
this.description = description;
|
|
this.tags = tags;
|
|
}
|
|
|
|
public TaskDto(Task task) {
|
|
this.id = task.getId();
|
|
this.title = task.getTitle();
|
|
this.status = task.getStatus();
|
|
this.deadlines = task.getDeadlines();
|
|
this.createDate = task.getCreateDate();
|
|
this.updateDate = task.getUpdateDate();
|
|
this.description = task.getDescription();
|
|
this.tags = task.getTags();
|
|
}
|
|
|
|
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 String getDescription() {
|
|
return description;
|
|
}
|
|
|
|
public void setDescription(String description) {
|
|
this.description = description;
|
|
}
|
|
|
|
public Task.TaskStatus getStatus() {
|
|
return status;
|
|
}
|
|
|
|
public void setStatus(Task.TaskStatus status) {
|
|
this.status = status;
|
|
}
|
|
|
|
public List<Deadline> getDeadlines() {
|
|
return deadlines;
|
|
}
|
|
|
|
public void setDeadlines(List<Deadline> deadlines) {
|
|
this.deadlines = deadlines;
|
|
}
|
|
|
|
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 Set<Integer> getTagIds() {
|
|
return tagIds;
|
|
}
|
|
|
|
public void setTagIds(Set<Integer> tagIds) {
|
|
this.tagIds = tagIds;
|
|
}
|
|
|
|
public List<Tag> getTags() {
|
|
return tags;
|
|
}
|
|
|
|
public void setTags(List<Tag> tags) {
|
|
this.tags = tags;
|
|
}
|
|
|
|
public String getTagsString() {
|
|
return StringUtils.abbreviate(tags
|
|
.stream()
|
|
.map(tag -> tag.getTagName())
|
|
.collect(Collectors.joining(", ")), MAX_TAGS_LENGTH);
|
|
}
|
|
}
|