From a9fb97bd2e642415564d52b93db853032f6df40c Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sun, 30 Jun 2019 00:21:59 +0400 Subject: [PATCH] fix saving paper --- .../ru/ulstu/paper/service/PaperService.java | 33 ++++++++++++------- src/main/resources/static/js/app-axios.js | 16 ++++++++- src/main/resources/static/papers/paper.vue | 15 +++++++-- 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index a88360d..efd1559 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -27,6 +27,7 @@ import ru.ulstu.user.service.UserService; import java.io.IOException; import java.text.MessageFormat; import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; @@ -131,9 +132,11 @@ public class PaperService { paper.setUpdateDate(new Date()); paper.setDeadlines(deadlineService.saveOrCreate(paperDto.getDeadlines())); paper.setReferences(saveOrCreateReferences(paperDto.getReferences())); - paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream() - .filter(f -> !f.isDeleted()) - .collect(toList()))); + if (paperDto.getFiles() != null) { + paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream() + .filter(f -> !f.isDeleted()) + .collect(toList()))); + } paper.getAuthors().clear(); if (paperDto.getAuthorIds() != null && !paperDto.getAuthorIds().isEmpty()) { paperDto.getAuthorIds().forEach(authorIds -> paper.getAuthors().add(userService.findById(authorIds))); @@ -142,7 +145,9 @@ public class PaperService { } private List saveOrCreateReferences(List references) { - return references + return references == null + ? Collections.emptyList() + : references .stream() .filter(reference -> !reference.getDeleted()) .map(reference -> reference.getId() != null ? updateReference(reference) : createReference(reference)) @@ -182,16 +187,20 @@ public class PaperService { Paper.PaperStatus oldStatus = paper.getStatus(); Set oldAuthors = new HashSet<>(paper.getAuthors()); - for (FileDataDto file : paperDto.getFiles().stream() - .filter(f -> f.isDeleted() && f.getId() != null) - .collect(toList())) { - fileService.delete(file.getId()); + if (paperDto.getFiles() != null) { + for (FileDataDto file : paperDto.getFiles().stream() + .filter(f -> f.isDeleted() && f.getId() != null) + .collect(toList())) { + fileService.delete(file.getId()); + } } paperRepository.save(copyFromDto(paper, paperDto)); - for (ReferenceDto referenceDto : paperDto.getReferences().stream() - .filter(f -> f.getDeleted() && f.getId() != null) - .collect(toList())) { - referenceRepository.deleteById(referenceDto.getId()); + if (paperDto.getReferences() != null) { + for (ReferenceDto referenceDto : paperDto.getReferences().stream() + .filter(f -> f.getDeleted() && f.getId() != null) + .collect(toList())) { + referenceRepository.deleteById(referenceDto.getId()); + } } eventService.updatePaperDeadlines(paper); diff --git a/src/main/resources/static/js/app-axios.js b/src/main/resources/static/js/app-axios.js index 11c8c10..88abb81 100644 --- a/src/main/resources/static/js/app-axios.js +++ b/src/main/resources/static/js/app-axios.js @@ -56,8 +56,22 @@ }); } + function axiosPut(url, data, resolv, reject) { + axios.put(url, JSON.stringify(data), axiosConfig) + .then(function (result) { + errorHandler(result, resolv, reject); + }) + .catch(function (error) { + setTimeout(function () { + throw Error(error); + } + ); + }); + } + return { get: axiosGet, - post: axiosPost + post: axiosPost, + put: axiosPut }; }); \ No newline at end of file diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index ffb8b2c..3c09d19 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -9,8 +9,7 @@
-
+