From 14c28050c7bb6d357b3e2cd2b4c0ef58e6ac8832 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Wed, 17 Apr 2019 11:19:23 +0400 Subject: [PATCH 01/24] #65 changed interface --- .../templates/conferences/conference.html | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/main/resources/templates/conferences/conference.html b/src/main/resources/templates/conferences/conference.html index 27c602a..6d22273 100644 --- a/src/main/resources/templates/conferences/conference.html +++ b/src/main/resources/templates/conferences/conference.html @@ -97,30 +97,15 @@
-
-
- Пользователь 1 -
-
+
+ + +
-
From 8564f2cf3462ee4d1c45450cc0fc9fdc402994af Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Wed, 17 Apr 2019 13:00:48 +0400 Subject: [PATCH 02/24] #69 managed to create a connection through a new entity --- .../ru/ulstu/conference/model/Conference.java | 8 +++--- .../ulstu/conference/model/ConferenceDto.java | 14 ++++------ .../ru/ulstu/user/model/UserConference.java | 28 +++++++++++++++++++ .../db/changelog-20190417_000000-schema.xml | 14 ++++++++++ src/main/resources/db/changelog-master.xml | 1 + 5 files changed, 53 insertions(+), 12 deletions(-) create mode 100644 src/main/java/ru/ulstu/user/model/UserConference.java create mode 100644 src/main/resources/db/changelog-20190417_000000-schema.xml diff --git a/src/main/java/ru/ulstu/conference/model/Conference.java b/src/main/java/ru/ulstu/conference/model/Conference.java index b6affcd..c9cf20e 100644 --- a/src/main/java/ru/ulstu/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/conference/model/Conference.java @@ -7,7 +7,7 @@ import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.paper.model.Paper; -import ru.ulstu.user.model.User; +import ru.ulstu.user.model.UserConference; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -66,7 +66,7 @@ public class Conference extends BaseEntity { @JoinTable(name = "users_conference", joinColumns = {@JoinColumn(name = "conference_id")}, inverseJoinColumns = {@JoinColumn(name = "users_id")}) - private Set users = new HashSet<>(); + private Set users = new HashSet<>(); public String getTitle() { return title; @@ -132,11 +132,11 @@ public class Conference extends BaseEntity { this.papers = papers; } - public Set getUsers() { + public Set getUsers() { return users; } - public void setUsers(Set users) { + public void setUsers(Set users) { this.users = users; } } diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java index ec9ec92..279b13f 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java @@ -6,7 +6,7 @@ import org.hibernate.validator.constraints.NotEmpty; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.paper.model.Paper; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.user.model.UserConference; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -41,10 +41,8 @@ public class ConferenceDto { private Set userIds = new HashSet<>(); private List paperIds = new ArrayList<>(); private List papers = new ArrayList<>(); - - private List notSelectedPapers = new ArrayList<>(); - private Set users = new HashSet<>(); + private Set users = new HashSet<>(); private Integer filterUserId; public ConferenceDto() { @@ -61,7 +59,7 @@ public class ConferenceDto { @JsonProperty("deadlines") List deadlines, @JsonProperty("userIds") Set userIds, @JsonProperty("paperIds") List paperIds, - @JsonProperty("users") Set users, + @JsonProperty("users") Set users, @JsonProperty("papers") List papers, @JsonProperty("notSelectedPapers") List notSelectedPapers) { this.id = id; @@ -90,7 +88,7 @@ public class ConferenceDto { this.deadlines = conference.getDeadlines(); this.userIds = convert(conference.getUsers(), user -> user.getId()); this.paperIds = convert(conference.getPapers(), paper -> paper.getId()); - this.users = convert(conference.getUsers(), UserDto::new); + this.users = conference.getUsers(); this.papers = conference.getPapers(); } @@ -183,11 +181,11 @@ public class ConferenceDto { this.papers = papers; } - public Set getUsers() { + public Set getUsers() { return users; } - public void setUsers(Set users) { + public void setUsers(Set users) { this.users = users; } diff --git a/src/main/java/ru/ulstu/user/model/UserConference.java b/src/main/java/ru/ulstu/user/model/UserConference.java new file mode 100644 index 0000000..5ae1b12 --- /dev/null +++ b/src/main/java/ru/ulstu/user/model/UserConference.java @@ -0,0 +1,28 @@ +package ru.ulstu.user.model; + +import ru.ulstu.core.model.BaseEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +@Entity +@Table(name = "users_conference") +public class UserConference extends BaseEntity { + + @NotNull + @Column(name = "participation", nullable = false) + private String participation; + + @NotNull + @Column(name = "deposit", nullable = false) + private String deposit; + + @ManyToOne(optional = false) + @JoinColumn(name = "users_id") + private User user; + +} diff --git a/src/main/resources/db/changelog-20190417_000000-schema.xml b/src/main/resources/db/changelog-20190417_000000-schema.xml new file mode 100644 index 0000000..f0a0d64 --- /dev/null +++ b/src/main/resources/db/changelog-20190417_000000-schema.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db/changelog-master.xml b/src/main/resources/db/changelog-master.xml index 67d3c40..58bbdeb 100644 --- a/src/main/resources/db/changelog-master.xml +++ b/src/main/resources/db/changelog-master.xml @@ -24,5 +24,6 @@ + \ No newline at end of file From 7e4d8d491845e70885e184e02ea6acf514bb2670 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Wed, 17 Apr 2019 14:51:19 +0400 Subject: [PATCH 03/24] #69 added method take part in conference --- .../controller/ConferenceController.java | 9 ++++ .../ru/ulstu/conference/model/Conference.java | 9 ++-- .../ulstu/conference/model/ConferenceDto.java | 18 ++++--- .../repository/ConferenceUserRepository.java | 7 +++ .../conference/service/ConferenceService.java | 17 ++++++- .../service/ConferenceUserService.java | 48 +++++++++++++++++++ .../ru/ulstu/user/model/UserConference.java | 47 ++++++++++++++++++ .../templates/conferences/conference.html | 25 ++++++---- 8 files changed, 154 insertions(+), 26 deletions(-) create mode 100644 src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java create mode 100644 src/main/java/ru/ulstu/conference/service/ConferenceUserService.java diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java index 823f853..c25009a 100644 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java @@ -104,6 +104,15 @@ public class ConferenceController { return CONFERENCE_PAGE; } + @PostMapping(value = "/conference", params = "takePart") + public String takePart(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { + if (errors.hasErrors()) { + return CONFERENCE_PAGE; + } + conferenceService.takePart(conferenceDto); + return CONFERENCE_PAGE; + } + public List getNotSelectPapers(List paperIds) { return conferenceService.getConferencePapers(paperIds); } diff --git a/src/main/java/ru/ulstu/conference/model/Conference.java b/src/main/java/ru/ulstu/conference/model/Conference.java index c9cf20e..bd1d907 100644 --- a/src/main/java/ru/ulstu/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/conference/model/Conference.java @@ -23,9 +23,7 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; @Entity @Table(name = "conference") @@ -66,7 +64,8 @@ public class Conference extends BaseEntity { @JoinTable(name = "users_conference", joinColumns = {@JoinColumn(name = "conference_id")}, inverseJoinColumns = {@JoinColumn(name = "users_id")}) - private Set users = new HashSet<>(); + @Fetch(FetchMode.SUBSELECT) + private List users = new ArrayList<>(); public String getTitle() { return title; @@ -132,11 +131,11 @@ public class Conference extends BaseEntity { this.papers = papers; } - public Set getUsers() { + public List getUsers() { return users; } - public void setUsers(Set users) { + public void setUsers(List users) { this.users = users; } } diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java index 279b13f..c45cd05 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java @@ -13,9 +13,7 @@ import javax.persistence.TemporalType; import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; import static ru.ulstu.core.util.StreamApiUtils.convert; @@ -38,11 +36,11 @@ public class ConferenceDto { private Date endDate = new Date(); private List deadlines = new ArrayList<>(); private List removedDeadlineIds = new ArrayList<>(); - private Set userIds = new HashSet<>(); + private List userIds = new ArrayList<>(); private List paperIds = new ArrayList<>(); private List papers = new ArrayList<>(); private List notSelectedPapers = new ArrayList<>(); - private Set users = new HashSet<>(); + private List users = new ArrayList<>(); private Integer filterUserId; public ConferenceDto() { @@ -57,9 +55,9 @@ public class ConferenceDto { @JsonProperty("beginDate") Date beginDate, @JsonProperty("endDate") Date endDate, @JsonProperty("deadlines") List deadlines, - @JsonProperty("userIds") Set userIds, + @JsonProperty("userIds") List userIds, @JsonProperty("paperIds") List paperIds, - @JsonProperty("users") Set users, + @JsonProperty("users") List users, @JsonProperty("papers") List papers, @JsonProperty("notSelectedPapers") List notSelectedPapers) { this.id = id; @@ -157,11 +155,11 @@ public class ConferenceDto { this.deadlines = deadlines; } - public Set getUserIds() { + public List getUserIds() { return userIds; } - public void setUserIds(Set userIds) { + public void setUserIds(List userIds) { this.userIds = userIds; } @@ -181,11 +179,11 @@ public class ConferenceDto { this.papers = papers; } - public Set getUsers() { + public List getUsers() { return users; } - public void setUsers(Set users) { + public void setUsers(List users) { this.users = users; } diff --git a/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java b/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java new file mode 100644 index 0000000..0eb546c --- /dev/null +++ b/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java @@ -0,0 +1,7 @@ +package ru.ulstu.conference.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import ru.ulstu.user.model.UserConference; + +public interface ConferenceUserRepository extends JpaRepository { +} diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index 4d267d1..58e8da8 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -9,6 +9,8 @@ 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 ru.ulstu.user.model.UserConference; +import ru.ulstu.user.service.UserService; import java.io.IOException; import java.util.List; @@ -21,17 +23,24 @@ public class ConferenceService { private final static int MAX_DISPLAY_SIZE = 40; private final ConferenceRepository conferenceRepository; + private final ConferenceUserService conferenceUserService; private final DeadlineService deadlineService; private final PaperService paperService; + private final UserService userService; public ConferenceService(ConferenceRepository conferenceRepository, + ConferenceUserService conferenceUserService, DeadlineService deadlineService, - PaperService paperService) { + PaperService paperService, + UserService userService) { this.conferenceRepository = conferenceRepository; + this.conferenceUserService = conferenceUserService; this.deadlineService = deadlineService; this.paperService = paperService; + this.userService = userService; } + public List findAll() { return conferenceRepository.findAll(); } @@ -88,6 +97,10 @@ public class ConferenceService { conferenceDto.getNotSelectedPapers().add(removedPaper); } + public void takePart(ConferenceDto conferenceDto) throws IOException { + conferenceDto.getUsers().add(new UserConference("test", "test", userService.getCurrentUser())); + } + public List getConferencePapers(List paperIds) { return paperService.findAllNotSelect(paperIds); } @@ -101,6 +114,8 @@ public class ConferenceService { conference.setEndDate(conferenceDto.getEndDate()); conference.setPapers(conferenceDto.getPapers()); conference.setDeadlines(deadlineService.saveOrCreate(conferenceDto.getDeadlines())); + conferenceDto.getUsers().forEach(user -> userService.findById(user.getUser().getId())); + conference.setUsers(conferenceUserService.saveOrCreate(conferenceDto.getUsers())); if (conferenceDto.getPaperIds() != null && !conferenceDto.getPaperIds().isEmpty()) { conferenceDto.getPaperIds().forEach(paperId -> conference.getPapers().add(paperService.findEntityById(paperId))); diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java b/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java new file mode 100644 index 0000000..e05491e --- /dev/null +++ b/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java @@ -0,0 +1,48 @@ +package ru.ulstu.conference.service; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.conference.repository.ConferenceUserRepository; +import ru.ulstu.user.model.UserConference; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ConferenceUserService { + + private final ConferenceUserRepository conferenceUserRepository; + + public ConferenceUserService(ConferenceUserRepository conferenceUserRepository) { + this.conferenceUserRepository = conferenceUserRepository; + } + + public List saveOrCreate(List users) { + return users + .stream() + .map(user -> { + return user.getId() != null ? update(user) : create(user); + }).collect(Collectors.toList()); + } + + @Transactional + public UserConference update(UserConference user) { + UserConference updateUser = conferenceUserRepository.findOne(user.getId()); + updateUser.setDeposit(user.getDeposit()); + updateUser.setParticipation(user.getParticipation()); + conferenceUserRepository.save(updateUser); + return updateUser; + } + + @Transactional + public UserConference create(UserConference user) { + UserConference newUser = new UserConference(); + newUser.setDeposit(user.getDeposit()); + newUser.setParticipation(user.getParticipation()); + newUser.setUser(user.getUser()); + newUser = conferenceUserRepository.save(newUser); + return newUser; + } + + +} diff --git a/src/main/java/ru/ulstu/user/model/UserConference.java b/src/main/java/ru/ulstu/user/model/UserConference.java index 5ae1b12..9afef4c 100644 --- a/src/main/java/ru/ulstu/user/model/UserConference.java +++ b/src/main/java/ru/ulstu/user/model/UserConference.java @@ -1,5 +1,7 @@ package ru.ulstu.user.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; import ru.ulstu.core.model.BaseEntity; import javax.persistence.Column; @@ -25,4 +27,49 @@ public class UserConference extends BaseEntity { @JoinColumn(name = "users_id") private User user; + public UserConference() { + } + + public UserConference(String participation, String deposit, User user) { + this.participation = participation; + this.deposit = deposit; + this.user = user; + } + + @JsonCreator + public UserConference(@JsonProperty("id") Integer id, + @JsonProperty("participation") String participation, + @JsonProperty("deposit") String deposit, + @JsonProperty("user") User user) { + this.setId(id); + this.participation = participation; + this.deposit = deposit; + this.user = user; + } + + + public String getParticipation() { + return participation; + } + + public void setParticipation(String participation) { + this.participation = participation; + } + + public String getDeposit() { + return deposit; + } + + public void setDeposit(String deposit) { + this.deposit = deposit; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + } diff --git a/src/main/resources/templates/conferences/conference.html b/src/main/resources/templates/conferences/conference.html index 6d22273..35a6926 100644 --- a/src/main/resources/templates/conferences/conference.html +++ b/src/main/resources/templates/conferences/conference.html @@ -97,23 +97,28 @@
-
- - +
+ + + + - +
- +
From 918079ac890188e3a0f60217bf9053f5bee5b0ae Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Thu, 18 Apr 2019 11:20:44 +0400 Subject: [PATCH 04/24] #69 fixed not working code, now user can take part in conference and choose participation and deposit --- .../controller/ConferenceController.java | 12 ++ .../ru/ulstu/conference/model/Conference.java | 13 +-- .../ulstu/conference/model/ConferenceDto.java | 9 +- .../conference/model/ConferenceUser.java | 110 ++++++++++++++++++ .../repository/ConferenceUserRepository.java | 4 +- .../conference/service/ConferenceService.java | 14 ++- .../service/ConferenceUserService.java | 12 +- .../ru/ulstu/user/model/UserConference.java | 75 ------------ .../templates/conferences/conference.html | 12 +- 9 files changed, 159 insertions(+), 102 deletions(-) create mode 100644 src/main/java/ru/ulstu/conference/model/ConferenceUser.java delete mode 100644 src/main/java/ru/ulstu/user/model/UserConference.java diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java index c25009a..b88a0e6 100644 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java @@ -5,12 +5,14 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.conference.model.ConferenceDto; import ru.ulstu.conference.model.ConferenceFilterDto; +import ru.ulstu.conference.model.ConferenceUser; import ru.ulstu.conference.service.ConferenceService; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.paper.model.Paper; @@ -117,6 +119,16 @@ public class ConferenceController { return conferenceService.getConferencePapers(paperIds); } + @ModelAttribute("allParticipation") + public List getAllParticipation() { + return conferenceService.getAllParticipations(); + } + + @ModelAttribute("allDeposit") + public List getAllDeposit() { + return conferenceService.getAllDeposit(); + } + 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 bd1d907..e252e4d 100644 --- a/src/main/java/ru/ulstu/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/conference/model/Conference.java @@ -7,7 +7,6 @@ import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.paper.model.Paper; -import ru.ulstu.user.model.UserConference; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -60,12 +59,10 @@ public class Conference extends BaseEntity { inverseJoinColumns = {@JoinColumn(name = "paper_id")}) private List papers = new ArrayList<>(); - @ManyToMany(fetch = FetchType.EAGER) - @JoinTable(name = "users_conference", - joinColumns = {@JoinColumn(name = "conference_id")}, - inverseJoinColumns = {@JoinColumn(name = "users_id")}) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "conference_id", unique = true) @Fetch(FetchMode.SUBSELECT) - private List users = new ArrayList<>(); + private List users = new ArrayList<>(); public String getTitle() { return title; @@ -131,11 +128,11 @@ public class Conference extends BaseEntity { this.papers = papers; } - public List getUsers() { + public List getUsers() { return users; } - public void setUsers(List users) { + public void setUsers(List users) { this.users = users; } } diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java index c45cd05..b18e914 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java @@ -6,7 +6,6 @@ import org.hibernate.validator.constraints.NotEmpty; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.paper.model.Paper; -import ru.ulstu.user.model.UserConference; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -40,7 +39,7 @@ public class ConferenceDto { private List paperIds = new ArrayList<>(); private List papers = new ArrayList<>(); private List notSelectedPapers = new ArrayList<>(); - private List users = new ArrayList<>(); + private List users = new ArrayList<>(); private Integer filterUserId; public ConferenceDto() { @@ -57,7 +56,7 @@ public class ConferenceDto { @JsonProperty("deadlines") List deadlines, @JsonProperty("userIds") List userIds, @JsonProperty("paperIds") List paperIds, - @JsonProperty("users") List users, + @JsonProperty("users") List users, @JsonProperty("papers") List papers, @JsonProperty("notSelectedPapers") List notSelectedPapers) { this.id = id; @@ -179,11 +178,11 @@ public class ConferenceDto { this.papers = papers; } - public List getUsers() { + public List getUsers() { return users; } - public void setUsers(List users) { + public void setUsers(List users) { this.users = users; } diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceUser.java b/src/main/java/ru/ulstu/conference/model/ConferenceUser.java new file mode 100644 index 0000000..63eeb6d --- /dev/null +++ b/src/main/java/ru/ulstu/conference/model/ConferenceUser.java @@ -0,0 +1,110 @@ +package ru.ulstu.conference.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import ru.ulstu.core.model.BaseEntity; +import ru.ulstu.user.model.User; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +@Entity +@Table(name = "users_conference") +public class ConferenceUser extends BaseEntity { + + public enum Participation { + INTRAMURAL("Очная"), + EXTRAMURAL("Заочная"); + + private String participationName; + + Participation(String name) { + this.participationName = name; + } + + public String getParticipation() { + return participationName; + } + } + + public enum Deposit { + ARTICLE("Статья"), + REPORT("Доклад"), + PRESENTATION("Презентация"); + + private String depositName; + + Deposit(String name) { + this.depositName = name; + } + + public String getDeposit() { + return depositName; + } + } + + + @NotNull + @Column(name = "participation", nullable = false) + @Enumerated(value = EnumType.STRING) + private Participation participation = Participation.INTRAMURAL; + + @NotNull + @Column(name = "deposit", nullable = false) + @Enumerated(value = EnumType.STRING) + private Deposit deposit = Deposit.ARTICLE; + + @ManyToOne(optional = false) + @JoinColumn(name = "users_id") + private User user; + + public ConferenceUser() { + } + + public ConferenceUser(User user) { + this.user = user; + } + + @JsonCreator + public ConferenceUser(@JsonProperty("id") Integer id, + @JsonProperty("deposit") Participation participation, + @JsonProperty("deposit") Deposit deposit, + @JsonProperty("user") User user) { + this.setId(id); + this.participation = participation; + this.deposit = deposit; + this.user = user; + } + + + public Participation getParticipation() { + return participation; + } + + public void setParticipation(Participation participation) { + this.participation = participation; + } + + public Deposit getDeposit() { + return deposit; + } + + public void setDeposit(Deposit deposit) { + this.deposit = deposit; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + +} diff --git a/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java b/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java index 0eb546c..5e654d5 100644 --- a/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java +++ b/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java @@ -1,7 +1,7 @@ package ru.ulstu.conference.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.user.model.UserConference; +import ru.ulstu.conference.model.ConferenceUser; -public interface ConferenceUserRepository extends JpaRepository { +public interface ConferenceUserRepository extends JpaRepository { } diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index 58e8da8..f9e662e 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -5,14 +5,15 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.conference.model.Conference; import ru.ulstu.conference.model.ConferenceDto; +import ru.ulstu.conference.model.ConferenceUser; 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 ru.ulstu.user.model.UserConference; import ru.ulstu.user.service.UserService; import java.io.IOException; +import java.util.Arrays; import java.util.List; import static org.springframework.util.ObjectUtils.isEmpty; @@ -98,13 +99,21 @@ public class ConferenceService { } public void takePart(ConferenceDto conferenceDto) throws IOException { - conferenceDto.getUsers().add(new UserConference("test", "test", userService.getCurrentUser())); + conferenceDto.getUsers().add(new ConferenceUser(userService.getCurrentUser())); } public List getConferencePapers(List paperIds) { return paperService.findAllNotSelect(paperIds); } + public List getAllParticipations() { + return Arrays.asList(ConferenceUser.Participation.values()); + } + + public List getAllDeposit() { + return Arrays.asList(ConferenceUser.Deposit.values()); + } + private Conference copyFromDto(Conference conference, ConferenceDto conferenceDto) throws IOException { conference.setTitle(conferenceDto.getTitle()); conference.setDescription(conferenceDto.getDescription()); @@ -114,7 +123,6 @@ public class ConferenceService { conference.setEndDate(conferenceDto.getEndDate()); conference.setPapers(conferenceDto.getPapers()); conference.setDeadlines(deadlineService.saveOrCreate(conferenceDto.getDeadlines())); - conferenceDto.getUsers().forEach(user -> userService.findById(user.getUser().getId())); conference.setUsers(conferenceUserService.saveOrCreate(conferenceDto.getUsers())); if (conferenceDto.getPaperIds() != null && !conferenceDto.getPaperIds().isEmpty()) { conferenceDto.getPaperIds().forEach(paperId -> diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java b/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java index e05491e..f771b2a 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java @@ -2,8 +2,8 @@ package ru.ulstu.conference.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.conference.model.ConferenceUser; import ru.ulstu.conference.repository.ConferenceUserRepository; -import ru.ulstu.user.model.UserConference; import java.util.List; import java.util.stream.Collectors; @@ -17,7 +17,7 @@ public class ConferenceUserService { this.conferenceUserRepository = conferenceUserRepository; } - public List saveOrCreate(List users) { + public List saveOrCreate(List users) { return users .stream() .map(user -> { @@ -26,8 +26,8 @@ public class ConferenceUserService { } @Transactional - public UserConference update(UserConference user) { - UserConference updateUser = conferenceUserRepository.findOne(user.getId()); + public ConferenceUser update(ConferenceUser user) { + ConferenceUser updateUser = conferenceUserRepository.findOne(user.getId()); updateUser.setDeposit(user.getDeposit()); updateUser.setParticipation(user.getParticipation()); conferenceUserRepository.save(updateUser); @@ -35,8 +35,8 @@ public class ConferenceUserService { } @Transactional - public UserConference create(UserConference user) { - UserConference newUser = new UserConference(); + public ConferenceUser create(ConferenceUser user) { + ConferenceUser newUser = new ConferenceUser(); newUser.setDeposit(user.getDeposit()); newUser.setParticipation(user.getParticipation()); newUser.setUser(user.getUser()); diff --git a/src/main/java/ru/ulstu/user/model/UserConference.java b/src/main/java/ru/ulstu/user/model/UserConference.java deleted file mode 100644 index 9afef4c..0000000 --- a/src/main/java/ru/ulstu/user/model/UserConference.java +++ /dev/null @@ -1,75 +0,0 @@ -package ru.ulstu.user.model; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import ru.ulstu.core.model.BaseEntity; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; - -@Entity -@Table(name = "users_conference") -public class UserConference extends BaseEntity { - - @NotNull - @Column(name = "participation", nullable = false) - private String participation; - - @NotNull - @Column(name = "deposit", nullable = false) - private String deposit; - - @ManyToOne(optional = false) - @JoinColumn(name = "users_id") - private User user; - - public UserConference() { - } - - public UserConference(String participation, String deposit, User user) { - this.participation = participation; - this.deposit = deposit; - this.user = user; - } - - @JsonCreator - public UserConference(@JsonProperty("id") Integer id, - @JsonProperty("participation") String participation, - @JsonProperty("deposit") String deposit, - @JsonProperty("user") User user) { - this.setId(id); - this.participation = participation; - this.deposit = deposit; - this.user = user; - } - - - public String getParticipation() { - return participation; - } - - public void setParticipation(String participation) { - this.participation = participation; - } - - public String getDeposit() { - return deposit; - } - - public void setDeposit(String deposit) { - this.deposit = deposit; - } - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } - -} diff --git a/src/main/resources/templates/conferences/conference.html b/src/main/resources/templates/conferences/conference.html index 35a6926..a1d7049 100644 --- a/src/main/resources/templates/conferences/conference.html +++ b/src/main/resources/templates/conferences/conference.html @@ -97,20 +97,26 @@
- +
- +
From 8fd352aaa4263f7d4c02ec41badb30b8891632a4 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Thu, 18 Apr 2019 14:33:49 +0400 Subject: [PATCH 05/24] #69 added styles --- src/main/resources/public/css/conference.css | 27 +++++++++++++++++++ .../templates/conferences/conference.html | 9 +++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/main/resources/public/css/conference.css b/src/main/resources/public/css/conference.css index fa3666e..a608bbd 100644 --- a/src/main/resources/public/css/conference.css +++ b/src/main/resources/public/css/conference.css @@ -43,8 +43,35 @@ body { .member { margin: 0; + height: 40px; + max-height: 40px; +} +.member select { + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + border: none; + outline: none; + padding: 0.5rem 1.75em 0.5rem 0.5em; + display: inline-block; + background: transparent url("https://cdn3.iconfinder.com/data/icons/faticons/32/arrow-down-01-16.png") no-repeat right 7px center; + +} + +.member select:nth-child(4) { + border-right: 1px solid #ced4da; } + +.member-name { + padding: .75rem 1.25rem; + cursor: default; + outline: none; + border: none; + border-right: 1px solid #ced4da; +} + + .paper-list { height: 200px; padding: 0px; diff --git a/src/main/resources/templates/conferences/conference.html b/src/main/resources/templates/conferences/conference.html index a1d7049..5c33ba0 100644 --- a/src/main/resources/templates/conferences/conference.html +++ b/src/main/resources/templates/conferences/conference.html @@ -97,14 +97,13 @@
- -
- - - + type="submit" name="takePart" value="Принять участие" + th:disabled="*{disabledTakePart}"/>
From f1f7c1f0f61fa211151d4a2a9b7a947c338a8eba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BD=20=D0=90=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=BD?= Date: Thu, 18 Apr 2019 16:49:10 +0300 Subject: [PATCH 07/24] #97 cancel button edited --- src/main/resources/templates/projects/project.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/resources/templates/projects/project.html b/src/main/resources/templates/projects/project.html index 3d356a7..437927a 100644 --- a/src/main/resources/templates/projects/project.html +++ b/src/main/resources/templates/projects/project.html @@ -88,8 +88,8 @@ class="alert alert-danger">Incorrect title

