diff --git a/src/main/java/ru/ulstu/paper/controller/PaperController.java b/src/main/java/ru/ulstu/paper/controller/PaperController.java index dbf17d2..b6fd63e 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperController.java @@ -12,9 +12,8 @@ import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.conference.service.ConferenceService; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.paper.model.AutoCompleteData; -import ru.ulstu.paper.model.Paper; import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.paper.model.PaperListDto; +import ru.ulstu.paper.model.PaperFilterListDto; import ru.ulstu.paper.model.ReferenceDto; import ru.ulstu.paper.service.LatexService; import ru.ulstu.paper.service.PaperService; @@ -48,21 +47,21 @@ public class PaperController { @GetMapping("/papers") public void getPapers(ModelMap modelMap) { - modelMap.put("filteredPapers", new PaperListDto(paperService.findAllDto(), null, null)); + modelMap.put("filteredPapers", new PaperFilterListDto(paperService.findAllDto(), null, null)); } @PostMapping("/papers") - public void listPapers(@Valid PaperListDto paperListDto, ModelMap modelMap) { - if (paperListDto.getPaperDeleteId() != null) { - if (conferenceService.isAttachedToConference(paperListDto.getPaperDeleteId())) { + public void listPapers(@Valid PaperFilterListDto paperFilterListDto, ModelMap modelMap) { + if (paperFilterListDto.getPaperDeleteId() != null) { + if (conferenceService.isAttachedToConference(paperFilterListDto.getPaperDeleteId())) { modelMap.put("flashMessage", "Статью нельзя удалить, она прикреплена к конференции"); } else { - paperService.delete(paperListDto.getPaperDeleteId()); + paperService.delete(paperFilterListDto.getPaperDeleteId()); } } - modelMap.put("filteredPapers", new PaperListDto(paperService.filter(paperListDto), - paperListDto.getFilterAuthorId(), - paperListDto.getYear())); + modelMap.put("filteredPapers", new PaperFilterListDto(paperService.filter(paperFilterListDto), + paperFilterListDto.getFilterAuthorId(), + paperFilterListDto.getYear())); } @GetMapping("/dashboard") diff --git a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java index c1c6faa..bc4ecec 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.response.Response; +import ru.ulstu.paper.model.PaperDashboardDto; import ru.ulstu.paper.model.PaperDto; import ru.ulstu.paper.model.PaperListDto; import ru.ulstu.paper.model.PaperStatusDto; @@ -37,12 +38,12 @@ public class PaperRestController { } @GetMapping - public Response> getPapers() { + public Response> getPapers() { return new Response<>(paperService.findAllDto()); } @GetMapping("/dashboard") - public Response> getDashboard() { + public Response> getDashboard() { return new Response<>(paperService.findAllActiveDto()); } @@ -67,11 +68,6 @@ public class PaperRestController { return new Response<>(Boolean.TRUE); } - @PostMapping("/filter") - public Response> filter(@RequestBody @Valid PaperListDto paperListDto) throws IOException { - return new Response<>(paperService.filter(paperListDto)); - } - @GetMapping("formatted-list") public Response> getFormattedPaperList() { return new Response<>(paperService.getFormattedPaperList()); diff --git a/src/main/java/ru/ulstu/paper/model/Paper.java b/src/main/java/ru/ulstu/paper/model/Paper.java index f7b851c..6fd3db6 100644 --- a/src/main/java/ru/ulstu/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/paper/model/Paper.java @@ -93,7 +93,7 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @Temporal(TemporalType.TIMESTAMP) private Date updateDate = new Date(); - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "paper_id", unique = true) @Fetch(FetchMode.SUBSELECT) @OrderBy("date") @@ -109,12 +109,12 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @JoinColumn(name = "paper_id") private List events = new ArrayList<>(); - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "paper_id", unique = true) @Fetch(FetchMode.SUBSELECT) private List files = new ArrayList<>(); - @ManyToMany(fetch = FetchType.EAGER) + @ManyToMany(fetch = FetchType.LAZY) private Set authors = new HashSet<>(); @Column(name = "latex_text") @@ -126,7 +126,7 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @ManyToMany(mappedBy = "papers") private List grants; - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "paper_id", unique = true) @Fetch(FetchMode.SUBSELECT) private List references = new ArrayList<>(); diff --git a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java new file mode 100644 index 0000000..be50c3c --- /dev/null +++ b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java @@ -0,0 +1,64 @@ +package ru.ulstu.paper.model; + +import ru.ulstu.user.model.UserDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class PaperDashboardDto { + + private Integer id; + private String title; + private Paper.PaperStatus status; + 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.url = paper.getUrl(); + } + + 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 Paper.PaperStatus getStatus() { + return status; + } + + public void setStatus(Paper.PaperStatus status) { + this.status = status; + } + + public Set getAuthors() { + return authors; + } + + public void setAuthors(Set authors) { + this.authors = authors; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java b/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java new file mode 100644 index 0000000..85aec09 --- /dev/null +++ b/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java @@ -0,0 +1,51 @@ +package ru.ulstu.paper.model; + +import java.util.List; + +public class PaperFilterListDto { + private List papers; + private Integer filterAuthorId; + private Integer paperDeleteId; + private Integer year; + + public PaperFilterListDto() { + } + + public PaperFilterListDto(List paperDtos, Integer filterAuthorId, Integer year) { + this.papers = paperDtos; + this.filterAuthorId = filterAuthorId; + this.year = year; + } + + public List getPapers() { + return papers; + } + + public void setPapers(List papers) { + this.papers = papers; + } + + public Integer getFilterAuthorId() { + return filterAuthorId; + } + + public void setFilterAuthorId(Integer filterAuthorId) { + this.filterAuthorId = filterAuthorId; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Integer getPaperDeleteId() { + return paperDeleteId; + } + + public void setPaperDeleteId(Integer paperDeleteId) { + this.paperDeleteId = paperDeleteId; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperListDto.java b/src/main/java/ru/ulstu/paper/model/PaperListDto.java index 871047a..176f357 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperListDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperListDto.java @@ -1,51 +1,54 @@ package ru.ulstu.paper.model; -import java.util.List; +import ru.ulstu.user.model.UserDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; public class PaperListDto { - private List papers; - private Integer filterAuthorId; - private Integer paperDeleteId; - private Integer year; - public PaperListDto() { - } + private Integer id; + private String title; + private Paper.PaperStatus status; + private Set authors; - public PaperListDto(List paperDtos, Integer filterAuthorId, Integer year) { - this.papers = paperDtos; - this.filterAuthorId = filterAuthorId; - this.year = year; + public PaperListDto(Paper paper) { + this.id = paper.getId(); + this.title = paper.getTitle(); + this.status = paper.getStatus(); + this.authors = convert(paper.getAuthors(), UserDto::new); } - public List getPapers() { - return papers; + public Integer getId() { + return id; } - public void setPapers(List papers) { - this.papers = papers; + public void setId(Integer id) { + this.id = id; } - public Integer getFilterAuthorId() { - return filterAuthorId; + public String getTitle() { + return title; } - public void setFilterAuthorId(Integer filterAuthorId) { - this.filterAuthorId = filterAuthorId; + public void setTitle(String title) { + this.title = title; } - public Integer getYear() { - return year; + public Paper.PaperStatus getStatus() { + return status; } - public void setYear(Integer year) { - this.year = year; + public void setStatus(Paper.PaperStatus status) { + this.status = status; } - public Integer getPaperDeleteId() { - return paperDeleteId; + public Set getAuthors() { + return authors; } - public void setPaperDeleteId(Integer paperDeleteId) { - this.paperDeleteId = paperDeleteId; + public void setAuthors(Set authors) { + this.authors = authors; } } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 9264205..a88360d 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -9,7 +9,9 @@ import ru.ulstu.file.model.FileDataDto; import ru.ulstu.file.service.FileService; import ru.ulstu.paper.model.AutoCompleteData; import ru.ulstu.paper.model.Paper; +import ru.ulstu.paper.model.PaperDashboardDto; import ru.ulstu.paper.model.PaperDto; +import ru.ulstu.paper.model.PaperFilterListDto; import ru.ulstu.paper.model.PaperListDto; import ru.ulstu.paper.model.PaperStatusDto; import ru.ulstu.paper.model.PaperTypeDto; @@ -81,10 +83,8 @@ public class PaperService { return sortPapers(paperRepository.findAll()); } - public List findAllDto() { - List papers = convert(findAll(), PaperDto::new); - papers.forEach(paperDto -> paperDto.setTitle(StringUtils.abbreviate(paperDto.getTitle(), MAX_DISPLAY_SIZE))); - return papers; + public List findAllDto() { + return convert(findAll(), PaperListDto::new); } private List findAllActive() { @@ -94,8 +94,8 @@ public class PaperService { .collect(toList()); } - public List findAllActiveDto() { - return convert(findAllActive(), PaperDto::new); + public List findAllActiveDto() { + return convert(findAllActive(), PaperDashboardDto::new); } public PaperDto findOneDto(Integer id) { @@ -248,10 +248,10 @@ public class PaperService { return paper; } - public List filter(PaperListDto filterDto) { + public List filter(PaperFilterListDto filterDto) { return convert(sortPapers(paperRepository.filter( filterDto.getFilterAuthorId() == null ? null : userService.findById(filterDto.getFilterAuthorId()), - filterDto.getYear())), PaperDto::new); + filterDto.getYear())), PaperListDto::new); } private List sortPapers(List papers) { diff --git a/src/main/resources/static/papers/paper-dashboard.vue b/src/main/resources/static/papers/paper-dashboard.vue index c9f2f8b..5a51c69 100644 --- a/src/main/resources/static/papers/paper-dashboard.vue +++ b/src/main/resources/static/papers/paper-dashboard.vue @@ -2,7 +2,7 @@
-
+
diff --git a/src/main/resources/static/papers/paper-item.vue b/src/main/resources/static/papers/paper-item.vue index 9431ef7..1821db5 100644 --- a/src/main/resources/static/papers/paper-item.vue +++ b/src/main/resources/static/papers/paper-item.vue @@ -6,7 +6,7 @@ :key="paper.id"> - {{ paper.title }} + {{ getTitle}}
@@ -35,6 +35,12 @@ authorsResult.push(author.lastName + " " + author.firstName); }); return authorsResult.join(', ') + }, + + getTitle: function () { + return this.paper.title.length > 60 + ? this.paper.title.substring(0, 60) + "..." + : this.paper.title; } } } diff --git a/src/main/resources/static/papers/paper-navigation.vue b/src/main/resources/static/papers/paper-navigation.vue index 2c4f847..1d28eb2 100644 --- a/src/main/resources/static/papers/paper-navigation.vue +++ b/src/main/resources/static/papers/paper-navigation.vue @@ -1,22 +1,28 @@