From 27674031283161c05cecea5f64f636cb86d21816 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Mon, 22 Apr 2019 15:11:52 +0400 Subject: [PATCH] #64 added saving in db --- .../controller/ConferenceController.java | 18 ++++++++-------- .../ru/ulstu/conference/model/Conference.java | 2 +- .../conference/service/ConferenceService.java | 21 ++++++++++++------- .../ru/ulstu/paper/service/PaperService.java | 8 +++++++ .../templates/conferences/conference.html | 4 +++- 5 files changed, 34 insertions(+), 19 deletions(-) diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java index cf5017d..3c5ee10 100644 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java @@ -86,7 +86,7 @@ public class ConferenceController { } @PostMapping(value = "/conference", params = "addDeadline") - public String addDeadline(@Valid ConferenceDto conferenceDto, Errors errors) { + public String addDeadline(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { filterEmptyDeadlines(conferenceDto); if (errors.hasErrors()) { return CONFERENCE_PAGE; @@ -95,23 +95,23 @@ public class ConferenceController { return CONFERENCE_PAGE; } - @PostMapping(value = "/conference", params = "addPaper") - public String addPaper(@Valid ConferenceDto conferenceDto, Errors errors) { + @PostMapping(value = "/conference", params = "removeDeadline") + public String removeDeadline(@Valid ConferenceDto conferenceDto, Errors errors, + @RequestParam(value = "removeDeadline") Integer deadlineIndex) throws IOException { if (errors.hasErrors()) { return CONFERENCE_PAGE; } - conferenceService.addPaper(conferenceDto); - + conferenceService.removeDeadline(conferenceDto, deadlineIndex); return CONFERENCE_PAGE; } - @PostMapping(value = "/conference", params = "removeDeadline") - public String removeDeadline(@Valid ConferenceDto conferenceDto, Errors errors, - @RequestParam(value = "removeDeadline") Integer deadlineIndex) throws IOException { + @PostMapping(value = "/conference", params = "addPaper") + public String addPaper(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { if (errors.hasErrors()) { return CONFERENCE_PAGE; } - conferenceService.removeDeadline(conferenceDto, deadlineIndex); + conferenceService.addPaper(conferenceDto); + return CONFERENCE_PAGE; } diff --git a/src/main/java/ru/ulstu/conference/model/Conference.java b/src/main/java/ru/ulstu/conference/model/Conference.java index e252e4d..8068e04 100644 --- a/src/main/java/ru/ulstu/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/conference/model/Conference.java @@ -53,7 +53,7 @@ public class Conference extends BaseEntity { @OrderBy("date") private List deadlines = new ArrayList<>(); - @ManyToMany(fetch = FetchType.EAGER) + @ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER) @JoinTable(name = "paper_conference", joinColumns = {@JoinColumn(name = "conference_id")}, inverseJoinColumns = {@JoinColumn(name = "paper_id")}) diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index f918812..b96c9cd 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -111,9 +111,19 @@ public class ConferenceService { conferenceDto.getDeadlines().remove((int) deadlineIndex); } + public void addPaper(ConferenceDto conferenceDto) { + Paper paper = new Paper(); + paper.setTitle(userService.getCurrentUser().getLastName() + "_" + conferenceDto.getTitle()); + paper.setStatus(Paper.PaperStatus.DRAFT); + + conferenceDto.getPapers().add(paper); + } + public void removePaper(ConferenceDto conferenceDto, Integer paperIndex) throws IOException { Paper removedPaper = conferenceDto.getPapers().remove((int) paperIndex); - conferenceDto.getNotSelectedPapers().add(removedPaper); + if (removedPaper.getId() != null) { + conferenceDto.getNotSelectedPapers().add(removedPaper); + } } public void takePart(ConferenceDto conferenceDto) throws IOException { @@ -144,7 +154,8 @@ public class ConferenceService { conference.setPing(0); conference.setBeginDate(conferenceDto.getBeginDate()); conference.setEndDate(conferenceDto.getEndDate()); - conference.setPapers(conferenceDto.getPapers()); + conference.getPapers().clear(); + conferenceDto.getPapers().forEach(paper -> conference.getPapers().add(paper.getId() != null ? paperService.findPaperById(paper.getId()) : paperService.create(paper))); conference.setDeadlines(deadlineService.saveOrCreate(conferenceDto.getDeadlines())); conference.setUsers(conferenceUserService.saveOrCreate(conferenceDto.getUsers())); if (conferenceDto.getPaperIds() != null && !conferenceDto.getPaperIds().isEmpty()) { @@ -173,10 +184,4 @@ public class ConferenceService { public List findAllActive() { return conferenceRepository.findAllActive(new Date()); } - - public void addPaper(ConferenceDto conferenceDto) { - Paper paper = new Paper(); - paper.setTitle(userService.getCurrentUser().getLastName() + "_" + conferenceDto.getTitle()); - conferenceDto.getPapers().add(paper); - } } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 85db4ed..6d0456c 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -93,6 +93,14 @@ public class PaperService { return newPaper.getId(); } + @Transactional + public Paper create(Paper paper) { + Paper newPaper = paperRepository.save(paper); + paperNotificationService.sendCreateNotification(newPaper); + eventService.createFromPaper(newPaper); + return newPaper; + } + private Paper copyFromDto(Paper paper, PaperDto paperDto) throws IOException { paper.setComment(paperDto.getComment()); paper.setUrl(paperDto.getUrl()); diff --git a/src/main/resources/templates/conferences/conference.html b/src/main/resources/templates/conferences/conference.html index 8425fac..370d749 100644 --- a/src/main/resources/templates/conferences/conference.html +++ b/src/main/resources/templates/conferences/conference.html @@ -131,9 +131,11 @@
- +
+ +