- +
@@ -107,7 +107,9 @@ type="submit"> Сохранить -
From 6c8554a0b803b6d4845f1964b4594afbdf42685a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=20=D0=9C?= =?UTF-8?q?=D0=B0=D1=80=D0=B8=D1=8F?= Date: Thu, 18 Apr 2019 23:37:08 +0400 Subject: [PATCH 08/24] #106 change boolean to nullable --- src/main/java/ru/ulstu/file/model/FileData.java | 6 +++--- src/main/java/ru/ulstu/file/model/FileDataDto.java | 12 ++++++------ src/main/java/ru/ulstu/file/service/FileService.java | 2 +- .../papers/fragments/paperFilesListFragment.html | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/ru/ulstu/file/model/FileData.java b/src/main/java/ru/ulstu/file/model/FileData.java index 08445a3..3f97130 100644 --- a/src/main/java/ru/ulstu/file/model/FileData.java +++ b/src/main/java/ru/ulstu/file/model/FileData.java @@ -20,7 +20,7 @@ public class FileData extends BaseEntity { private byte[] data; @Column(name = "is_latex_attach") - private boolean isLatexAttach; + private Boolean isLatexAttach; public String getName() { return name; @@ -54,11 +54,11 @@ public class FileData extends BaseEntity { this.data = data; } - public boolean isLatexAttach() { + public Boolean isLatexAttach() { return isLatexAttach; } - public void setLatexAttach(boolean latexAttach) { + public void setLatexAttach(Boolean latexAttach) { isLatexAttach = latexAttach; } } diff --git a/src/main/java/ru/ulstu/file/model/FileDataDto.java b/src/main/java/ru/ulstu/file/model/FileDataDto.java index 65ef275..e83bf12 100644 --- a/src/main/java/ru/ulstu/file/model/FileDataDto.java +++ b/src/main/java/ru/ulstu/file/model/FileDataDto.java @@ -9,7 +9,7 @@ public class FileDataDto { private String fileName; private String tmpFileName; private boolean deleted; - private boolean isLatexAttach; + private Boolean isLatexAttach; public FileDataDto() { } @@ -17,7 +17,7 @@ public class FileDataDto { @JsonCreator public FileDataDto(@JsonProperty("id") Integer id, @JsonProperty("name") String name, - @JsonProperty("isLatexAttach") boolean isLatexAttach, + @JsonProperty("isLatexAttach") Boolean isLatexAttach, @JsonProperty("fileName") String fileName, @JsonProperty("tmpFileName") String tmpFileName) { this.id = id; @@ -77,19 +77,19 @@ public class FileDataDto { this.deleted = deleted; } - public boolean isLatexAttach() { + public Boolean isLatexAttach() { return isLatexAttach; } - public boolean getIsLatexAttach() { + public Boolean getIsLatexAttach() { return isLatexAttach; } - public void setLatexAttach(boolean latexAttach) { + public void setLatexAttach(Boolean latexAttach) { isLatexAttach = latexAttach; } - public void setIsLatexAttach(boolean latexAttach) { + public void setIsLatexAttach(Boolean latexAttach) { isLatexAttach = latexAttach; } } diff --git a/src/main/java/ru/ulstu/file/service/FileService.java b/src/main/java/ru/ulstu/file/service/FileService.java index 3a0a87c..d3a7e8c 100644 --- a/src/main/java/ru/ulstu/file/service/FileService.java +++ b/src/main/java/ru/ulstu/file/service/FileService.java @@ -127,7 +127,7 @@ public class FileService { public void createLatexAttachs(PaperDto paper) throws IOException { for (FileDataDto fileDataDto : paper.getFiles() .stream() - .filter(f -> f.isLatexAttach() && !f.isDeleted()) + .filter(f -> (f.isLatexAttach()!=null && f.isLatexAttach()) && !f.isDeleted()) .collect(Collectors.toList())) { if (fileDataDto.getId() == null) { File oldFile = getTmpFilePath(fileDataDto.getTmpFileName()).toFile(); diff --git a/src/main/resources/templates/papers/fragments/paperFilesListFragment.html b/src/main/resources/templates/papers/fragments/paperFilesListFragment.html index fcc875c..5934c59 100644 --- a/src/main/resources/templates/papers/fragments/paperFilesListFragment.html +++ b/src/main/resources/templates/papers/fragments/paperFilesListFragment.html @@ -8,7 +8,7 @@
- +
From f387b4eb523c09ce7c1fba9d4936a5e0ca09a2c5 Mon Sep 17 00:00:00 2001 From: T-Midnight Date: Fri, 19 Apr 2019 11:36:27 +0400 Subject: [PATCH 09/24] #41 add link to the grant page --- .../templates/grants/fragments/grantDashboardFragment.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/templates/grants/fragments/grantDashboardFragment.html b/src/main/resources/templates/grants/fragments/grantDashboardFragment.html index df3e3d0..51d0925 100644 --- a/src/main/resources/templates/grants/fragments/grantDashboardFragment.html +++ b/src/main/resources/templates/grants/fragments/grantDashboardFragment.html @@ -10,7 +10,9 @@
- title + + title +

