diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java index 1011c51..0f76881 100644 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java @@ -13,10 +13,13 @@ import ru.ulstu.conference.model.ConferenceDto; import ru.ulstu.conference.model.ConferenceFilterDto; import ru.ulstu.conference.service.ConferenceService; import ru.ulstu.deadline.model.Deadline; +import ru.ulstu.paper.model.Paper; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; import static org.springframework.util.StringUtils.isEmpty; @@ -44,9 +47,13 @@ public class ConferenceController { @GetMapping("/conference") public void getConference(ModelMap modelMap, @RequestParam(value = "id") Integer id) { if (id != null && id > 0) { - modelMap.put("conferenceDto", conferenceService.findOneDto(id)); + ConferenceDto conferenceDto = conferenceService.findOneDto(id); + conferenceDto.setNotSelectedPapers(getNotSelectPapers(conferenceDto.getPaperIds())); + modelMap.put("conferenceDto", conferenceDto); } else { - modelMap.put("conferenceDto", new ConferenceDto()); + ConferenceDto conferenceDto = new ConferenceDto(); + conferenceDto.setNotSelectedPapers(getNotSelectPapers(new ArrayList())); + modelMap.put("conferenceDto", conferenceDto); } } @@ -87,6 +94,10 @@ public class ConferenceController { return CONFERENCE_PAGE; } + public List getNotSelectPapers(List paperIds) { + return conferenceService.getConferencePapers(paperIds); + } + private void filterEmptyDeadlines(ConferenceDto conferenceDto) { conferenceDto.setDeadlines(conferenceDto.getDeadlines().stream() .filter(dto -> dto.getDate() != null || !isEmpty(dto.getDescription())) diff --git a/src/main/java/ru/ulstu/conference/model/Conference.java b/src/main/java/ru/ulstu/conference/model/Conference.java index faed15c..b6affcd 100644 --- a/src/main/java/ru/ulstu/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/conference/model/Conference.java @@ -60,7 +60,7 @@ public class Conference extends BaseEntity { @JoinTable(name = "paper_conference", joinColumns = {@JoinColumn(name = "conference_id")}, inverseJoinColumns = {@JoinColumn(name = "paper_id")}) - private Set papers = new HashSet<>(); + private List papers = new ArrayList<>(); @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "users_conference", @@ -124,11 +124,11 @@ public class Conference extends BaseEntity { this.deadlines = deadlines; } - public Set getPapers() { + public List getPapers() { return papers; } - public void setPapers(Set papers) { + public void setPapers(List papers) { this.papers = papers; } diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java index e5efcde..ec9ec92 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import org.hibernate.validator.constraints.NotEmpty; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.paper.model.PaperDto; +import ru.ulstu.paper.model.Paper; import ru.ulstu.user.model.UserDto; import javax.persistence.Temporal; @@ -39,8 +39,11 @@ public class ConferenceDto { private List deadlines = new ArrayList<>(); private List removedDeadlineIds = new ArrayList<>(); private Set userIds = new HashSet<>(); - private Set paperIds = new HashSet<>(); - private Set papers = new HashSet<>(); + private List paperIds = new ArrayList<>(); + private List papers = new ArrayList<>(); + + + private List notSelectedPapers = new ArrayList<>(); private Set users = new HashSet<>(); private Integer filterUserId; @@ -57,9 +60,10 @@ public class ConferenceDto { @JsonProperty("endDate") Date endDate, @JsonProperty("deadlines") List deadlines, @JsonProperty("userIds") Set userIds, - @JsonProperty("paperIds") Set paperIds, + @JsonProperty("paperIds") List paperIds, @JsonProperty("users") Set users, - @JsonProperty("papers") Set papers) { + @JsonProperty("papers") List papers, + @JsonProperty("notSelectedPapers") List notSelectedPapers) { this.id = id; this.title = title; this.description = description; @@ -72,6 +76,7 @@ public class ConferenceDto { this.paperIds = paperIds; this.users = users; this.papers = papers; + this.notSelectedPapers = notSelectedPapers; } public ConferenceDto(Conference conference) { @@ -86,7 +91,7 @@ public class ConferenceDto { this.userIds = convert(conference.getUsers(), user -> user.getId()); this.paperIds = convert(conference.getPapers(), paper -> paper.getId()); this.users = convert(conference.getUsers(), UserDto::new); - this.papers = convert(conference.getPapers(), PaperDto::new); + this.papers = conference.getPapers(); } @@ -162,19 +167,19 @@ public class ConferenceDto { this.userIds = userIds; } - public Set getPaperIds() { + public List getPaperIds() { return paperIds; } - public void setPaperIds(Set paperIds) { + public void setPaperIds(List paperIds) { this.paperIds = paperIds; } - public Set getPapers() { + public List getPapers() { return papers; } - public void setPapers(Set papers) { + public void setPapers(List papers) { this.papers = papers; } @@ -202,4 +207,12 @@ public class ConferenceDto { this.removedDeadlineIds = removedDeadlineIds; } + public List getNotSelectedPapers() { + return notSelectedPapers; + } + + public void setNotSelectedPapers(List notSelectedPapers) { + this.notSelectedPapers = notSelectedPapers; + } + } diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index 84ae923..e95addb 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -7,6 +7,8 @@ import ru.ulstu.conference.model.Conference; import ru.ulstu.conference.model.ConferenceDto; import ru.ulstu.conference.repository.ConferenceRepository; import ru.ulstu.deadline.service.DeadlineService; +import ru.ulstu.paper.model.Paper; +import ru.ulstu.paper.service.PaperService; import java.io.IOException; import java.util.List; @@ -20,11 +22,14 @@ public class ConferenceService { private final ConferenceRepository conferenceRepository; private final DeadlineService deadlineService; + private final PaperService paperService; public ConferenceService(ConferenceRepository conferenceRepository, - DeadlineService deadlineService) { + DeadlineService deadlineService, + PaperService paperService) { this.conferenceRepository = conferenceRepository; this.deadlineService = deadlineService; + this.paperService = paperService; } public List findAll() { @@ -78,6 +83,10 @@ public class ConferenceService { conferenceDto.getDeadlines().remove((int) deadlineIndex); } + public List getConferencePapers(List paperIds) { + return paperService.findAllNotSelect(paperIds); + } + private Conference copyFromDto(Conference conference, ConferenceDto conferenceDto) throws IOException { conference.setTitle(conferenceDto.getTitle()); conference.setDescription(conferenceDto.getDescription()); @@ -86,6 +95,10 @@ public class ConferenceService { conference.setBeginDate(conferenceDto.getBeginDate()); conference.setEndDate(conferenceDto.getEndDate()); conference.setDeadlines(deadlineService.saveOrCreate(conferenceDto.getDeadlines())); + if (conferenceDto.getPaperIds() != null && !conferenceDto.getPaperIds().isEmpty()) { + conferenceDto.getPaperIds().forEach(paperId -> + conference.getPapers().add(paperService.findEntityById(paperId))); + } return conference; } diff --git a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java index 3951f53..343e9e2 100644 --- a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java @@ -12,4 +12,6 @@ public interface PaperRepository extends JpaRepository { @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); + + List findByIdNotIn(List paperIds); } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index a93c9c6..6c27c6e 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -215,6 +215,19 @@ public class PaperService { return new PaperDto(paperRepository.findOne(paperId)); } + public Paper findEntityById(Integer paperId) { + return paperRepository.findOne(paperId); + } + + public List findAllNotSelect(List paperIds) { + if (!paperIds.isEmpty()) { + return sortPapers(paperRepository.findByIdNotIn(paperIds)); + } else { + return sortPapers(paperRepository.findAll()); + } + + } + public List getPaperAuthors() { return userService.findAll(); } diff --git a/src/main/resources/public/css/conference.css b/src/main/resources/public/css/conference.css index bc63bfe..fa3666e 100644 --- a/src/main/resources/public/css/conference.css +++ b/src/main/resources/public/css/conference.css @@ -7,6 +7,10 @@ body { border-radius: .25rem; } +.filter-option-inner-inner { + color: white; +} + @@ -49,6 +53,8 @@ body { .paper { margin: 0; + min-height: 40px; + height: 40px; } .paper-name { @@ -104,13 +110,14 @@ body { float: right; } -@media (max-width: 1199px) { +@media (max-width: 1199px) and (min-width: 768px){ .paper-control { display: block!important; } } @media (max-width: 991px) { + .dates-panel { display: block!important; } diff --git a/src/main/resources/templates/conferences/conference.html b/src/main/resources/templates/conferences/conference.html index c93fc39..1ed2859 100644 --- a/src/main/resources/templates/conferences/conference.html +++ b/src/main/resources/templates/conferences/conference.html @@ -62,7 +62,6 @@ - @@ -136,23 +135,30 @@
- + +