From 7c0a8be51bb94be11a6467cfb36526fa755b9b9c Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 1 Jul 2019 23:34:29 +0400 Subject: [PATCH] fix saving paper --- .../boundary/model/ScienceGroupMemberDto.java | 69 +++++++++++++++++++ .../ulstu/paper/model/PaperDashboardDto.java | 10 +-- .../java/ru/ulstu/paper/model/PaperDto.java | 12 ++-- .../ru/ulstu/paper/model/PaperListDto.java | 14 ++-- .../paper/repository/PaperRepository.java | 4 +- .../ru/ulstu/paper/service/PaperService.java | 13 ++-- .../static/papers/paper-dashboard-item.vue | 2 +- src/main/resources/static/papers/paper.vue | 24 +++++-- 8 files changed, 113 insertions(+), 35 deletions(-) create mode 100644 src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java diff --git a/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java b/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java new file mode 100644 index 0000000..25ccdae --- /dev/null +++ b/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java @@ -0,0 +1,69 @@ +package ru.ulstu.boundary.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import ru.ulstu.user.model.User; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +public class ScienceGroupMemberDto { + + private Integer id; + + @NotBlank + @Size(min = 2, max = 50) + private String firstName; + + @NotBlank + @Size(min = 2, max = 50) + private String lastName; + + @JsonCreator + public ScienceGroupMemberDto(@JsonProperty("id") Integer id, + @JsonProperty("firstName") String firstName, + @JsonProperty("lastName") String lastName) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + } + + public ScienceGroupMemberDto(User user) { + this.id = user.getId(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @Override + public String toString() { + return "ScienceGroupMember{" + + "id=" + id + + ", firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + '}'; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java index be50c3c..643112c 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java @@ -1,6 +1,6 @@ package ru.ulstu.paper.model; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.boundary.model.ScienceGroupMemberDto; import java.util.Set; @@ -11,14 +11,14 @@ public class PaperDashboardDto { private Integer id; private String title; private Paper.PaperStatus status; - private Set authors; + private Set authors; private String url; public PaperDashboardDto(Paper paper) { this.id = paper.getId(); this.title = paper.getTitle(); this.status = paper.getStatus(); - this.authors = convert(paper.getAuthors(), UserDto::new); + this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); this.url = paper.getUrl(); } @@ -46,11 +46,11 @@ public class PaperDashboardDto { this.status = status; } - public Set getAuthors() { + public Set getAuthors() { return authors; } - public void setAuthors(Set authors) { + public void setAuthors(Set authors) { this.authors = authors; } diff --git a/src/main/java/ru/ulstu/paper/model/PaperDto.java b/src/main/java/ru/ulstu/paper/model/PaperDto.java index 9cac02e..24d8127 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperDto.java @@ -3,9 +3,9 @@ package ru.ulstu.paper.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import ru.ulstu.boundary.model.ActivityDto; +import ru.ulstu.boundary.model.ScienceGroupMemberDto; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.user.model.UserDto; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; @@ -31,7 +31,7 @@ public class PaperDto implements ActivityDto { private String url; private Boolean locked; private List files = new ArrayList<>(); - private Set authors; + private Set authors; public String getLatexText() { return latexText; @@ -51,7 +51,7 @@ public class PaperDto implements ActivityDto { @JsonProperty("url") String url, @JsonProperty("locked") Boolean locked, @JsonProperty("files") List files, - @JsonProperty("authors") Set authors) { + @JsonProperty("authors") Set authors) { this.id = id; this.title = title; this.status = status; @@ -78,7 +78,7 @@ public class PaperDto implements ActivityDto { this.url = paper.getUrl(); this.locked = paper.getLocked(); this.files = convert(paper.getFiles(), FileDataDto::new); - this.authors = convert(paper.getAuthors(), UserDto::new); + this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); } public Integer getId() { @@ -161,11 +161,11 @@ public class PaperDto implements ActivityDto { this.files = files; } - public Set getAuthors() { + public Set getAuthors() { return authors; } - public void setAuthors(Set authors) { + public void setAuthors(Set authors) { this.authors = authors; } diff --git a/src/main/java/ru/ulstu/paper/model/PaperListDto.java b/src/main/java/ru/ulstu/paper/model/PaperListDto.java index a1c47f4..8bbf95b 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperListDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperListDto.java @@ -1,7 +1,7 @@ package ru.ulstu.paper.model; import ru.ulstu.boundary.model.ActivityListDto; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.boundary.model.ScienceGroupMemberDto; import java.util.Set; @@ -12,17 +12,13 @@ public class PaperListDto implements ActivityListDto { private Integer id; private String title; private Paper.PaperStatus status; - private Set authors; + private Set authors; public PaperListDto(Paper paper) { this.id = paper.getId(); this.title = paper.getTitle(); this.status = paper.getStatus(); - this.authors = convert(paper.getAuthors(), UserDto::new); - } - - public static PaperListDto createFromEntity(Paper entity) { - return new PaperListDto(entity); + this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); } public Integer getId() { @@ -49,11 +45,11 @@ public class PaperListDto implements ActivityListDto { this.status = status; } - public Set getAuthors() { + public Set getAuthors() { return authors; } - public void setAuthors(Set authors) { + public void setAuthors(Set authors) { this.authors = authors; } } diff --git a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java index dbcbc07..fff4399 100644 --- a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java @@ -2,15 +2,15 @@ package ru.ulstu.paper.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import ru.ulstu.core.repository.JpaDetachableRepository; import ru.ulstu.paper.model.Paper; import ru.ulstu.user.model.User; import java.util.List; -public interface PaperRepository extends JpaRepository { +public interface PaperRepository extends JpaDetachableRepository { @Query("SELECT p FROM Paper p WHERE (:author IS NULL OR :author MEMBER OF p.authors) AND (YEAR(p.createDate) = :year OR :year IS NULL)") List filter(@Param("author") User author, @Param("year") Integer year); diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 4ed2962..fa8c978 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -44,7 +44,6 @@ import static ru.ulstu.paper.model.Paper.PaperStatus.ON_PREPARATION; import static ru.ulstu.paper.model.Paper.PaperType.OTHER; @Service -@Transactional public class PaperService extends AbstractActivityService { private final PaperNotificationService paperNotificationService; private final PaperRepository paperRepository; @@ -100,7 +99,6 @@ public class PaperService extends AbstractActivityService new EntityNotFoundException("Paper with id=" + paperDto.getId() + " not found")); + Paper paper = findPaperById(paperDto.getId()); oldStatus = paper.getStatus(); oldAuthors = new HashSet<>(paper.getAuthors()); @@ -151,6 +148,7 @@ public class PaperService extends AbstractActivityService paper.getAuthors().add(userService.findById(authors.getId()))); } @@ -224,7 +222,7 @@ public class PaperService extends AbstractActivityService new EntityNotFoundException("Paper with id=" + paperId + " not found")); } public List findAllNotSelect(List paperIds) { diff --git a/src/main/resources/static/papers/paper-dashboard-item.vue b/src/main/resources/static/papers/paper-dashboard-item.vue index f09ab42..6818c3b 100644 --- a/src/main/resources/static/papers/paper-dashboard-item.vue +++ b/src/main/resources/static/papers/paper-dashboard-item.vue @@ -15,7 +15,7 @@

- + {{ paper.title }}

{{ getAuthors }}

diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index 3ee951a..2e30178 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -32,14 +32,14 @@
-
- @@ -49,13 +49,24 @@
+ v-model="paper.comment">
- +
+
+ +
+
+

+ +

+
+
@@ -168,6 +179,9 @@ } this.$store.dispatch("addSuccessMessage", "Статья успешно сохранена!"); event.preventDefault(); + }, + hasUrl: function () { + return this.paper.url !== null && this.paper.url !== ''; } }, mounted: function () {