status

From 9edcebb2f571e607db810d55ffe3b00518a0afa3 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Fri, 19 Apr 2019 14:29:08 +0400 Subject: [PATCH 10/24] #69 changed isCurrentUserParticipant --- .../ru/ulstu/conference/service/ConferenceService.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index a9e3fac..1bfdebd 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -134,11 +134,6 @@ public class ConferenceService { public boolean isCurrentUserParticipant(List conferenceUsers) { - for (ConferenceUser participant : conferenceUsers) { - if (participant.getUser().getId() == userService.getCurrentUser().getId()) { - return true; - } - } - return false; + return conferenceUsers.stream().anyMatch(participant -> participant.getUser().equals(userService.getCurrentUser())); } } From b623402aa8f8cdbba6a9317f288fbf0ae79bafdb Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Fri, 19 Apr 2019 14:39:07 +0400 Subject: [PATCH 11/24] #69 changed method getConference in controller --- .../controller/ConferenceController.java | 19 ++----------------- .../conference/service/ConferenceService.java | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java index dc57bce..6867be5 100644 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java @@ -15,12 +15,10 @@ import ru.ulstu.conference.model.ConferenceFilterDto; import ru.ulstu.conference.model.ConferenceUser; 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; @@ -49,14 +47,9 @@ public class ConferenceController { @GetMapping("/conference") public void getConference(ModelMap modelMap, @RequestParam(value = "id") Integer id) { if (id != null && id > 0) { - ConferenceDto conferenceDto = conferenceService.findOneDto(id); - conferenceDto.setNotSelectedPapers(getNotSelectPapers(conferenceDto.getPaperIds())); - conferenceDto.setDisabledTakePart(isCurrentUserParticipant(conferenceDto.getUsers())); - modelMap.put("conferenceDto", conferenceDto); + modelMap.put("conferenceDto", conferenceService.getExistConferenceById(id)); } else { - ConferenceDto conferenceDto = new ConferenceDto(); - conferenceDto.setNotSelectedPapers(getNotSelectPapers(new ArrayList())); - modelMap.put("conferenceDto", conferenceDto); + modelMap.put("conferenceDto", conferenceService.getNewConference()); } } @@ -116,14 +109,6 @@ public class ConferenceController { return CONFERENCE_PAGE; } - public List getNotSelectPapers(List paperIds) { - return conferenceService.getConferencePapers(paperIds); - } - - public boolean isCurrentUserParticipant(List conferenceUsers) { - return conferenceService.isCurrentUserParticipant(conferenceUsers); - } - @ModelAttribute("allParticipation") public List getAllParticipation() { return conferenceService.getAllParticipations(); diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index 1bfdebd..6295d5c 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -13,6 +13,7 @@ import ru.ulstu.paper.service.PaperService; import ru.ulstu.user.service.UserService; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -41,6 +42,19 @@ public class ConferenceService { this.userService = userService; } + public ConferenceDto getExistConferenceById(Integer id) { + ConferenceDto conferenceDto = findOneDto(id); + conferenceDto.setNotSelectedPapers(getNotSelectPapers(conferenceDto.getPaperIds())); + conferenceDto.setDisabledTakePart(isCurrentUserParticipant(conferenceDto.getUsers())); + return conferenceDto; + } + + public ConferenceDto getNewConference() { + ConferenceDto conferenceDto = new ConferenceDto(); + conferenceDto.setNotSelectedPapers(getNotSelectPapers(new ArrayList())); + return conferenceDto; + } + public List findAll() { return conferenceRepository.findAll(); @@ -103,7 +117,7 @@ public class ConferenceService { conferenceDto.setDisabledTakePart(true); } - public List getConferencePapers(List paperIds) { + public List getNotSelectPapers(List paperIds) { return paperService.findAllNotSelect(paperIds); } From 9e31bfa7d7c7a58bb07475374cea38198e62d8ab Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 19 Apr 2019 17:08:12 +0400 Subject: [PATCH 12/24] #106 add checkstyle rules --- checkstyle.xml | 4 ++-- .../java/ru/ulstu/core/model/BaseEntity.java | 6 +++++- src/main/java/ru/ulstu/core/util/DateUtils.java | 9 +++++++-- .../java/ru/ulstu/file/service/FileService.java | 2 +- src/main/java/ru/ulstu/odin/model/OdinField.java | 11 +++++++---- .../ru/ulstu/paper/service/LatexService.java | 16 ++++++++++------ .../students/controller/TaskController.java | 10 ++++++++-- src/main/java/ru/ulstu/students/model/Task.java | 14 +++++++++++++- .../java/ru/ulstu/user/model/UserSession.java | 8 +++++++- 9 files changed, 60 insertions(+), 20 deletions(-) diff --git a/checkstyle.xml b/checkstyle.xml index 5877ec9..828cdaa 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -100,7 +100,7 @@ - + + diff --git a/src/main/java/ru/ulstu/core/model/BaseEntity.java b/src/main/java/ru/ulstu/core/model/BaseEntity.java index bd0f1e4..d3dfa76 100644 --- a/src/main/java/ru/ulstu/core/model/BaseEntity.java +++ b/src/main/java/ru/ulstu/core/model/BaseEntity.java @@ -1,6 +1,10 @@ package ru.ulstu.core.model; -import javax.persistence.*; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; +import javax.persistence.Version; import java.io.Serializable; @MappedSuperclass diff --git a/src/main/java/ru/ulstu/core/util/DateUtils.java b/src/main/java/ru/ulstu/core/util/DateUtils.java index b24b09c..6122583 100644 --- a/src/main/java/ru/ulstu/core/util/DateUtils.java +++ b/src/main/java/ru/ulstu/core/util/DateUtils.java @@ -1,6 +1,11 @@ package ru.ulstu.core.util; -import java.time.*; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.Month; +import java.time.ZoneId; import java.util.Arrays; import java.util.Calendar; import java.util.Date; @@ -24,7 +29,7 @@ public class DateUtils { return cal; } - public static List getMonths () { + public static List getMonths() { return Arrays.asList(Month.values()); } diff --git a/src/main/java/ru/ulstu/file/service/FileService.java b/src/main/java/ru/ulstu/file/service/FileService.java index d3a7e8c..4bb1658 100644 --- a/src/main/java/ru/ulstu/file/service/FileService.java +++ b/src/main/java/ru/ulstu/file/service/FileService.java @@ -127,7 +127,7 @@ public class FileService { public void createLatexAttachs(PaperDto paper) throws IOException { for (FileDataDto fileDataDto : paper.getFiles() .stream() - .filter(f -> (f.isLatexAttach()!=null && f.isLatexAttach()) && !f.isDeleted()) + .filter(f -> (f.isLatexAttach() != null && f.isLatexAttach()) && !f.isDeleted()) .collect(Collectors.toList())) { if (fileDataDto.getId() == null) { File oldFile = getTmpFilePath(fileDataDto.getTmpFileName()).toFile(); diff --git a/src/main/java/ru/ulstu/odin/model/OdinField.java b/src/main/java/ru/ulstu/odin/model/OdinField.java index 5917a44..c60c945 100644 --- a/src/main/java/ru/ulstu/odin/model/OdinField.java +++ b/src/main/java/ru/ulstu/odin/model/OdinField.java @@ -31,14 +31,13 @@ public abstract class OdinField implements Comparable { return this.name().toLowerCase(); } } - - private Field field; protected final OdinFieldType fieldType; protected final String fieldName; protected final String caption; protected final OdinVisible.OdinVisibleType visible; protected final boolean readOnly; protected final boolean notEmpty; + private Field field; public OdinField(Field field, OdinFieldType fieldType) { this.field = field; @@ -126,8 +125,12 @@ public abstract class OdinField implements Comparable { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } OdinField odinField = (OdinField) o; return Objects.equals(fieldName, odinField.fieldName); } diff --git a/src/main/java/ru/ulstu/paper/service/LatexService.java b/src/main/java/ru/ulstu/paper/service/LatexService.java index 6bf5226..82dd1ba 100644 --- a/src/main/java/ru/ulstu/paper/service/LatexService.java +++ b/src/main/java/ru/ulstu/paper/service/LatexService.java @@ -12,11 +12,11 @@ import java.nio.file.Files; @Service public class LatexService { + private final String pdfLatexError = "Errors occurred while executing pdfLaTeX."; + private final String bibtexError = "Errors occurred while executing bibtex."; private String errorMessage; private File pdfFile; private FileService fileService; - private final String pdfLatexError = "Errors occurred while executing pdfLaTeX."; - private final String bibtexError = "Errors occurred while executing bibtex."; public LatexService(FileService fileService) { this.fileService = fileService; @@ -42,7 +42,9 @@ public class LatexService { InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream()); try (BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { - while ((bufferedReader.readLine()) != null) ; + while ((bufferedReader.readLine()) != null) { + // + } } int exitCode = process.waitFor(); @@ -55,16 +57,18 @@ public class LatexService { private boolean generate(String filename, File dir) throws IOException, InterruptedException { startProcess(new String[]{"pdflatex", filename, "--interaction=nonstopmode"}, dir, pdfLatexError); startProcess(new String[]{"bibtex", filename}, dir, bibtexError); - if (startProcess(new String[]{"pdflatex", filename, "--interaction=nonstopmode"}, dir, pdfLatexError) != 0) + if (startProcess(new String[]{"pdflatex", filename, "--interaction=nonstopmode"}, dir, pdfLatexError) != 0) { return false; + } return checkPdf(filename, dir); } private boolean checkPdf(String filename, File dir) { pdfFile = new File(dir.getAbsolutePath() + File.separator + filename + ".pdf"); - if (pdfFile.isFile()) return true; - else { + if (pdfFile.isFile()) { + return true; + } else { errorMessage = "The pdf file could not be created."; return false; } diff --git a/src/main/java/ru/ulstu/students/controller/TaskController.java b/src/main/java/ru/ulstu/students/controller/TaskController.java index 8fd9575..50cb052 100644 --- a/src/main/java/ru/ulstu/students/controller/TaskController.java +++ b/src/main/java/ru/ulstu/students/controller/TaskController.java @@ -3,7 +3,11 @@ package ru.ulstu.students.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.students.model.Task; import ru.ulstu.students.model.TaskDto; @@ -16,7 +20,9 @@ import java.util.List; import java.util.stream.Collectors; import static org.springframework.util.StringUtils.isEmpty; -import static ru.ulstu.students.controller.Navigation.*; +import static ru.ulstu.students.controller.Navigation.REDIRECT_TO; +import static ru.ulstu.students.controller.Navigation.TASKS_PAGE; +import static ru.ulstu.students.controller.Navigation.TASK_PAGE; @Controller() @RequestMapping(value = "/students") diff --git a/src/main/java/ru/ulstu/students/model/Task.java b/src/main/java/ru/ulstu/students/model/Task.java index be1b1c6..c4d7409 100644 --- a/src/main/java/ru/ulstu/students/model/Task.java +++ b/src/main/java/ru/ulstu/students/model/Task.java @@ -7,7 +7,19 @@ import ru.ulstu.core.model.BaseEntity; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.tags.model.Tag; -import javax.persistence.*; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.OneToMany; +import javax.persistence.OrderBy; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/user/model/UserSession.java b/src/main/java/ru/ulstu/user/model/UserSession.java index 1eb761d..50fec65 100644 --- a/src/main/java/ru/ulstu/user/model/UserSession.java +++ b/src/main/java/ru/ulstu/user/model/UserSession.java @@ -2,7 +2,13 @@ package ru.ulstu.user.model; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.*; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; import javax.validation.constraints.NotNull; import java.util.Date; From 9f664b2618cffccfbf23dc90c78000f83d338b03 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Fri, 19 Apr 2019 17:30:30 +0400 Subject: [PATCH 13/24] #59 add front thymeleaf --- .../templates/conferences/conferences.html | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/resources/templates/conferences/conferences.html b/src/main/resources/templates/conferences/conferences.html index 46b2e73..7b0ac8d 100644 --- a/src/main/resources/templates/conferences/conferences.html +++ b/src/main/resources/templates/conferences/conferences.html @@ -27,16 +27,19 @@
Фильтр:
- + + - -
From e2b49689d55e3373f91c01f5e6735a3660e29dab Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Fri, 19 Apr 2019 17:31:30 +0400 Subject: [PATCH 14/24] #59 changed filterDto --- .../conference/model/ConferenceFilterDto.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceFilterDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceFilterDto.java index 37878b2..8503b40 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceFilterDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceFilterDto.java @@ -5,15 +5,15 @@ import java.util.List; public class ConferenceFilterDto { private List conferences; - private Integer filterAuthorId; + private Integer filterUserId; private Integer year; public ConferenceFilterDto() { } - public ConferenceFilterDto(List conferenceDtos, Integer filterAuthorId, Integer year) { + public ConferenceFilterDto(List conferenceDtos, Integer filterUserId, Integer year) { this.conferences = conferenceDtos; - this.filterAuthorId = filterAuthorId; + this.filterUserId = filterUserId; this.year = year; } @@ -29,12 +29,12 @@ public class ConferenceFilterDto { this.conferences = conferences; } - public Integer getFilterAuthorId() { - return filterAuthorId; + public Integer getFilterUserId() { + return filterUserId; } - public void setFilterAuthorId(Integer filterAuthorId) { - this.filterAuthorId = filterAuthorId; + public void setFilterUserId(Integer filterUserId) { + this.filterUserId = filterUserId; } public Integer getYear() { From 34033fac5fc7f2d06e022673cd8ed9a06e02fa9b Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Fri, 19 Apr 2019 17:36:46 +0400 Subject: [PATCH 15/24] #59 added filtration --- .../controller/ConferenceController.java | 24 +++++++++++++++++++ .../repository/ConferenceRepository.java | 7 ++++++ .../conference/service/ConferenceService.java | 13 ++++++++++ src/main/resources/public/css/conference.css | 4 +++- 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java index 6867be5..370e996 100644 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java @@ -15,10 +15,13 @@ import ru.ulstu.conference.model.ConferenceFilterDto; import ru.ulstu.conference.model.ConferenceUser; import ru.ulstu.conference.service.ConferenceService; import ru.ulstu.deadline.model.Deadline; +import ru.ulstu.user.model.User; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; import java.io.IOException; +import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import java.util.stream.Collectors; @@ -44,6 +47,13 @@ public class ConferenceController { modelMap.put("filteredConferences", new ConferenceFilterDto(conferenceService.findAllDto())); } + @PostMapping("/conferences") + public void filterConferences(@Valid ConferenceFilterDto conferenceFilterDto, ModelMap modelMap) { + modelMap.put("filteredConferences", new ConferenceFilterDto(conferenceService.filter(conferenceFilterDto), + conferenceFilterDto.getFilterUserId(), + conferenceFilterDto.getYear())); + } + @GetMapping("/conference") public void getConference(ModelMap modelMap, @RequestParam(value = "id") Integer id) { if (id != null && id > 0) { @@ -119,6 +129,20 @@ public class ConferenceController { return conferenceService.getAllDeposit(); } + @ModelAttribute("allUsers") + public List getAllUsers() { + return conferenceService.getAllUsers(); + } + + @ModelAttribute("allYears") + public List getAllYears() { + List years = new ArrayList<>(); + for (int i = Calendar.getInstance().get(Calendar.YEAR); i > 2010; i--) { + years.add(i); + } + return years; + } + 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/repository/ConferenceRepository.java b/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java index 4325633..99f311e 100644 --- a/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java +++ b/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java @@ -1,7 +1,14 @@ package ru.ulstu.conference.repository; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import ru.ulstu.conference.model.Conference; +import ru.ulstu.user.model.User; + +import java.util.List; public interface ConferenceRepository extends JpaRepository { + @Query("SELECT c FROM Conference c LEFT JOIN c.users u WHERE (:user IS NULL OR u.user = :user) AND (YEAR(c.beginDate) = :year OR :year IS NULL)") + List filter(@Param("user") User user, @Param("year") Integer year); } diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index 6295d5c..b03e9d3 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -5,11 +5,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.conference.model.Conference; import ru.ulstu.conference.model.ConferenceDto; +import ru.ulstu.conference.model.ConferenceFilterDto; import ru.ulstu.conference.model.ConferenceUser; 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 ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; import java.io.IOException; @@ -121,6 +123,10 @@ public class ConferenceService { return paperService.findAllNotSelect(paperIds); } + public List getAllUsers() { + return userService.findAll(); + } + public List getAllParticipations() { return Arrays.asList(ConferenceUser.Participation.values()); } @@ -150,4 +156,11 @@ public class ConferenceService { public boolean isCurrentUserParticipant(List conferenceUsers) { return conferenceUsers.stream().anyMatch(participant -> participant.getUser().equals(userService.getCurrentUser())); } + + public List filter(ConferenceFilterDto conferenceFilterDto) { + return convert(conferenceRepository.filter( + conferenceFilterDto.getFilterUserId() == null ? null : userService.findById(conferenceFilterDto.getFilterUserId()), + conferenceFilterDto.getYear()), ConferenceDto::new); + + } } diff --git a/src/main/resources/public/css/conference.css b/src/main/resources/public/css/conference.css index fe19fd0..bc70ca4 100644 --- a/src/main/resources/public/css/conference.css +++ b/src/main/resources/public/css/conference.css @@ -11,7 +11,9 @@ body { color: white; } - +.filter .dropdown { + margin-bottom: 10px; +} .form-group textarea { From 338d7c2e09a1ede660401d3f7d3353610fe1f403 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Fri, 19 Apr 2019 18:32:24 +0400 Subject: [PATCH 16/24] #59 added begin-end dates in conferenceRow --- .../ru/ulstu/conference/model/ConferenceDto.java | 7 +++++++ src/main/resources/public/css/conference.css | 6 +++++- src/main/resources/public/js/conference.js | 12 ------------ .../conferences/fragments/confLineFragment.html | 9 +++++---- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java index a3f80c9..4ea0e2e 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java @@ -18,6 +18,9 @@ import static ru.ulstu.core.util.StreamApiUtils.convert; public class ConferenceDto { + String BEGINDATESTRING = "Начало: "; + String ENDDATESTRING = "Конец: "; + private Integer id; @NotEmpty @Size(min = 2, max = 400) @@ -211,4 +214,8 @@ public class ConferenceDto { this.notSelectedPapers = notSelectedPapers; } + public String getDatesString() { + return BEGINDATESTRING + beginDate.toString().split(" ")[0] + " " + ENDDATESTRING + endDate.toString().split(" ")[0]; + } + } diff --git a/src/main/resources/public/css/conference.css b/src/main/resources/public/css/conference.css index bc70ca4..ad06b3c 100644 --- a/src/main/resources/public/css/conference.css +++ b/src/main/resources/public/css/conference.css @@ -3,7 +3,7 @@ body { } .conference-row .col:hover { - background-color: #eaeaea; + background-color: #f3f3f3; border-radius: .25rem; } @@ -15,6 +15,10 @@ body { margin-bottom: 10px; } +.conference-row .col .text-decoration { + text-decoration: none; +} + .form-group textarea { min-height: 206px; diff --git a/src/main/resources/public/js/conference.js b/src/main/resources/public/js/conference.js index dd843ca..d415ca2 100644 --- a/src/main/resources/public/js/conference.js +++ b/src/main/resources/public/js/conference.js @@ -1,17 +1,5 @@ $(document).ready(function () { - $(".conference-row").mouseenter(function (event) { - var conferenceRow = $(event.target).closest(".conference-row"); - $(conferenceRow).css("background-color", "#f8f9fa"); - $(conferenceRow).find(".remove-conference").removeClass("d-none"); - - }); - $(".conference-row").mouseleave(function (event) { - var conferenceRow = $(event.target).closest(".conference-row"); - $(conferenceRow).css("background-color", "white"); - $(conferenceRow).closest(".conference-row").find(".remove-conference").addClass("d-none"); - }); - $('a[data-confirm]').click(function(ev) { var href = $(this).attr('href'); if (!$('#dataConfirmModal').length) { diff --git a/src/main/resources/templates/conferences/fragments/confLineFragment.html b/src/main/resources/templates/conferences/fragments/confLineFragment.html index d104952..7d948d4 100644 --- a/src/main/resources/templates/conferences/fragments/confLineFragment.html +++ b/src/main/resources/templates/conferences/fragments/confLineFragment.html @@ -5,13 +5,14 @@
-
- + From a9f4a326c56f3459e7b4c2b53121b856a2c38056 Mon Sep 17 00:00:00 2001 From: Nightblade73 Date: Fri, 19 Apr 2019 18:38:56 +0400 Subject: [PATCH 17/24] #59 fixed styles --- src/main/java/ru/ulstu/conference/model/ConferenceDto.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java index 4ea0e2e..2e2f13b 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java @@ -18,8 +18,8 @@ import static ru.ulstu.core.util.StreamApiUtils.convert; public class ConferenceDto { - String BEGINDATESTRING = "Начало: "; - String ENDDATESTRING = "Конец: "; + private final static String BEGIN_DATE = "Начало: "; + private final static String END_DATE = "Конец: "; private Integer id; @NotEmpty @@ -215,7 +215,7 @@ public class ConferenceDto { } public String getDatesString() { - return BEGINDATESTRING + beginDate.toString().split(" ")[0] + " " + ENDDATESTRING + endDate.toString().split(" ")[0]; + return BEGIN_DATE + beginDate.toString().split(" ")[0] + " " + END_DATE + endDate.toString().split(" ")[0]; } } From a3d1834ab8968dd9689a295addb7720579841e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=20=D0=9C?= =?UTF-8?q?=D0=B0=D1=80=D0=B8=D1=8F?= Date: Sun, 21 Apr 2019 12:17:31 +0400 Subject: [PATCH 18/24] #110 add paper type --- .../paper/controller/PaperController.java | 5 ++++ src/main/java/ru/ulstu/paper/model/Paper.java | 28 +++++++++++++++++++ .../java/ru/ulstu/paper/model/PaperDto.java | 12 ++++++++ .../ru/ulstu/paper/service/PaperService.java | 7 +++++ .../db/changelog-20190421_000000-schema.xml | 15 ++++++++++ src/main/resources/db/changelog-master.xml | 1 + .../resources/templates/papers/paper.html | 9 ++++++ 7 files changed, 77 insertions(+) create mode 100644 src/main/resources/db/changelog-20190421_000000-schema.xml diff --git a/src/main/java/ru/ulstu/paper/controller/PaperController.java b/src/main/java/ru/ulstu/paper/controller/PaperController.java index ad30822..e11e4d9 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperController.java @@ -105,6 +105,11 @@ public class PaperController { return paperService.getPaperStatuses(); } + @ModelAttribute("allTypes") + public List getPaperTypes() { + return paperService.getPaperTypes(); + } + @ModelAttribute("allAuthors") public List getAllAuthors() { return paperService.getPaperAuthors(); diff --git a/src/main/java/ru/ulstu/paper/model/Paper.java b/src/main/java/ru/ulstu/paper/model/Paper.java index c7f7fcf..65bd32c 100644 --- a/src/main/java/ru/ulstu/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/paper/model/Paper.java @@ -53,12 +53,32 @@ public class Paper extends BaseEntity implements UserContainer { } } + public enum PaperType { + OTHER("Прочая публикация"), + VAK("ВАК"), + SCOPUS("Scopus"), + WEB_OF_SCIENCE("Web Of Science"); + + private String typeName; + + PaperType(String name) { + this.typeName = name; + } + + public String getTypeName() { + return typeName; + } + } + @NotBlank private String title; @Enumerated(value = EnumType.STRING) private PaperStatus status = PaperStatus.DRAFT; + @Enumerated(value = EnumType.STRING) + private PaperType type = PaperType.OTHER; + @Column(name = "create_date") @Temporal(TemporalType.TIMESTAMP) private Date createDate = new Date(); @@ -102,6 +122,14 @@ public class Paper extends BaseEntity implements UserContainer { this.status = status; } + public PaperType getType() { + return type; + } + + public void setType(PaperType type) { + this.type = type; + } + public Date getCreateDate() { return createDate; } diff --git a/src/main/java/ru/ulstu/paper/model/PaperDto.java b/src/main/java/ru/ulstu/paper/model/PaperDto.java index 7ddc0e0..11d6dfc 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperDto.java @@ -25,6 +25,7 @@ public class PaperDto { @Size(min = 3, max = 254) private String title; private Paper.PaperStatus status; + private Paper.PaperType type; private Date createDate; private Date updateDate; @NotEmpty @@ -46,6 +47,7 @@ public class PaperDto { public PaperDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @JsonProperty("status") Paper.PaperStatus status, + @JsonProperty("type") Paper.PaperType type, @JsonProperty("createDate") Date createDate, @JsonProperty("updateDate") Date updateDate, @JsonProperty("deadlines") List deadlines, @@ -59,6 +61,7 @@ public class PaperDto { this.id = id; this.title = title; this.status = status; + this.type = type; this.createDate = createDate; this.updateDate = updateDate; this.deadlines = deadlines; @@ -74,6 +77,7 @@ public class PaperDto { this.id = paper.getId(); this.title = paper.getTitle(); this.status = paper.getStatus(); + this.type = paper.getType(); this.createDate = paper.getCreateDate(); this.updateDate = paper.getUpdateDate(); this.deadlines = paper.getDeadlines(); @@ -110,6 +114,14 @@ public class PaperDto { this.status = status; } + public Paper.PaperType getType() { + return type; + } + + public void setType(Paper.PaperType type) { + this.type = type; + } + public Date getCreateDate() { return createDate; } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index a10d941..1633c07 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -31,6 +31,7 @@ import static ru.ulstu.paper.model.Paper.PaperStatus.COMPLETED; import static ru.ulstu.paper.model.Paper.PaperStatus.DRAFT; import static ru.ulstu.paper.model.Paper.PaperStatus.FAILED; import static ru.ulstu.paper.model.Paper.PaperStatus.ON_PREPARATION; +import static ru.ulstu.paper.model.Paper.PaperType.OTHER; @Service public class PaperService { @@ -99,6 +100,7 @@ public class PaperService { paper.setCreateDate(paper.getCreateDate() == null ? new Date() : paper.getCreateDate()); paper.setLocked(paperDto.getLocked()); paper.setStatus(paperDto.getStatus() == null ? DRAFT : paperDto.getStatus()); + paper.setType(paperDto.getType() == null ? OTHER : paperDto.getType()); paper.setTitle(paperDto.getTitle()); paper.setUpdateDate(new Date()); paper.setDeadlines(deadlineService.saveOrCreate(paperDto.getDeadlines())); @@ -149,6 +151,10 @@ public class PaperService { return Arrays.asList(Paper.PaperStatus.values()); } + public List getPaperTypes() { + return Arrays.asList(Paper.PaperType.values()); + } + @Transactional public Paper create(String title, User user, Date deadlineDate) { Paper paper = new Paper(); @@ -158,6 +164,7 @@ public class PaperService { paper.setCreateDate(new Date()); paper.setUpdateDate(new Date()); paper.setStatus(DRAFT); + paper.setType(OTHER); paper = paperRepository.save(paper); paperNotificationService.sendCreateNotification(paper); diff --git a/src/main/resources/db/changelog-20190421_000000-schema.xml b/src/main/resources/db/changelog-20190421_000000-schema.xml new file mode 100644 index 0000000..b7fc374 --- /dev/null +++ b/src/main/resources/db/changelog-20190421_000000-schema.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/src/main/resources/db/changelog-master.xml b/src/main/resources/db/changelog-master.xml index 32651bc..d0f1837 100644 --- a/src/main/resources/db/changelog-master.xml +++ b/src/main/resources/db/changelog-master.xml @@ -30,4 +30,5 @@ + \ No newline at end of file diff --git a/src/main/resources/templates/papers/paper.html b/src/main/resources/templates/papers/paper.html index fe355f6..d408913 100644 --- a/src/main/resources/templates/papers/paper.html +++ b/src/main/resources/templates/papers/paper.html @@ -47,6 +47,15 @@

