package ru.ulstu.conference.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.hibernate.validator.constraints.NotEmpty; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.name.NameContainer; import ru.ulstu.paper.model.Paper; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.Date; import java.util.List; import static ru.ulstu.core.util.StreamApiUtils.convert; public class ConferenceDto extends NameContainer { private final static String BEGIN_DATE = "Начало: "; private final static String END_DATE = "Конец: "; private Integer id; @NotEmpty @Size(min = 2, max = 400) private String title; @Size(max = 500) private String description = ""; @Size(max = 255) private String url = ""; private int ping = 0; @Temporal(TemporalType.TIMESTAMP) @DateTimeFormat(pattern = "yyyy-MM-dd") private Date beginDate = new Date(); @Temporal(TemporalType.TIMESTAMP) @DateTimeFormat(pattern = "yyyy-MM-dd") private Date endDate = new Date(); private List deadlines = new ArrayList<>(); private List removedDeadlineIds = new ArrayList<>(); private List userIds = new ArrayList<>(); private List paperIds = new ArrayList<>(); private List papers = new ArrayList<>(); private List notSelectedPapers = new ArrayList<>(); private List users = new ArrayList<>(); private boolean disabledTakePart = false; public ConferenceDto() { } @JsonCreator public ConferenceDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @JsonProperty("description") String description, @JsonProperty("url") String url, @JsonProperty("ping") Integer ping, @JsonProperty("beginDate") Date beginDate, @JsonProperty("endDate") Date endDate, @JsonProperty("deadlines") List deadlines, @JsonProperty("userIds") List userIds, @JsonProperty("paperIds") List paperIds, @JsonProperty("users") List users, @JsonProperty("papers") List papers, @JsonProperty("notSelectedPapers") List notSelectedPapers, @JsonProperty("notSelectedPapers") Boolean disabledTakePart) { this.id = id; this.title = title; this.description = description; this.url = url; this.ping = ping; this.beginDate = beginDate; this.endDate = endDate; this.deadlines = deadlines; this.userIds = userIds; this.paperIds = paperIds; this.users = users; this.papers = papers; this.notSelectedPapers = notSelectedPapers; this.disabledTakePart = disabledTakePart; } public ConferenceDto(Conference conference) { this.id = conference.getId(); this.title = conference.getTitle(); this.description = conference.getDescription(); this.url = conference.getUrl(); this.ping = conference.getPing(); this.beginDate = conference.getBeginDate(); this.endDate = conference.getEndDate(); this.deadlines = conference.getDeadlines(); this.userIds = convert(conference.getUsers(), user -> user.getId()); this.paperIds = convert(conference.getPapers(), paper -> paper.getId()); this.users = conference.getUsers(); this.papers = conference.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 String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public int getPing() { return ping; } public void setPing(int ping) { this.ping = ping; } public Date getBeginDate() { return beginDate; } public void setBeginDate(Date beginDate) { this.beginDate = beginDate; } public Date getEndDate() { return endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } public List getDeadlines() { return deadlines; } public void setDeadlines(List deadlines) { this.deadlines = deadlines; } public List getUserIds() { return userIds; } public void setUserIds(List userIds) { this.userIds = userIds; } public List getPaperIds() { return paperIds; } public void setPaperIds(List paperIds) { this.paperIds = paperIds; } public List getPapers() { return papers; } public void setPapers(List papers) { this.papers = papers; } public List getUsers() { return users; } public void setUsers(List users) { this.users = users; } public boolean isDisabledTakePart() { return disabledTakePart; } public void setDisabledTakePart(boolean disabledTakePart) { this.disabledTakePart = disabledTakePart; } public List getRemovedDeadlineIds() { return removedDeadlineIds; } public void setRemovedDeadlineIds(List removedDeadlineIds) { this.removedDeadlineIds = removedDeadlineIds; } public List getNotSelectedPapers() { return notSelectedPapers; } public void setNotSelectedPapers(List notSelectedPapers) { this.notSelectedPapers = notSelectedPapers; } public String getDatesString() { return BEGIN_DATE + beginDate.toString().split(" ")[0] + " " + END_DATE + endDate.toString().split(" ")[0]; } }