2019-05-12 01:00:26 +04:00

156 lines
4.5 KiB
Java

package ru.ulstu.timeline.model;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotBlank;
import ru.ulstu.conference.model.ConferenceDto;
import ru.ulstu.grant.model.GrantDto;
import ru.ulstu.paper.model.PaperDto;
import ru.ulstu.students.model.TaskDto;
import ru.ulstu.user.model.UserDto;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
import static ru.ulstu.core.util.StreamApiUtils.convert;
public class EventDto {
private final Integer id;
@NotBlank
private final String title;
private final PeriodEvent period;
private final Event.EventStatus status;
@NotNull
private final Date executeDate;
private final Date createDate;
private final Date updateDate;
private final String description;
private final List<UserDto> recipients;
private PaperDto paperDto;
private ConferenceDto conferenceDto;
private GrantDto grantDto;
private TaskDto taskDto;
@JsonCreator
public EventDto(@JsonProperty("id") Integer id,
@JsonProperty("title") String title,
@JsonProperty("status") Event.EventStatus status,
@JsonProperty("period") PeriodEvent period,
@JsonProperty("executeDate") Date executeDate,
@JsonProperty("createDate") Date createDate,
@JsonProperty("updateDate") Date updateDate,
@JsonProperty("description") String description,
@JsonProperty("paperDto") PaperDto paperDto,
@JsonProperty("recipients") List<UserDto> recipients,
@JsonProperty("conferenceDto") ConferenceDto conferenceDto,
@JsonProperty("grantDto") GrantDto grantDto,
@JsonProperty("taskDto") TaskDto taskDto) {
this.id = id;
this.title = title;
this.period = period;
this.status = status;
this.executeDate = executeDate;
this.createDate = createDate;
this.updateDate = updateDate;
this.description = description;
this.recipients = recipients;
this.paperDto = paperDto;
this.conferenceDto = conferenceDto;
this.grantDto = grantDto;
this.taskDto = taskDto;
}
public EventDto(Event event) {
this.id = event.getId();
this.title = event.getTitle();
this.status = event.getStatus();
this.period = event.getPeriod();
this.executeDate = event.getExecuteDate();
this.createDate = event.getCreateDate();
this.updateDate = event.getUpdateDate();
this.description = event.getDescription();
this.recipients = convert(event.getRecipients(), UserDto::new);
if (paperDto != null) {
this.paperDto = new PaperDto(event.getPaper());
}
if (conferenceDto != null) {
this.conferenceDto = new ConferenceDto(event.getConference());
}
if (grantDto != null) {
this.grantDto = new GrantDto(event.getGrant());
}
if (taskDto != null) {
this.taskDto = new TaskDto(event.getTask());
}
}
public Integer getId() {
return id;
}
public String getTitle() {
return title;
}
public PeriodEvent getPeriod() {
return period;
}
public Event.EventStatus getStatus() {
return status;
}
public Date getCreateDate() {
return createDate;
}
public Date getUpdateDate() {
return updateDate;
}
public String getDescription() {
return description;
}
public List<UserDto> getRecipients() {
return recipients;
}
public Date getExecuteDate() {
return executeDate;
}
public PaperDto getPaperDto() {
return paperDto;
}
public void setPaperDto(PaperDto paperDto) {
this.paperDto = paperDto;
}
public ConferenceDto getConferenceDto() {
return conferenceDto;
}
public void setConferenceDto(ConferenceDto conferenceDto) {
this.conferenceDto = conferenceDto;
}
public GrantDto getGrantDto() {
return grantDto;
}
public void setGrantDto(GrantDto grantDto) {
this.grantDto = grantDto;
}
public TaskDto getTaskDto() {
return taskDto;
}
public void setTaskDto(TaskDto taskDto) {
this.taskDto = taskDto;
}
}