+
+ + +
+
+ placeholder="http://"/>
diff --git a/src/main/resources/templates/conferences/actual.html b/src/main/resources/templates/conferences/dashboard.html similarity index 71% rename from src/main/resources/templates/conferences/actual.html rename to src/main/resources/templates/conferences/dashboard.html index 7e99e74..cb4f2c0 100644 --- a/src/main/resources/templates/conferences/actual.html +++ b/src/main/resources/templates/conferences/dashboard.html @@ -16,11 +16,10 @@

-
-
- - -
+
+ +
+
diff --git a/src/main/resources/templates/conferences/fragments/confDashboardFragment.html b/src/main/resources/templates/conferences/fragments/confDashboardFragment.html index 080946c..17f4aa6 100644 --- a/src/main/resources/templates/conferences/fragments/confDashboardFragment.html +++ b/src/main/resources/templates/conferences/fragments/confDashboardFragment.html @@ -10,8 +10,14 @@
- title -

+

+

+ + title +
diff --git a/src/main/resources/templates/conferences/fragments/confNavigationFragment.html b/src/main/resources/templates/conferences/fragments/confNavigationFragment.html index 45a945e..7e67365 100644 --- a/src/main/resources/templates/conferences/fragments/confNavigationFragment.html +++ b/src/main/resources/templates/conferences/fragments/confNavigationFragment.html @@ -13,7 +13,7 @@
From 349e7373ffe829ad7a84081575beba6bec0ade36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BD=20=D0=90=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=BD?= Date: Mon, 22 Apr 2019 14:19:01 +0300 Subject: [PATCH 21/24] #97 save function --- .../project/controller/ProjectController.java | 25 +++++++++++++++++++ .../ulstu/project/service/ProjectService.java | 8 +++++- .../resources/templates/projects/project.html | 15 +++++++---- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/main/java/ru/ulstu/project/controller/ProjectController.java b/src/main/java/ru/ulstu/project/controller/ProjectController.java index 3244ccb..7033e6d 100644 --- a/src/main/java/ru/ulstu/project/controller/ProjectController.java +++ b/src/main/java/ru/ulstu/project/controller/ProjectController.java @@ -2,8 +2,10 @@ package ru.ulstu.project.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.project.model.Project; @@ -11,7 +13,13 @@ import ru.ulstu.project.model.ProjectDto; import ru.ulstu.project.service.ProjectService; import springfox.documentation.annotations.ApiIgnore; +import javax.validation.Valid; +import java.io.IOException; import java.util.List; +import java.util.stream.Collectors; + +import static org.springframework.util.StringUtils.isEmpty; +import static ru.ulstu.core.controller.Navigation.hasErrors; @Controller() @RequestMapping(value = "/projects") @@ -46,4 +54,21 @@ public class ProjectController { public List getProjectStatuses() { return projectService.getProjectStatuses(); } + + @PostMapping(value = "/project", params = "save") + public String save(@Valid ProjectDto projectDto, Errors errors) throws IOException { + filterEmptyDeadlines(projectDto); + if (projectDto.getDeadlines().isEmpty()) { + errors.rejectValue("deadlines", "errorCode", "Не может быть пустым"); + } + hasErrors(errors, "/projects/project"); + projectService.save(projectDto); + return String.format("redirect:%s", "/projects/projects"); + } + + private void filterEmptyDeadlines(ProjectDto projectDto) { + projectDto.setDeadlines(projectDto.getDeadlines().stream() + .filter(dto -> dto.getDate() != null || !isEmpty(dto.getDescription())) + .collect(Collectors.toList())); + } } diff --git a/src/main/java/ru/ulstu/project/service/ProjectService.java b/src/main/java/ru/ulstu/project/service/ProjectService.java index 99d8919..49a6688 100644 --- a/src/main/java/ru/ulstu/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/project/service/ProjectService.java @@ -3,16 +3,20 @@ package ru.ulstu.project.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.util.StringUtils; +import ru.ulstu.deadline.model.Deadline; import ru.ulstu.deadline.service.DeadlineService; +import ru.ulstu.grant.model.Grant; import ru.ulstu.project.model.Project; import ru.ulstu.project.model.ProjectDto; import ru.ulstu.project.repository.ProjectRepository; import java.util.Arrays; +import java.util.Date; import java.util.List; import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.core.util.StreamApiUtils.convert; +import static ru.ulstu.project.model.Project.ProjectStatus.APPLICATION; @Service public class ProjectService { @@ -53,8 +57,10 @@ public class ProjectService { } private Project copyFromDto(Project project, ProjectDto projectDto) { + project.setDescription(projectDto.getDescription()); + project.setStatus(projectDto.getStatus() == null ? APPLICATION : projectDto.getStatus()); project.setTitle(projectDto.getTitle()); - project.setDeadlines(deadlineService.saveOrCreate(projectDto.getDeadlines())); + project.setRepository(projectDto.getRepository()); return project; } diff --git a/src/main/resources/templates/projects/project.html b/src/main/resources/templates/projects/project.html index 437927a..a716ff2 100644 --- a/src/main/resources/templates/projects/project.html +++ b/src/main/resources/templates/projects/project.html @@ -70,16 +70,21 @@
-
- +
+
- +
- +
-
From 519dd51446de64feacd9a6980ad8a74e56a5d3e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BD=20=D0=90=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=BD?= Date: Mon, 22 Apr 2019 14:31:46 +0300 Subject: [PATCH 22/24] #97 dashboard added --- .../templates/projects/dashboard.html | 4 ++-- .../fragments/projectDashboardFragment.html | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/templates/projects/fragments/projectDashboardFragment.html diff --git a/src/main/resources/templates/projects/dashboard.html b/src/main/resources/templates/projects/dashboard.html index 882c202..c48b035 100644 --- a/src/main/resources/templates/projects/dashboard.html +++ b/src/main/resources/templates/projects/dashboard.html @@ -13,8 +13,8 @@
- -
+ +
diff --git a/src/main/resources/templates/projects/fragments/projectDashboardFragment.html b/src/main/resources/templates/projects/fragments/projectDashboardFragment.html new file mode 100644 index 0000000..1f66c4f --- /dev/null +++ b/src/main/resources/templates/projects/fragments/projectDashboardFragment.html @@ -0,0 +1,19 @@ + + + + + + +
+
+
+ +
+
+ title +

