From d71a8d2c8379860120c69fd91885f9e5e1a9dfff Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 11 Dec 2018 15:08:35 +0400 Subject: [PATCH] move classes, add deadline to entities, fix db changelogs --- .../ru/ulstu/deadline/model/Deadline.java | 41 +++++++++++++++++ .../ru/ulstu/deadline/model/DeadlineDto.java | 41 +++++++++++++++++ .../repository/DeadlineRepository.java | 9 ++++ .../deadline/service/DeadlineService.java | 45 +++++++++++++++++++ .../java/ru/ulstu/grant/model/Deadline.java | 21 --------- .../ru/ulstu/grant/model/DeadlineDto.java | 33 -------------- src/main/java/ru/ulstu/grant/model/Grant.java | 34 ++++++++------ .../java/ru/ulstu/grant/model/GrantDto.java | 34 +++++++------- .../java/ru/ulstu/grant/model/Project.java | 22 --------- src/main/java/ru/ulstu/paper/model/Paper.java | 28 +++++++++--- .../java/ru/ulstu/paper/model/PaperDto.java | 15 ++++--- .../service/PaperNotificationService.java | 10 ++--- .../ru/ulstu/paper/service/PaperService.java | 16 ++++--- .../java/ru/ulstu/project/model/Project.java | 39 ++++++++++++++++ .../{grant => project}/model/ProjectDto.java | 16 +++++-- .../db/changelog-20181208_000000-schema.xml | 44 +++++++++++++----- src/main/resources/db/changelog-master.xml | 1 + .../paperCreateNotification.html | 2 +- .../paperDeadlineNotification.html | 2 +- 19 files changed, 302 insertions(+), 151 deletions(-) create mode 100644 src/main/java/ru/ulstu/deadline/model/Deadline.java create mode 100644 src/main/java/ru/ulstu/deadline/model/DeadlineDto.java create mode 100644 src/main/java/ru/ulstu/deadline/repository/DeadlineRepository.java create mode 100644 src/main/java/ru/ulstu/deadline/service/DeadlineService.java delete mode 100644 src/main/java/ru/ulstu/grant/model/Deadline.java delete mode 100644 src/main/java/ru/ulstu/grant/model/DeadlineDto.java delete mode 100644 src/main/java/ru/ulstu/grant/model/Project.java create mode 100644 src/main/java/ru/ulstu/project/model/Project.java rename src/main/java/ru/ulstu/{grant => project}/model/ProjectDto.java (58%) diff --git a/src/main/java/ru/ulstu/deadline/model/Deadline.java b/src/main/java/ru/ulstu/deadline/model/Deadline.java new file mode 100644 index 0000000..1a73e59 --- /dev/null +++ b/src/main/java/ru/ulstu/deadline/model/Deadline.java @@ -0,0 +1,41 @@ +package ru.ulstu.deadline.model; + +import ru.ulstu.core.model.BaseEntity; + +import javax.persistence.Entity; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import java.util.Date; + +@Entity +public class Deadline extends BaseEntity { + + private String description; + + @Temporal(value = TemporalType.TIMESTAMP) + private Date date; + + public Deadline() { + } + + public Deadline(Date deadlineDate, String description) { + this.date = deadlineDate; + this.description = description; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } +} diff --git a/src/main/java/ru/ulstu/deadline/model/DeadlineDto.java b/src/main/java/ru/ulstu/deadline/model/DeadlineDto.java new file mode 100644 index 0000000..fbfb598 --- /dev/null +++ b/src/main/java/ru/ulstu/deadline/model/DeadlineDto.java @@ -0,0 +1,41 @@ +package ru.ulstu.deadline.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.Date; + +public class DeadlineDto { + private final Integer id; + + private final String description; + + private final Date date; + + @JsonCreator + public DeadlineDto(@JsonProperty("id") Integer id, + @JsonProperty("description") String description, + @JsonProperty("date") Date date) { + this.id = id; + this.description = description; + this.date = date; + } + + public DeadlineDto(Deadline deadline) { + this.id = deadline.getId(); + this.description = deadline.getDescription(); + this.date = deadline.getDate(); + } + + public Integer getId() { + return id; + } + + public String getDescription() { + return description; + } + + public Date getDate() { + return date; + } +} diff --git a/src/main/java/ru/ulstu/deadline/repository/DeadlineRepository.java b/src/main/java/ru/ulstu/deadline/repository/DeadlineRepository.java new file mode 100644 index 0000000..f26c572 --- /dev/null +++ b/src/main/java/ru/ulstu/deadline/repository/DeadlineRepository.java @@ -0,0 +1,9 @@ +package ru.ulstu.deadline.repository; + + +import org.springframework.data.jpa.repository.JpaRepository; +import ru.ulstu.deadline.model.Deadline; + +public interface DeadlineRepository extends JpaRepository { + +} diff --git a/src/main/java/ru/ulstu/deadline/service/DeadlineService.java b/src/main/java/ru/ulstu/deadline/service/DeadlineService.java new file mode 100644 index 0000000..c371d87 --- /dev/null +++ b/src/main/java/ru/ulstu/deadline/service/DeadlineService.java @@ -0,0 +1,45 @@ +package ru.ulstu.deadline.service; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.deadline.model.Deadline; +import ru.ulstu.deadline.model.DeadlineDto; +import ru.ulstu.deadline.repository.DeadlineRepository; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class DeadlineService { + private final DeadlineRepository deadlineRepository; + + public DeadlineService(DeadlineRepository deadlineRepository) { + this.deadlineRepository = deadlineRepository; + } + + public List saveOrCreate(List deadlines) { + return deadlines.stream().map(deadlineDto -> { + return deadlineDto.getId() != null ? update(deadlineDto) : create(deadlineDto); + }).collect(Collectors.toList()); + } + + @Transactional + public Deadline update(DeadlineDto deadlineDto) { + Deadline deadline = deadlineRepository.findOne(deadlineDto.getId()); + deadlineRepository.save(copyFromDto(deadline, deadlineDto)); + return deadline; + } + + @Transactional + public Deadline create(DeadlineDto deadlineDto) { + Deadline newDeadline = copyFromDto(new Deadline(), deadlineDto); + newDeadline = deadlineRepository.save(newDeadline); + return newDeadline; + } + + private Deadline copyFromDto(Deadline deadline, DeadlineDto deadlineDto) { + deadline.setDate(deadlineDto.getDate()); + deadline.setDescription(deadlineDto.getDescription()); + return deadline; + } +} diff --git a/src/main/java/ru/ulstu/grant/model/Deadline.java b/src/main/java/ru/ulstu/grant/model/Deadline.java deleted file mode 100644 index 07ee7c5..0000000 --- a/src/main/java/ru/ulstu/grant/model/Deadline.java +++ /dev/null @@ -1,21 +0,0 @@ -package ru.ulstu.grant.model; - -import org.hibernate.validator.constraints.NotBlank; -import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.file.model.FileData; - -import javax.persistence.*; -import javax.validation.constraints.NotNull; -import java.util.Date; - -@Entity -public class Deadline extends BaseEntity { - - @ManyToOne - @JoinColumn(name = "grant_id") - private Integer grantId; - - public Integer getGrantId() { return grantId;} - public void setGrantId(Integer grantId) { this.grantId = grantId; } - -} diff --git a/src/main/java/ru/ulstu/grant/model/DeadlineDto.java b/src/main/java/ru/ulstu/grant/model/DeadlineDto.java deleted file mode 100644 index f2ad56c..0000000 --- a/src/main/java/ru/ulstu/grant/model/DeadlineDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package ru.ulstu.grant.model; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.hibernate.validator.constraints.NotEmpty; - -import javax.validation.constraints.NotNull; -import java.util.Date; - -public class DeadlineDto { - private final Integer id; - - @NotNull - private final Integer grantId; - - @JsonCreator - public DeadlineDto(@JsonProperty("id") Integer id, - @JsonProperty("grantId") Integer grantId){ - this.id = id; - this.grantId = grantId; - } - - public DeadlineDto(Deadline deadline) { - this.id = deadline.getId(); - this.grantId = deadline.getGrantId(); - } - - public Integer getId() { - return id; - } - - public Integer getGrantId() { return grantId; } -} diff --git a/src/main/java/ru/ulstu/grant/model/Grant.java b/src/main/java/ru/ulstu/grant/model/Grant.java index 4d4361e..092317b 100644 --- a/src/main/java/ru/ulstu/grant/model/Grant.java +++ b/src/main/java/ru/ulstu/grant/model/Grant.java @@ -3,13 +3,17 @@ package ru.ulstu.grant.model; import org.hibernate.validator.constraints.NotBlank; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.core.model.UserContainer; +import ru.ulstu.deadline.model.Deadline; import ru.ulstu.file.model.FileData; +import ru.ulstu.project.model.Project; import ru.ulstu.user.model.User; import javax.persistence.*; import javax.validation.constraints.NotNull; +import java.util.ArrayList; import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Set; @Entity @@ -39,21 +43,22 @@ public class Grant extends BaseEntity { @Enumerated(value = EnumType.STRING) private GrantStatus status = GrantStatus.APPLICATION; - @Column(name = "deadline_date") - @NotNull - private Date deadlineDate; + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "grant_id") + private List deadlines = new ArrayList<>(); //Описание гранта @NotNull private String comment; //Заявка на грант - @NotNull + @ManyToOne + @JoinColumn(name = "file_id") private FileData application; - @OneToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "project_id") - private Integer projectId; + private Project project; public GrantStatus getStatus() { return status; @@ -63,12 +68,12 @@ public class Grant extends BaseEntity { this.status = status; } - public Date getDeadlineDate() { - return deadlineDate; + public List getDeadlines() { + return deadlines; } - public void setDeadlineDate(Date deadlineDate) { - this.deadlineDate = deadlineDate; + public void setDeadlines(List deadlines) { + this.deadlines = deadlines; } public String getComment() { @@ -91,8 +96,11 @@ public class Grant extends BaseEntity { public void setTitle(String title) { this.title = title; } - public Integer getProjectId() { return projectId;} - - public void setProjectId(Integer project_id) { this.projectId = projectId; } + public Project getProject() { + return project; + } + public void setProject(Project project) { + this.project = project; + } } diff --git a/src/main/java/ru/ulstu/grant/model/GrantDto.java b/src/main/java/ru/ulstu/grant/model/GrantDto.java index 25a7875..922df89 100644 --- a/src/main/java/ru/ulstu/grant/model/GrantDto.java +++ b/src/main/java/ru/ulstu/grant/model/GrantDto.java @@ -3,13 +3,10 @@ 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.file.model.FileData; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.deadline.model.DeadlineDto; +import ru.ulstu.project.model.ProjectDto; -import javax.validation.constraints.NotNull; -import java.util.Date; -import java.util.Set; -import java.util.stream.Collectors; +import java.util.List; import static ru.ulstu.core.util.StreamApiUtils.convert; @@ -18,35 +15,34 @@ public class GrantDto { @NotEmpty private final String title; private final Grant.GrantStatus status; - @NotNull - private final Date deadlineDate; + private final List deadlines; private final String comment; private final String applicationFileName; - private final Integer projectId; + private final ProjectDto project; @JsonCreator public GrantDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @JsonProperty("status") Grant.GrantStatus status, - @JsonProperty("deadlineDate") Date deadlineDate, + @JsonProperty("deadlines") List deadlines, @JsonProperty("comment") String comment, - @JsonProperty("projectId") Integer projectId){ + @JsonProperty("project") ProjectDto project) { this.id = id; this.title = title; this.status = status; - this.deadlineDate = deadlineDate; + this.deadlines = deadlines; this.comment = comment; this.applicationFileName = null; - this.projectId = projectId; + this.project = project; } public GrantDto(Grant grant) { this.id = grant.getId(); this.title = grant.getTitle(); this.status = grant.getStatus(); - this.deadlineDate = grant.getDeadlineDate(); + this.deadlines = convert(grant.getDeadlines(), DeadlineDto::new); this.comment = grant.getComment(); - this.projectId = grant.getProjectId(); + this.project = grant.getProject() == null ? null : new ProjectDto(grant.getProject()); this.applicationFileName = grant.getApplication() == null ? null : grant.getApplication().getName(); } @@ -62,16 +58,16 @@ public class GrantDto { return status; } - public Date getDeadlineDate() { - return deadlineDate; + public List getDeadlines() { + return deadlines; } public String getComment() { return comment; } - public Integer getProjectId() { - return projectId; + public ProjectDto getProject() { + return project; } public String getApplicationFileName() { diff --git a/src/main/java/ru/ulstu/grant/model/Project.java b/src/main/java/ru/ulstu/grant/model/Project.java deleted file mode 100644 index 6c31839..0000000 --- a/src/main/java/ru/ulstu/grant/model/Project.java +++ /dev/null @@ -1,22 +0,0 @@ -package ru.ulstu.grant.model; - -import org.hibernate.validator.constraints.NotBlank; -import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.file.model.FileData; - -import javax.persistence.*; -import javax.validation.constraints.NotNull; -import java.util.Date; - -@Entity -public class Project extends BaseEntity { - - @NotBlank - private String title; - - public String getTitle() { - return title; - } - - public void setTitle(String title) { this.title = title; } -} diff --git a/src/main/java/ru/ulstu/paper/model/Paper.java b/src/main/java/ru/ulstu/paper/model/Paper.java index b7511d6..06b4c7e 100644 --- a/src/main/java/ru/ulstu/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/paper/model/Paper.java @@ -3,9 +3,11 @@ package ru.ulstu.paper.model; import org.hibernate.validator.constraints.NotBlank; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.core.model.UserContainer; +import ru.ulstu.deadline.model.Deadline; import ru.ulstu.file.model.FileData; import ru.ulstu.user.model.User; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; @@ -14,10 +16,14 @@ import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; @Entity @@ -52,9 +58,9 @@ public class Paper extends BaseEntity implements UserContainer { @Column(name = "update_date") private Date updateDate = new Date(); - @Column(name = "deadline_date") - @NotNull - private Date deadlineDate; + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "paper_id") + private List deadlines = new ArrayList<>(); private String comment; @@ -91,12 +97,12 @@ public class Paper extends BaseEntity implements UserContainer { this.updateDate = updateDate; } - public Date getDeadlineDate() { - return deadlineDate; + public List getDeadlines() { + return deadlines; } - public void setDeadlineDate(Date deadlineDate) { - this.deadlineDate = deadlineDate; + public void setDeadlines(List deadlines) { + this.deadlines = deadlines; } public String getComment() { @@ -143,4 +149,12 @@ public class Paper extends BaseEntity implements UserContainer { public Set getUsers() { return getAuthors(); } + + public Optional getNextDeadline() { + return deadlines + .stream() + .sorted(Comparator.comparing(Deadline::getDate)) + .filter(d -> d.getDate().after(new Date())) + .findFirst(); + } } diff --git a/src/main/java/ru/ulstu/paper/model/PaperDto.java b/src/main/java/ru/ulstu/paper/model/PaperDto.java index d9a1229..208fe4d 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperDto.java @@ -3,10 +3,12 @@ package ru.ulstu.paper.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.user.model.UserDto; import javax.validation.constraints.NotNull; import java.util.Date; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -19,8 +21,7 @@ public class PaperDto { private final Paper.PaperStatus status; private final Date createDate; private final Date updateDate; - @NotNull - private final Date deadlineDate; + private final List deadlines; private final String comment; private final Boolean locked; private final String tmpFileName; @@ -35,7 +36,7 @@ public class PaperDto { @JsonProperty("status") Paper.PaperStatus status, @JsonProperty("createDate") Date createDate, @JsonProperty("updateDate") Date updateDate, - @JsonProperty("deadlineDate") Date deadlineDate, + @JsonProperty("deadlines") List deadlines, @JsonProperty("comment") String comment, @JsonProperty("locked") Boolean locked, @JsonProperty("tmpFileName") String tmpFileName, @@ -45,7 +46,7 @@ public class PaperDto { this.status = status; this.createDate = createDate; this.updateDate = updateDate; - this.deadlineDate = deadlineDate; + this.deadlines = deadlines; this.comment = comment; this.locked = locked; this.tmpFileName = tmpFileName; @@ -61,7 +62,7 @@ public class PaperDto { this.status = paper.getStatus(); this.createDate = paper.getCreateDate(); this.updateDate = paper.getUpdateDate(); - this.deadlineDate = paper.getDeadlineDate(); + this.deadlines = convert(paper.getDeadlines(), DeadlineDto::new); this.comment = paper.getComment(); this.locked = paper.getLocked(); this.tmpFileName = null; @@ -91,8 +92,8 @@ public class PaperDto { return updateDate; } - public Date getDeadlineDate() { - return deadlineDate; + public List getDeadlines() { + return deadlines; } public String getComment() { diff --git a/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java b/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java index 99e0c86..697958b 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java @@ -29,16 +29,16 @@ public class PaperNotificationService { } private boolean needToSendDeadlineNotification(Paper paper, Date compareDate, boolean isDeadlineBeforeWeek) { - return (paper.getDeadlineDate() != null) - && (compareDate.after(paper.getDeadlineDate()) && isDeadlineBeforeWeek - || compareDate.before(paper.getDeadlineDate()) && !isDeadlineBeforeWeek) - && paper.getDeadlineDate().after(new Date()); + return (paper.getNextDeadline().isPresent()) + && (compareDate.after(paper.getNextDeadline().get().getDate()) && isDeadlineBeforeWeek + || compareDate.before(paper.getNextDeadline().get().getDate()) && !isDeadlineBeforeWeek) + && paper.getNextDeadline().get().getDate().after(new Date()); } private void sendMessageDeadline(Paper paper) { paper.getAuthors().forEach(user -> { mailService.sendEmail(user.getEmail(), "Приближается срок сдачи статьи", - "Срок сдачи статьи " + paper.getTitle() + " " + paper.getDeadlineDate().toString()); + "Срок сдачи статьи " + paper.getTitle() + " " + paper.getNextDeadline().get().getDate().toString()); }); } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 0e1abbc..6455115 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -2,6 +2,8 @@ package ru.ulstu.paper.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.deadline.model.Deadline; +import ru.ulstu.deadline.service.DeadlineService; import ru.ulstu.file.service.FileService; import ru.ulstu.paper.model.Paper; import ru.ulstu.paper.model.PaperDto; @@ -27,17 +29,19 @@ public class PaperService { private final PaperNotificationService paperNotificationService; private final PaperRepository paperRepository; private final UserService userService; + private final DeadlineService deadlineService; private final FileService fileService; - public PaperService(PaperRepository paperRepository, FileService fileService, PaperNotificationService paperNotificationService, - UserService userService) { + UserService userService, + DeadlineService deadlineService) { this.paperRepository = paperRepository; this.fileService = fileService; this.paperNotificationService = paperNotificationService; this.userService = userService; + this.deadlineService = deadlineService; } public List findAll() { @@ -71,7 +75,7 @@ public class PaperService { paper.setStatus(paperDto.getStatus() == null ? DRAFT : paperDto.getStatus()); paper.setTitle(paperDto.getTitle()); paper.setUpdateDate(new Date()); - paper.setDeadlineDate(paperDto.getDeadlineDate()); + paper.setDeadlines(deadlineService.saveOrCreate(paperDto.getDeadlines())); if (paperDto.getTmpFileName() != null) { paper.setFileData(fileService.createFileFromTmp(paperDto.getTmpFileName())); } @@ -115,7 +119,7 @@ public class PaperService { Paper paper = new Paper(); paper.setTitle(title); paper.getAuthors().add(user); - paper.setDeadlineDate(deadlineDate); + paper.getDeadlines().add(new Deadline(deadlineDate, "первый дедлайн")); paper.setCreateDate(new Date()); paper.setUpdateDate(new Date()); paper.setStatus(DRAFT); @@ -133,11 +137,11 @@ public class PaperService { public void closeFailedPapers() { List papers = paperRepository.findAll() .stream() - .filter(paper -> paper.getDeadlineDate() != null + .filter(paper -> paper.getNextDeadline().isPresent() && (paper.getStatus() == ON_PREPARATION || paper.getStatus() == DRAFT || paper.getStatus() == ATTENTION) - && paper.getDeadlineDate().before(new Date())) + && paper.getNextDeadline().get().getDate().before(new Date())) .collect(Collectors.toList()); papers.forEach(paper -> { Paper.PaperStatus oldStatus = paper.getStatus(); diff --git a/src/main/java/ru/ulstu/project/model/Project.java b/src/main/java/ru/ulstu/project/model/Project.java new file mode 100644 index 0000000..06722a1 --- /dev/null +++ b/src/main/java/ru/ulstu/project/model/Project.java @@ -0,0 +1,39 @@ +package ru.ulstu.project.model; + +import org.hibernate.validator.constraints.NotBlank; +import ru.ulstu.core.model.BaseEntity; +import ru.ulstu.deadline.model.Deadline; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; +import java.util.ArrayList; +import java.util.List; + +@Entity +public class Project extends BaseEntity { + + @NotBlank + private String title; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "project_id") + private List deadlines = new ArrayList<>(); + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getDeadlines() { + return deadlines; + } + + public void setDeadlines(List deadlines) { + this.deadlines = deadlines; + } +} diff --git a/src/main/java/ru/ulstu/grant/model/ProjectDto.java b/src/main/java/ru/ulstu/project/model/ProjectDto.java similarity index 58% rename from src/main/java/ru/ulstu/grant/model/ProjectDto.java rename to src/main/java/ru/ulstu/project/model/ProjectDto.java index 2a22d8a..69e9b1b 100644 --- a/src/main/java/ru/ulstu/grant/model/ProjectDto.java +++ b/src/main/java/ru/ulstu/project/model/ProjectDto.java @@ -1,27 +1,35 @@ -package ru.ulstu.grant.model; +package ru.ulstu.project.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 javax.validation.constraints.NotNull; -import java.util.Date; +import java.util.List; + +import static ru.ulstu.core.util.StreamApiUtils.convert; public class ProjectDto { private final Integer id; + @NotEmpty private final String title; + private final List deadlines; + @JsonCreator public ProjectDto(@JsonProperty("id") Integer id, - @JsonProperty("title") String title){ + @JsonProperty("title") String title, + @JsonProperty("deadlines") List deadlines) { this.id = id; this.title = title; + this.deadlines = deadlines; } public ProjectDto(Project project) { this.id = project.getId(); this.title = project.getTitle(); + this.deadlines = convert(project.getDeadlines(), DeadlineDto::new); } public Integer getId() { diff --git a/src/main/resources/db/changelog-20181208_000000-schema.xml b/src/main/resources/db/changelog-20181208_000000-schema.xml index e88b73e..1943b26 100644 --- a/src/main/resources/db/changelog-20181208_000000-schema.xml +++ b/src/main/resources/db/changelog-20181208_000000-schema.xml @@ -3,6 +3,18 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"> + + + + + + + + + + + + @@ -12,34 +24,42 @@ + + + - - - - - - - - - - + + + + + + + + + diff --git a/src/main/resources/db/changelog-master.xml b/src/main/resources/db/changelog-master.xml index d0199a1..6c7147b 100644 --- a/src/main/resources/db/changelog-master.xml +++ b/src/main/resources/db/changelog-master.xml @@ -16,4 +16,5 @@ + \ No newline at end of file diff --git a/src/main/resources/mail_templates/paperCreateNotification.html b/src/main/resources/mail_templates/paperCreateNotification.html index afbbe20..2758143 100644 --- a/src/main/resources/mail_templates/paperCreateNotification.html +++ b/src/main/resources/mail_templates/paperCreateNotification.html @@ -13,7 +13,7 @@ Вам нужно поработать над статьей "Title".

- Срок исполнения: . + Срок исполнения: .

Regards, diff --git a/src/main/resources/mail_templates/paperDeadlineNotification.html b/src/main/resources/mail_templates/paperDeadlineNotification.html index ee63f3b..a239421 100644 --- a/src/main/resources/mail_templates/paperDeadlineNotification.html +++ b/src/main/resources/mail_templates/paperDeadlineNotification.html @@ -13,7 +13,7 @@ Приближается срок сдачи статьи "Title".

- Срок исполнения: . + Срок исполнения: .

Regards,