status

+
+
+
+ + \ No newline at end of file From 53cc947a17b66a36436945480c08857b7c4940f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BD=20=D0=90=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=BD?= Date: Mon, 22 Apr 2019 15:48:29 +0300 Subject: [PATCH 23/24] #97 copy from DTO edited --- .../grant/controller/GrantController.java | 2 +- .../ru/ulstu/grant/service/GrantService.java | 2 +- .../java/ru/ulstu/project/model/Project.java | 13 +++++++++ .../ru/ulstu/project/model/ProjectDto.java | 11 ++++++++ .../ulstu/project/service/ProjectService.java | 27 ++++++++++++++----- .../db/changelog-20190422_000000-schema.xml | 16 +++++++++++ src/main/resources/db/changelog-master.xml | 1 + 7 files changed, 63 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/db/changelog-20190422_000000-schema.xml diff --git a/src/main/java/ru/ulstu/grant/controller/GrantController.java b/src/main/java/ru/ulstu/grant/controller/GrantController.java index 0731188..a0bb916 100644 --- a/src/main/java/ru/ulstu/grant/controller/GrantController.java +++ b/src/main/java/ru/ulstu/grant/controller/GrantController.java @@ -89,7 +89,7 @@ public class GrantController { } @PostMapping(value = "/grant", params = "createProject") - public String createProject(@Valid GrantDto grantDto, Errors errors) { + public String createProject(@Valid GrantDto grantDto, Errors errors) throws IOException { if (errors.hasErrors()) { return GRANT_PAGE; } diff --git a/src/main/java/ru/ulstu/grant/service/GrantService.java b/src/main/java/ru/ulstu/grant/service/GrantService.java index 8427da3..44c0dfa 100644 --- a/src/main/java/ru/ulstu/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/grant/service/GrantService.java @@ -89,7 +89,7 @@ public class GrantService { return grant; } - public void createProject(GrantDto grantDto) { + public void createProject(GrantDto grantDto) throws IOException { grantDto.setProject( new ProjectDto(projectService.save(new ProjectDto(grantDto.getTitle())))); } diff --git a/src/main/java/ru/ulstu/project/model/Project.java b/src/main/java/ru/ulstu/project/model/Project.java index 2e0e86c..c971c4b 100644 --- a/src/main/java/ru/ulstu/project/model/Project.java +++ b/src/main/java/ru/ulstu/project/model/Project.java @@ -3,6 +3,7 @@ package ru.ulstu.project.model; import org.hibernate.validator.constraints.NotBlank; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.deadline.model.Deadline; +import ru.ulstu.file.model.FileData; import ru.ulstu.grant.model.Grant; import javax.persistence.CascadeType; @@ -57,6 +58,10 @@ public class Project extends BaseEntity { @NotNull private String repository; + @ManyToOne + @JoinColumn(name = "file_id") + private FileData application; + public String getTitle() { return title; } @@ -104,4 +109,12 @@ public class Project extends BaseEntity { public void setDeadlines(List deadlines) { this.deadlines = deadlines; } + + public FileData getApplication() { + return application; + } + + public void setApplication(FileData application) { + this.application = application; + } } diff --git a/src/main/java/ru/ulstu/project/model/ProjectDto.java b/src/main/java/ru/ulstu/project/model/ProjectDto.java index 6c83d59..4e03365 100644 --- a/src/main/java/ru/ulstu/project/model/ProjectDto.java +++ b/src/main/java/ru/ulstu/project/model/ProjectDto.java @@ -19,6 +19,7 @@ public class ProjectDto { private List deadlines = new ArrayList<>(); private GrantDto grant; private String repository; + private String applicationFileName; public ProjectDto() { } @@ -42,6 +43,7 @@ public class ProjectDto { this.grant = grant; this.repository = repository; this.deadlines = deadlines; + this.applicationFileName = null; } @@ -50,6 +52,7 @@ public class ProjectDto { this.title = project.getTitle(); this.status = project.getStatus(); this.description = project.getDescription(); + this.applicationFileName = project.getApplication() == null ? null : project.getApplication().getName(); this.grant = project.getGrant() == null ? null : new GrantDto(project.getGrant()); this.repository = project.getRepository(); this.deadlines = project.getDeadlines(); @@ -110,4 +113,12 @@ public class ProjectDto { public void setDeadlines(List deadlines) { this.deadlines = deadlines; } + + public String getApplicationFileName() { + return applicationFileName; + } + + public void setApplicationFileName(String applicationFileName) { + this.applicationFileName = applicationFileName; + } } diff --git a/src/main/java/ru/ulstu/project/service/ProjectService.java b/src/main/java/ru/ulstu/project/service/ProjectService.java index 49a6688..c15d590 100644 --- a/src/main/java/ru/ulstu/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/project/service/ProjectService.java @@ -3,15 +3,15 @@ package ru.ulstu.project.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.util.StringUtils; -import ru.ulstu.deadline.model.Deadline; import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.grant.model.Grant; +import ru.ulstu.file.service.FileService; +import ru.ulstu.grant.repository.GrantRepository; import ru.ulstu.project.model.Project; import ru.ulstu.project.model.ProjectDto; import ru.ulstu.project.repository.ProjectRepository; +import java.io.IOException; import java.util.Arrays; -import java.util.Date; import java.util.List; import static org.springframework.util.ObjectUtils.isEmpty; @@ -24,11 +24,17 @@ public class ProjectService { private final ProjectRepository projectRepository; private final DeadlineService deadlineService; + private final GrantRepository grantRepository; + private final FileService fileService; public ProjectService(ProjectRepository projectRepository, - DeadlineService deadlineService) { + DeadlineService deadlineService, + GrantRepository grantRepository, + FileService fileService) { this.projectRepository = projectRepository; this.deadlineService = deadlineService; + this.grantRepository = grantRepository; + this.fileService = fileService; } public List findAll() { @@ -50,21 +56,28 @@ public class ProjectService { } @Transactional - public Project create(ProjectDto projectDto) { + public Project create(ProjectDto projectDto) throws IOException { Project newProject = copyFromDto(new Project(), projectDto); newProject = projectRepository.save(newProject); return newProject; } - private Project copyFromDto(Project project, ProjectDto projectDto) { + private Project copyFromDto(Project project, ProjectDto projectDto) throws IOException { project.setDescription(projectDto.getDescription()); project.setStatus(projectDto.getStatus() == null ? APPLICATION : projectDto.getStatus()); project.setTitle(projectDto.getTitle()); + if (projectDto.getGrant() != null && projectDto.getGrant().getId() != null) { + project.setGrant(grantRepository.findOne(projectDto.getGrant().getId())); + } project.setRepository(projectDto.getRepository()); + project.setDeadlines(deadlineService.saveOrCreate(projectDto.getDeadlines())); + if (projectDto.getApplicationFileName() != null) { + project.setApplication(fileService.createFileFromTmp(projectDto.getApplicationFileName())); + } return project; } - public Project save(ProjectDto projectDto) { + public Project save(ProjectDto projectDto) throws IOException { if (isEmpty(projectDto.getId())) { return create(projectDto); } else { diff --git a/src/main/resources/db/changelog-20190422_000000-schema.xml b/src/main/resources/db/changelog-20190422_000000-schema.xml new file mode 100644 index 0000000..f110910 --- /dev/null +++ b/src/main/resources/db/changelog-20190422_000000-schema.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/src/main/resources/db/changelog-master.xml b/src/main/resources/db/changelog-master.xml index d0f1837..1201a65 100644 --- a/src/main/resources/db/changelog-master.xml +++ b/src/main/resources/db/changelog-master.xml @@ -31,4 +31,5 @@ + \ No newline at end of file From 019fe7c652f7fdfc6ed457a52e2d5ac99d4e72c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BD=20=D0=90=D0=BD=D1=82=D0=BE?= =?UTF-8?q?=D0=BD?= Date: Tue, 23 Apr 2019 10:32:23 +0300 Subject: [PATCH 24/24] #97 adding deadlines --- .../project/controller/ProjectController.java | 16 +++++++++++++++- .../resources/templates/projects/project.html | 6 +++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/ulstu/project/controller/ProjectController.java b/src/main/java/ru/ulstu/project/controller/ProjectController.java index 7033e6d..1d0272d 100644 --- a/src/main/java/ru/ulstu/project/controller/ProjectController.java +++ b/src/main/java/ru/ulstu/project/controller/ProjectController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import ru.ulstu.deadline.model.Deadline; +import ru.ulstu.grant.model.GrantDto; import ru.ulstu.project.model.Project; import ru.ulstu.project.model.ProjectDto; import ru.ulstu.project.service.ProjectService; @@ -61,11 +63,23 @@ public class ProjectController { if (projectDto.getDeadlines().isEmpty()) { errors.rejectValue("deadlines", "errorCode", "Не может быть пустым"); } - hasErrors(errors, "/projects/project"); + if (errors.hasErrors()) { + return "/projects/project"; + } projectService.save(projectDto); return String.format("redirect:%s", "/projects/projects"); } + @PostMapping(value = "/project", params = "addDeadline") + public String addDeadline(@Valid ProjectDto projectDto, Errors errors) { + filterEmptyDeadlines(projectDto); + if (errors.hasErrors()) { + return "/projects/project"; + } + projectDto.getDeadlines().add(new Deadline()); + return "/projects/project"; + } + private void filterEmptyDeadlines(ProjectDto projectDto) { projectDto.setDeadlines(projectDto.getDeadlines().stream() .filter(dto -> dto.getDate() != null || !isEmpty(dto.getDescription())) diff --git a/src/main/resources/templates/projects/project.html b/src/main/resources/templates/projects/project.html index ad4df25..dc3fa6d 100644 --- a/src/main/resources/templates/projects/project.html +++ b/src/main/resources/templates/projects/project.html @@ -73,11 +73,11 @@
-
- +
-
+