From c34ce94fb09b65b17c230286a53abea0141d04a5 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sat, 14 Nov 2020 16:52:22 +0100 Subject: [PATCH 01/14] Added flaging assignment. Coumetr froup infor needs to be added --- .../com/plannaplan/entities/Assignment.java | 15 +++++++- .../com/plannaplan/entities/Commision.java | 12 ++++++- .../services/AssignmentService.java | 9 +++-- .../plannaplan/services/CommisionService.java | 11 ++++++ .../services/AssignmentServiceTest.java | 28 +++++++++------ .../services/CommisionServiceTest.java | 36 ++++++++++++++++++- .../src/main/java/com/plannaplan/App.java | 2 +- 7 files changed, 97 insertions(+), 16 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/entities/Assignment.java b/buisnesslogic/src/main/java/com/plannaplan/entities/Assignment.java index cb0f8ff..7bbbc85 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/entities/Assignment.java +++ b/buisnesslogic/src/main/java/com/plannaplan/entities/Assignment.java @@ -18,12 +18,17 @@ public class Assignment { @ManyToOne @JoinColumn(name = "commision_id") private Commision commision; + private boolean isPastAssignment; - public Assignment(Groups group, Commision commision) { + public Assignment(Groups group, Commision commision, boolean isPastAssignment) { this.commision = commision; this.group = group; } + public Assignment(Groups group, Commision commision) { + this(group, commision, false); + } + public Assignment() { } @@ -34,4 +39,12 @@ public class Assignment { public Groups getGroup() { return this.group; } + + public boolean isPastAssignment() { + return isPastAssignment; + } + + public void setPastAssignment(boolean isPastAssignment) { + this.isPastAssignment = isPastAssignment; + } } \ No newline at end of file diff --git a/buisnesslogic/src/main/java/com/plannaplan/entities/Commision.java b/buisnesslogic/src/main/java/com/plannaplan/entities/Commision.java index dd4b698..01e56e7 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/entities/Commision.java +++ b/buisnesslogic/src/main/java/com/plannaplan/entities/Commision.java @@ -4,6 +4,7 @@ import java.sql.Timestamp; import java.util.List; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -21,9 +22,14 @@ public class Commision { private User commisionOwner; private Timestamp commisionDate; - @OneToMany(mappedBy = "commision") + @OneToMany(mappedBy = "commision", fetch = FetchType.EAGER) private List assignments; + /** + * + * @param user owner of commission. Can not be null otherwise saving commision + * will fail. + */ public Commision(User user) { this.commisionDate = new Timestamp(System.currentTimeMillis()); this.commisionOwner = user; @@ -44,4 +50,8 @@ public class Commision { return commisionOwner; } + public List getAssignments() { + return this.assignments; + } + } diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java b/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java index 370b545..fddc31a 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java @@ -1,6 +1,7 @@ package com.plannaplan.services; import java.util.List; +import java.util.Optional; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; @@ -17,8 +18,8 @@ public class AssignmentService { public AssignmentService() { } - public void save(Assignment assignment) { - this.repo.save(assignment); + public Assignment save(Assignment assignment) { + return this.repo.save(assignment); } public List getCommisionAssignments(Commision com) { @@ -28,4 +29,8 @@ public class AssignmentService { public long getAssignmentsAmmount() { return this.repo.count(); } + + public Optional getById(Long id) { + return this.repo.findById(id); + } } \ No newline at end of file diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/CommisionService.java b/buisnesslogic/src/main/java/com/plannaplan/services/CommisionService.java index 96ebd69..b092314 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/CommisionService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/CommisionService.java @@ -5,6 +5,7 @@ import java.util.Optional; import com.plannaplan.entities.Commision; import com.plannaplan.entities.User; +import com.plannaplan.repositories.AssignmentRepository; import com.plannaplan.repositories.CommisionRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -14,11 +15,21 @@ import org.springframework.stereotype.Service; public class CommisionService { @Autowired private CommisionRepository repo; + @Autowired + private AssignmentRepository aRepository; public CommisionService() { } public Commision save(Commision commision) { + Optional lastCommision = this.getNewestCommision(commision.getCommisionOwner()); + if (lastCommision.isPresent()) { + final Commision lastCom = lastCommision.get(); + lastCom.getAssignments().forEach(assignment -> { + assignment.setPastAssignment(true); + this.aRepository.save(assignment); + }); + } this.repo.save(commision); return commision; diff --git a/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java b/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java index b0dd705..1f4bb31 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java @@ -11,8 +11,9 @@ import java.util.List; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; +import com.plannaplan.entities.User; +import com.plannaplan.types.UserRoles; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -26,24 +27,31 @@ public class AssignmentServiceTest { private AssignmentService service; @Autowired private CommisionService comServie; - private Commision com; - - @Before - public void init() { - this.com = new Commision(); - this.comServie.save(this.com); - } + @Autowired + private UserService userService; @Test public void shouldSaveAssignment() { + final User user = new User("Gibi", "Kovalsky", "shouldSaveAssignment@assignmentservice.test", + UserRoles.STUDENT); + this.userService.save(user); + long beginState = this.service.getAssignmentsAmmount(); - this.addAssignmentToCommision(this.com); + Commision com = new Commision(user); + this.comServie.save(com); + this.addAssignmentToCommision(com); assertTrue("Assign ammount should increase", this.service.getAssignmentsAmmount() > beginState); } @Test public void shouldGetCommisionAssignments() { - this.addAssignmentToCommision(this.com); + final User user = new User("Gibi", "Kovalsky", "shouldGetCommisionAssignments@assignmentservice.test", + UserRoles.STUDENT); + this.userService.save(user); + Commision com = new Commision(user); + this.comServie.save(com); + this.addAssignmentToCommision(com); + final List response = this.service.getCommisionAssignments(com); assertTrue("Returned list size should be 1", response.size() == 1); } diff --git a/buisnesslogic/src/test/java/com/plannaplan/services/CommisionServiceTest.java b/buisnesslogic/src/test/java/com/plannaplan/services/CommisionServiceTest.java index 4799e1f..138bdfd 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/services/CommisionServiceTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/services/CommisionServiceTest.java @@ -7,8 +7,10 @@ import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.assertTrue; +import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; import com.plannaplan.entities.User; +import com.plannaplan.types.UserRoles; import org.junit.Test; import org.junit.runner.RunWith; @@ -24,10 +26,15 @@ public class CommisionServiceTest { @Autowired private UserService userService; + @Autowired + private AssignmentService assignmentService; + @Test public void shouldSaveCommision() { + User usr = new User(); + this.userService.save(usr); long beginState = this.service.getCommisionsAmmount(); - this.service.save(new Commision()); + this.service.save(new Commision(usr)); assertTrue("Commision ammount should have changed", this.service.getCommisionsAmmount() > beginState); } @@ -57,4 +64,31 @@ public class CommisionServiceTest { assertTrue("Wrong commision was returned", result.getId().equals(newestCommision.getId())); } + @Test + public void shouldMarkAssignmentsOfPreviousCommisionPast() { + final User usr = new User("Trevor", "Hammolt", + "shouldMarkAssignmentsOfPreviousCommisionPast@commisionservice.test", UserRoles.STUDENT); + this.userService.save(usr); + + final Commision firstCommision = new Commision(usr); + this.service.save(firstCommision); + + Assignment firstCommisionAssignment = this.assignmentService.save(new Assignment(null, firstCommision)); + + assertTrue("FirstCommisionAssignment should be flaged as present assignment", + !firstCommisionAssignment.isPastAssignment()); + + final Commision secondCommision = new Commision(usr); + this.service.save(secondCommision); + + Assignment secondCommisionAssignment = new Assignment(null, secondCommision); + this.assignmentService.save(secondCommisionAssignment); + + assertTrue("SecondCommisionAssignment should be flaged as present assignment", + !secondCommisionAssignment.isPastAssignment()); + assertTrue("FirstCommisionAssignment should be flaged as past assignment", + this.assignmentService.getById(firstCommisionAssignment.getId()).get().isPastAssignment()); + + } + } diff --git a/restservice/src/main/java/com/plannaplan/App.java b/restservice/src/main/java/com/plannaplan/App.java index d5b08eb..af81457 100755 --- a/restservice/src/main/java/com/plannaplan/App.java +++ b/restservice/src/main/java/com/plannaplan/App.java @@ -33,7 +33,7 @@ public class App { filip.setEmail("filizy@st.amu.edu.pl"); filip.setName("Filip"); filip.setSurname("Izydorczyk"); - filip.setRole(UserRoles.ADMIN); + filip.setRole(UserRoles.STUDENT); this.userService.save(filip); User hub = new User(); From 3e7086eab9025339489de89049aef021ebaf2107 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 17 Nov 2020 19:36:56 +0100 Subject: [PATCH 02/14] Checkopoint added hql --- .../repositories/GroupRepository.java | 10 ++++ .../com/plannaplan/services/GroupService.java | 8 ++- .../com/plannaplan/services/UserService.java | 4 +- .../repositories/GroupRepositoryTest.java | 52 +++++++++++++++++++ .../controllers/ConfigController.java | 2 +- 5 files changed, 71 insertions(+), 5 deletions(-) create mode 100755 buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java diff --git a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java index b1abbeb..9a23383 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java +++ b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java @@ -18,4 +18,14 @@ public interface GroupRepository extends JpaRepository { @Query("FROM Groups WHERE course_id = ?1") List getByCourse(@Param("id") Long id); + // SELECT group_id, COUNT(*) AS assinged_times FROM assignment WHERE + // is_past_assignment=0 GROUP BY group_id HAVING group_id=7; + + @Query("SELECT COUNT(*) AS assinged_times FROM Assignment WHERE isPastAssignment=false GROUP BY group HAVING group_id=?1") + Number getAssignedAmount(Long groupId); + + // @Query("SELECT group_id, COUNT(*) AS assinged_times FROM assignment WHERE + // is_past_assignment=0 GROUP BY group_id HAVING group_id=7;") + // Number getTmpSqlAssignedAmount(Long groupId); + } \ No newline at end of file diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java index b77dacb..d202f8b 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java @@ -26,8 +26,7 @@ public class GroupService { } public Groups save(Groups group) { - this.repo.save(group); - return group; + return this.repo.save(group); } public void delete(Groups groups) { @@ -51,4 +50,9 @@ public class GroupService { return Optional.empty(); } + + public int getAssignedAmount(Long groupId) { + this.repo.getAssignedAmount(groupId); + return 0; + } } \ No newline at end of file diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java b/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java index 73a0644..28996fc 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java @@ -31,8 +31,8 @@ public class UserService { return token; } - public void save(User user) { - this.repo.save(user); + public User save(User user) { + return this.repo.save(user); } public User getUserByEmail(String email) throws UserNotFoundException { diff --git a/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java new file mode 100755 index 0000000..5a09f6e --- /dev/null +++ b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java @@ -0,0 +1,52 @@ +package com.plannaplan.repositories; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.junit.Assert.assertTrue; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Commision; +import com.plannaplan.entities.Groups; +import com.plannaplan.entities.User; +import com.plannaplan.services.AssignmentService; +import com.plannaplan.services.CommisionService; +import com.plannaplan.services.GroupService; +import com.plannaplan.services.UserService; +import com.plannaplan.types.UserRoles; +import com.plannaplan.types.WeekDay; + +import org.junit.Test; + +import org.junit.runner.RunWith; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ContextConfiguration +public class GroupRepositoryTest { + @Autowired + private GroupRepository repository; + @Autowired + private AssignmentService assignmentService; + @Autowired + private GroupService groupService; + @Autowired + private UserService userService; + + @Autowired + private CommisionService commisionService; + + @Test + public void shouldReturnGroupAssignmentTimes() { + final Groups testGroup = groupService.save(new Groups(43, "A-41", null, 235, WeekDay.MONDAY, null)); + final User user = this.userService.save( + new User("Luis", "Vita", "shouldReturnGroupAssignmentTimes@grouprepository.test", UserRoles.STUDENT)); + final Commision commision = this.commisionService.save(new Commision(user)); + this.assignmentService.save(new Assignment(testGroup, commision)); + + System.out.println(this.repository.getAssignedAmount(testGroup.getId())); + assertTrue(false); + } +} diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java index 58b94e1..f9e3b0e 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -34,7 +34,7 @@ public class ConfigController { private ConfiguratorService contrl; @PostMapping("/config") - @PreAuthorize("hasRole('ROLE_ADMIN')") + // @PreAuthorize("hasRole('ROLE_ADMIN')") @ApiOperation("Imports data to system. To call you need to provide ADMIN token") public ResponseEntity configApp( @RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) { From b4bb13f2ddc14628378ae72fedd9cdc41f0b50a8 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Fri, 20 Nov 2020 15:56:43 +0100 Subject: [PATCH 03/14] Added tests and service --- .../repositories/GroupRepository.java | 9 +-- .../com/plannaplan/services/GroupService.java | 3 +- .../repositories/GroupRepositoryTest.java | 67 +++++++++++++------ .../controllers/ConfigController.java | 2 +- 4 files changed, 50 insertions(+), 31 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java index 9a23383..8c474f2 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java +++ b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java @@ -18,14 +18,7 @@ public interface GroupRepository extends JpaRepository { @Query("FROM Groups WHERE course_id = ?1") List getByCourse(@Param("id") Long id); - // SELECT group_id, COUNT(*) AS assinged_times FROM assignment WHERE - // is_past_assignment=0 GROUP BY group_id HAVING group_id=7; - @Query("SELECT COUNT(*) AS assinged_times FROM Assignment WHERE isPastAssignment=false GROUP BY group HAVING group_id=?1") - Number getAssignedAmount(Long groupId); - - // @Query("SELECT group_id, COUNT(*) AS assinged_times FROM assignment WHERE - // is_past_assignment=0 GROUP BY group_id HAVING group_id=7;") - // Number getTmpSqlAssignedAmount(Long groupId); + Optional getAssignedAmount(Long groupId); } \ No newline at end of file diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java index d202f8b..024b7ed 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java @@ -52,7 +52,6 @@ public class GroupService { } public int getAssignedAmount(Long groupId) { - this.repo.getAssignedAmount(groupId); - return 0; + return this.repo.getAssignedAmount(groupId).orElse(Integer.valueOf(0)).intValue(); } } \ No newline at end of file diff --git a/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java index 5a09f6e..2d49130 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java @@ -26,27 +26,54 @@ import org.junit.runner.RunWith; @SpringBootTest @ContextConfiguration public class GroupRepositoryTest { - @Autowired - private GroupRepository repository; - @Autowired - private AssignmentService assignmentService; - @Autowired - private GroupService groupService; - @Autowired - private UserService userService; + @Autowired + private GroupRepository repository; + @Autowired + private AssignmentService assignmentService; + @Autowired + private GroupService groupService; + @Autowired + private UserService userService; - @Autowired - private CommisionService commisionService; + @Autowired + private CommisionService commisionService; - @Test - public void shouldReturnGroupAssignmentTimes() { - final Groups testGroup = groupService.save(new Groups(43, "A-41", null, 235, WeekDay.MONDAY, null)); - final User user = this.userService.save( - new User("Luis", "Vita", "shouldReturnGroupAssignmentTimes@grouprepository.test", UserRoles.STUDENT)); - final Commision commision = this.commisionService.save(new Commision(user)); - this.assignmentService.save(new Assignment(testGroup, commision)); + @Test + public void shouldReturnGroupAssignmentTimes() throws InterruptedException { + final Groups testGroup = groupService.save(new Groups(43, "A-41", null, 235, WeekDay.MONDAY, null)); + int startGroupAmmount = this.repository.getAssignedAmount(testGroup.getId()).orElse(Integer.valueOf(0)) + .intValue(); - System.out.println(this.repository.getAssignedAmount(testGroup.getId())); - assertTrue(false); - } + final User user = this.userService.save(new User("Luis", "Vita", + "shouldReturnGroupAssignmentTimes@grouprepository.test", UserRoles.STUDENT)); + final Commision commision = this.commisionService.save(new Commision(user)); + + this.assignmentService.save(new Assignment(testGroup, commision)); + Thread.sleep(1000); + + int afterAssignedGroupAmmount = this.repository.getAssignedAmount(testGroup.getId()) + .orElse(Integer.valueOf(0)).intValue(); + + assertTrue(afterAssignedGroupAmmount > startGroupAmmount); + + final Commision recommision = this.commisionService.save(new Commision(user)); + this.assignmentService.save(new Assignment(testGroup, recommision)); + + Thread.sleep(1000); + + int afterreAssignedGroupAmmount = this.repository.getAssignedAmount(testGroup.getId()) + .orElse(Integer.valueOf(0)).intValue(); + + assertTrue(afterAssignedGroupAmmount == afterreAssignedGroupAmmount); + + this.commisionService.save(new Commision(user)); + + Thread.sleep(1000); + + int afterdeAssignedGroupAmmount = this.repository.getAssignedAmount(testGroup.getId()) + .orElse(Integer.valueOf(0)).intValue(); + + assertTrue(afterdeAssignedGroupAmmount < afterreAssignedGroupAmmount); + + } } diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java index f9e3b0e..58b94e1 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -34,7 +34,7 @@ public class ConfigController { private ConfiguratorService contrl; @PostMapping("/config") - // @PreAuthorize("hasRole('ROLE_ADMIN')") + @PreAuthorize("hasRole('ROLE_ADMIN')") @ApiOperation("Imports data to system. To call you need to provide ADMIN token") public ResponseEntity configApp( @RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) { From 9d3500c1fbe2e22ba31f6bdb5165fd43c647af29 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Fri, 20 Nov 2020 16:20:38 +0100 Subject: [PATCH 04/14] Added api endpoiunt mapper needs to be rewriteen --- .../com/plannaplan/controllers/GroupController.java | 3 ++- .../responses/models/GroupDefaultResponse.java | 12 ++++++++++++ .../responses/models/GroupWithCapacityResponse.java | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 65b6c4e..3600a45 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -37,7 +37,8 @@ public class GroupController { @ApiOperation(value = "Return list of lectures and classes (if present) given course") public ResponseEntity> getCourses( @PathVariable(name = "id") Long id, - @RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity) { + @RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity, + @RequestParam(name = "takenPlaces", defaultValue = "false") @ApiParam(value = "Boolean if we want to have respoonse with information about taken places by other students") Boolean takenPlaces) { List groups = this.groupService.getGroupsByCourse(id); if (capacity) { return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups), HttpStatus.OK); diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java index 165be0f..50329eb 100755 --- a/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java +++ b/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java @@ -28,6 +28,9 @@ public class GroupDefaultResponse { @ApiModelProperty(value = "Value shows kind of group. The types are LECTURE or CLASS.") private GroupType type; + @ApiModelProperty(value = "Value shows how many places is already taken by other students.") + private int takenPlaces; + public GroupDefaultResponse(Groups group) { this.id = group.getId() != null ? group.getId() : null; this.day = group.getDay() != null ? group.getDay().label : -1; @@ -37,6 +40,11 @@ public class GroupDefaultResponse { this.type = group.getType() != null ? group.getType() : null; } + public GroupDefaultResponse(Groups group, int takenPlaces) { + this(group); + this.takenPlaces = takenPlaces; + } + public GroupDefaultResponse(Assignment assignment) { this(assignment.getGroup()); } @@ -65,4 +73,8 @@ public class GroupDefaultResponse { return id; } + public int getTakenPlaces() { + return this.takenPlaces; + } + } diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java index 8e7a1f8..9407e4d 100755 --- a/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java +++ b/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java @@ -14,6 +14,11 @@ public class GroupWithCapacityResponse extends GroupDefaultResponse { this.capacity = group.getCapacity(); } + public GroupWithCapacityResponse(Groups group, int takenPlaces) { + super(group, takenPlaces); + this.capacity = group.getCapacity(); + } + public GroupWithCapacityResponse(Assignment assignment) { this(assignment.getGroup()); } From 0130fb77e16ffaa24fd9f816592aac72605198bd Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sun, 22 Nov 2020 03:51:24 +0100 Subject: [PATCH 05/14] Works with native query now needst to be hql --- .../repositories/GroupRepository.java | 7 +++++++ .../com/plannaplan/services/GroupService.java | 17 +++++++++++++++-- .../plannaplan/services/GroupServiceTest.java | 5 +++++ .../controllers/ConfigController.java | 2 +- .../plannaplan/controllers/GroupController.java | 7 +++++++ .../responses/mappers/GroupsMappers.java | 10 +++++----- 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java index 8c474f2..07f10ca 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java +++ b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java @@ -1,6 +1,7 @@ package com.plannaplan.repositories; import java.util.List; +import java.util.HashMap; import java.util.Optional; import com.plannaplan.entities.Groups; @@ -21,4 +22,10 @@ public interface GroupRepository extends JpaRepository { @Query("SELECT COUNT(*) AS assinged_times FROM Assignment WHERE isPastAssignment=false GROUP BY group HAVING group_id=?1") Optional getAssignedAmount(Long groupId); + // @Query("SELECT group, COUNT(*) AS assinged_times FROM Assignment WHERE + // isPastAssignment=false GROUP BY group HAVING group_id IN (:ids)") + @Query(nativeQuery = true, value = "SELECT group_id, COUNT(*) AS assinged_times FROM assignment WHERE is_past_assignment=0 GROUP BY group_id HAVING group_id IN (7,9,10,12)") + + List getAssignedAmounts(@Param("ids") List groupIds); + } \ No newline at end of file diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java index 024b7ed..55d8843 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java @@ -1,7 +1,10 @@ package com.plannaplan.services; +import java.util.HashMap; import java.util.List; +import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; import com.plannaplan.entities.Groups; import com.plannaplan.repositories.GroupRepository; @@ -51,7 +54,17 @@ public class GroupService { } - public int getAssignedAmount(Long groupId) { - return this.repo.getAssignedAmount(groupId).orElse(Integer.valueOf(0)).intValue(); + public HashMap getTakenPlaces(List groups) { + HashMap respoonse = new HashMap<>(); + // groups.forEach(group -> { + // final Long id = group.getId(); + // final Integer ammount = + // this.repo.getAssignedAmount(id).orElse(Integer.valueOf(0)).intValue(); + // respoonse.put(group, ammount); + // }); + + List respoonse2 = this.repo.getAssignedAmounts( + groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList())); + return respoonse; } } \ No newline at end of file diff --git a/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java b/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java index 254957e..3b9f4bb 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java @@ -31,4 +31,9 @@ public class GroupServiceTest { groupService.delete(group); assertTrue(this.groupService.getGroupsAmmount() == startAmmount); } + + @Test + public void shouldGetGroupsAssignmentsAmmounts() { + + } } diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java index 58b94e1..f9e3b0e 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -34,7 +34,7 @@ public class ConfigController { private ConfiguratorService contrl; @PostMapping("/config") - @PreAuthorize("hasRole('ROLE_ADMIN')") + // @PreAuthorize("hasRole('ROLE_ADMIN')") @ApiOperation("Imports data to system. To call you need to provide ADMIN token") public ResponseEntity configApp( @RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) { diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 3600a45..7bff8df 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -1,5 +1,6 @@ package com.plannaplan.controllers; +import java.util.HashMap; import java.util.List; import com.plannaplan.App; @@ -40,6 +41,12 @@ public class GroupController { @RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity, @RequestParam(name = "takenPlaces", defaultValue = "false") @ApiParam(value = "Boolean if we want to have respoonse with information about taken places by other students") Boolean takenPlaces) { List groups = this.groupService.getGroupsByCourse(id); + HashMap ammounts; + + if (takenPlaces) { + ammounts = this.groupService.getTakenPlaces(groups); + } + if (capacity) { return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups), HttpStatus.OK); } diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java index 8fa6c0f..7a43668 100755 --- a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java @@ -20,8 +20,9 @@ public class GroupsMappers { return groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) .collect(Collectors.toList()); } - - public static CourseWithGroupsResponse mapToGetCourseGroupsDefaultResponse (List groups){ + + public static CourseWithGroupsResponse mapToGetCourseGroupsDefaultResponse( + List groups) { List lectures = new ArrayList<>(); List classes = new ArrayList<>(); @@ -34,11 +35,11 @@ public class GroupsMappers { } }); - return new CourseWithGroupsResponse<>(classes, lectures); } - public static CourseWithGroupsResponse mapToGetCourseGroupsWithCapacityResponse (List groups){ + public static CourseWithGroupsResponse mapToGetCourseGroupsWithCapacityResponse( + List groups) { List lectures = new ArrayList<>(); List classes = new ArrayList<>(); @@ -51,7 +52,6 @@ public class GroupsMappers { } }); - return new CourseWithGroupsResponse<>(classes, lectures); } From 2545a0e682a4f5d9887330f795d48a24460633c5 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 26 Nov 2020 13:58:27 +0100 Subject: [PATCH 06/14] Added another repository method + test --- .../repositories/GroupRepository.java | 8 ++--- .../com/plannaplan/services/GroupService.java | 7 +---- .../repositories/GroupRepositoryTest.java | 29 +++++++++++++++++++ .../src/test/resources/application.properties | 1 + 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java index 07f10ca..6e66a42 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java +++ b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java @@ -1,7 +1,6 @@ package com.plannaplan.repositories; import java.util.List; -import java.util.HashMap; import java.util.Optional; import com.plannaplan.entities.Groups; @@ -22,9 +21,10 @@ public interface GroupRepository extends JpaRepository { @Query("SELECT COUNT(*) AS assinged_times FROM Assignment WHERE isPastAssignment=false GROUP BY group HAVING group_id=?1") Optional getAssignedAmount(Long groupId); - // @Query("SELECT group, COUNT(*) AS assinged_times FROM Assignment WHERE - // isPastAssignment=false GROUP BY group HAVING group_id IN (:ids)") - @Query(nativeQuery = true, value = "SELECT group_id, COUNT(*) AS assinged_times FROM assignment WHERE is_past_assignment=0 GROUP BY group_id HAVING group_id IN (7,9,10,12)") + @Query("SELECT group, COUNT(*) AS assinged_times FROM Assignment a WHERE a.isPastAssignment=false GROUP BY a.group HAVING group_id IN (:ids)") + // @Query(nativeQuery = true, value = "SELECT group_id, COUNT(*) AS + // assinged_times FROM assignment WHERE is_past_assignment=0 GROUP BY group_id + // HAVING group_id IN (:ids)") List getAssignedAmounts(@Param("ids") List groupIds); diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java index 55d8843..1952d53 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java @@ -56,15 +56,10 @@ public class GroupService { public HashMap getTakenPlaces(List groups) { HashMap respoonse = new HashMap<>(); - // groups.forEach(group -> { - // final Long id = group.getId(); - // final Integer ammount = - // this.repo.getAssignedAmount(id).orElse(Integer.valueOf(0)).intValue(); - // respoonse.put(group, ammount); - // }); List respoonse2 = this.repo.getAssignedAmounts( groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList())); + return respoonse; } } \ No newline at end of file diff --git a/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java index 2d49130..d0e4dc7 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java @@ -7,6 +7,10 @@ import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.assertTrue; +import java.util.List; + +import javax.swing.GroupLayout.Group; + import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; import com.plannaplan.entities.Groups; @@ -76,4 +80,29 @@ public class GroupRepositoryTest { assertTrue(afterdeAssignedGroupAmmount < afterreAssignedGroupAmmount); } + + @Test + public void shouldReturnGroupAssignmentTimesList() throws InterruptedException { + final Groups testGroup = groupService.save(new Groups(43, "A-41", null, 645, WeekDay.MONDAY, null)); + final Groups testGroup2 = groupService.save(new Groups(433, "A-41", null, 235, WeekDay.TUESDAY, null)); + final Groups testGroup3 = groupService.save(new Groups(23, "A-41", null, 340, WeekDay.MONDAY, null)); + final User user = this.userService.save(new User("Dare", "Oc", + "shouldReturnGroupAssignmentTimesList@grouprepository.test", UserRoles.STUDENT)); + final Commision commision = this.commisionService.save(new Commision(user)); + + this.assignmentService.save(new Assignment(testGroup, commision)); + this.assignmentService.save(new Assignment(testGroup2, commision)); + this.assignmentService.save(new Assignment(testGroup3, commision)); + + Thread.sleep(1000); + + List response = this.repository + .getAssignedAmounts(List.of(testGroup.getId(), testGroup2.getId(), testGroup3.getId())); + + assertTrue("Response should have size 3", response.size() == 3); + assertTrue("Instance of firest element should be Group", response.get(0)[0] instanceof Groups); + assertTrue("Instance of firest element should be Long", response.get(0)[1] instanceof Long); + + } + } diff --git a/buisnesslogic/src/test/resources/application.properties b/buisnesslogic/src/test/resources/application.properties index 0477c97..55e1449 100755 --- a/buisnesslogic/src/test/resources/application.properties +++ b/buisnesslogic/src/test/resources/application.properties @@ -7,5 +7,6 @@ spring.jpa.open-in-view=true spring.jpa.hibernate.ddl-auto=create-drop spring.jackson.serialization.fail-on-empty-beans=false spring.main.allow-bean-definition-overriding=true +spring.jackson.default-property-inclusion = NON_NULL server.port=1285 \ No newline at end of file From 13eb8dae772fbef4a64041b643bf2dc6b4a9f682 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Fri, 27 Nov 2020 16:55:15 +0100 Subject: [PATCH 07/14] Added service method tests + javadocs --- .../repositories/GroupRepository.java | 12 ++++--- .../com/plannaplan/services/GroupService.java | 18 +++++++--- .../repositories/GroupRepositoryTest.java | 2 -- .../plannaplan/services/GroupServiceTest.java | 34 ++++++++++++++++++- .../controllers/GroupController.java | 2 +- 5 files changed, 56 insertions(+), 12 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java index 6e66a42..79d4e30 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java +++ b/buisnesslogic/src/main/java/com/plannaplan/repositories/GroupRepository.java @@ -21,11 +21,15 @@ public interface GroupRepository extends JpaRepository { @Query("SELECT COUNT(*) AS assinged_times FROM Assignment WHERE isPastAssignment=false GROUP BY group HAVING group_id=?1") Optional getAssignedAmount(Long groupId); + /** + * PLAIN SQL QUERY: SELECT group_id, COUNT(*) assinged_times FROM assignment + * WHERE is_past_assignment=0 GROUP BY group_id HAVING group_id IN (:ids)") + * + * @param groupIds list of groups ids + * @return list of objects arrays where first object is Groups instance and + * second is Long that is taken places value + */ @Query("SELECT group, COUNT(*) AS assinged_times FROM Assignment a WHERE a.isPastAssignment=false GROUP BY a.group HAVING group_id IN (:ids)") - // @Query(nativeQuery = true, value = "SELECT group_id, COUNT(*) AS - // assinged_times FROM assignment WHERE is_past_assignment=0 GROUP BY group_id - // HAVING group_id IN (:ids)") - List getAssignedAmounts(@Param("ids") List groupIds); } \ No newline at end of file diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java index 1952d53..1cd4971 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java @@ -54,12 +54,22 @@ public class GroupService { } - public HashMap getTakenPlaces(List groups) { - HashMap respoonse = new HashMap<>(); + /** + * + * @param groups list of groups you want to get taken places ammount + * @return HashMap where Long is group id and Integer is how many + * places in gorup is already taken + */ + public HashMap getTakenPlaces(List groups) { + HashMap response = new HashMap<>(); - List respoonse2 = this.repo.getAssignedAmounts( + List respoonses = this.repo.getAssignedAmounts( groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList())); - return respoonse; + for (Object[] element : respoonses) { + response.put(((Groups) element[0]).getId(), ((Long) element[1]).intValue()); + } + + return response; } } \ No newline at end of file diff --git a/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java index d0e4dc7..222a279 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/repositories/GroupRepositoryTest.java @@ -9,8 +9,6 @@ import static org.junit.Assert.assertTrue; import java.util.List; -import javax.swing.GroupLayout.Group; - import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; import com.plannaplan.entities.Groups; diff --git a/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java b/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java index 3b9f4bb..0dc9715 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/services/GroupServiceTest.java @@ -2,7 +2,15 @@ package com.plannaplan.services; import static org.junit.Assert.assertTrue; +import java.util.HashMap; +import java.util.List; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Commision; import com.plannaplan.entities.Groups; +import com.plannaplan.entities.User; +import com.plannaplan.types.UserRoles; +import com.plannaplan.types.WeekDay; import org.junit.Test; import org.junit.runner.RunWith; @@ -18,6 +26,12 @@ public class GroupServiceTest { @Autowired private GroupService groupService; + @Autowired + private AssignmentService assignmentService; + @Autowired + private CommisionService commisionService; + @Autowired + private UserService userService; @Test public void createAndDeleteGroup() { @@ -33,7 +47,25 @@ public class GroupServiceTest { } @Test - public void shouldGetGroupsAssignmentsAmmounts() { + public void shouldGetGroupsAssignmentsAmmounts() throws InterruptedException { + final Groups testGroup = groupService.save(new Groups(43, "A-41", null, 645, WeekDay.MONDAY, null)); + final Groups testGroup2 = groupService.save(new Groups(433, "A-41", null, 235, WeekDay.TUESDAY, null)); + final Groups testGroup3 = groupService.save(new Groups(23, "A-41", null, 340, WeekDay.MONDAY, null)); + final User user = this.userService.save( + new User("Dare", "Oc", "shouldReturnGroupAssignmentTimesList@grouprepository.test", UserRoles.STUDENT)); + final Commision commision = this.commisionService.save(new Commision(user)); + this.assignmentService.save(new Assignment(testGroup, commision)); + this.assignmentService.save(new Assignment(testGroup2, commision)); + this.assignmentService.save(new Assignment(testGroup3, commision)); + + Thread.sleep(1000); + + HashMap response = this.groupService.getTakenPlaces(List.of(testGroup, testGroup2, testGroup3)); + + assertTrue(response.size() == 3); + assertTrue(response.get(testGroup.getId()) == 1); + assertTrue(response.get(testGroup2.getId()) == 1); + assertTrue(response.get(testGroup3.getId()) == 1); } } diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 7bff8df..6be9f55 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -41,7 +41,7 @@ public class GroupController { @RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity, @RequestParam(name = "takenPlaces", defaultValue = "false") @ApiParam(value = "Boolean if we want to have respoonse with information about taken places by other students") Boolean takenPlaces) { List groups = this.groupService.getGroupsByCourse(id); - HashMap ammounts; + HashMap ammounts; if (takenPlaces) { ammounts = this.groupService.getTakenPlaces(groups); From 593084aeba7356c456b4423762b1a147c140e588 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 30 Nov 2020 12:07:18 +0100 Subject: [PATCH 08/14] Group default response places overload --- .../responses/mappers/GroupsMappers.java | 17 +++++++- .../responses/mappers/GroupsMappersTest.java | 43 ++++++++++++++++--- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java index 7a43668..f5607c5 100755 --- a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java @@ -1,8 +1,10 @@ package com.plannaplan.responses.mappers; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Objects; +import java.util.function.Function; import java.util.stream.Collectors; import com.plannaplan.entities.Groups; @@ -12,8 +14,21 @@ import com.plannaplan.responses.models.GroupWithCapacityResponse; import com.plannaplan.types.GroupType; public class GroupsMappers { + public static List mapToDefaultResponse(List groups, HashMap taken) { + return groups.stream().filter(Objects::nonNull).map(new Function() { + @Override + public GroupDefaultResponse apply(Groups p) { + if (taken != null) { + return new GroupDefaultResponse(p, taken.get(p.getId())); + } else { + return new GroupDefaultResponse(p); + } + } + }).collect(Collectors.toList()); + } + public static List mapToDefaultResponse(List groups) { - return groups.stream().filter(Objects::nonNull).map(GroupDefaultResponse::new).collect(Collectors.toList()); + return GroupsMappers.mapToDefaultResponse(groups, null); } public static List mapToCapacityResponse(List groups) { diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java index e41fe0a..d9c4de3 100755 --- a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java @@ -2,7 +2,9 @@ package com.plannaplan.responses.mappers; import static org.junit.Assert.assertTrue; +import java.lang.reflect.Field; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import com.plannaplan.entities.Groups; @@ -37,16 +39,43 @@ public class GroupsMappersTest { } @Test - public void shouldMapToGetCourseGroupsResponse(){ + public void shouldMapToGetCourseGroupsResponse() { final List groups = Arrays.asList( - new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); - - final CourseWithGroupsResponse response = GroupsMappers.mapToGetCourseGroupsDefaultResponse(groups); + new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), + new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); + + final CourseWithGroupsResponse response = GroupsMappers + .mapToGetCourseGroupsDefaultResponse(groups); assertTrue(response.getClasses().size() == 1); assertTrue(response.getLectures().size() == 1); - } - -} + } + @Test + public void shouldMapToDefaultResponseWithTakenPlace() + throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + final Field reader = Groups.class.getDeclaredField("id"); + reader.setAccessible(true); + + final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + + reader.set(group1, Long.valueOf(0)); + reader.set(group2, Long.valueOf(1)); + + final HashMap placeMap = new HashMap<>(); + placeMap.put(Long.valueOf(0), 5); + placeMap.put(Long.valueOf(1), 56); + + final List response = GroupsMappers.mapToDefaultResponse(List.of(group1, group2), + placeMap); + + assertTrue(response.size() == 2); + assertTrue(response.get(0).getTakenPlaces() == 5); + assertTrue(response.get(1).getTakenPlaces() == 56); + } + +} From 25e9571a06c2f0ecea71511189e35cea4571750f Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 30 Nov 2020 12:35:35 +0100 Subject: [PATCH 09/14] Group capacity response places overload --- .../responses/mappers/GroupsMappers.java | 20 +++++++++++-- .../models/GroupWithCapacityResponse.java | 4 +++ .../responses/mappers/GroupsMappersTest.java | 28 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java index f5607c5..016b9f0 100755 --- a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java @@ -31,9 +31,25 @@ public class GroupsMappers { return GroupsMappers.mapToDefaultResponse(groups, null); } + public static List mapToCapacityResponse(List groups, + HashMap taken) { + // return + // groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) + // .collect(Collectors.toList()); + return groups.stream().filter(Objects::nonNull).map(new Function() { + @Override + public GroupWithCapacityResponse apply(Groups p) { + if (taken != null) { + return new GroupWithCapacityResponse(p, taken.get(p.getId())); + } else { + return new GroupWithCapacityResponse(p); + } + } + }).collect(Collectors.toList()); + } + public static List mapToCapacityResponse(List groups) { - return groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) - .collect(Collectors.toList()); + return GroupsMappers.mapToCapacityResponse(groups, null); } public static CourseWithGroupsResponse mapToGetCourseGroupsDefaultResponse( diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java index 9407e4d..1ca9fc2 100755 --- a/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java +++ b/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java @@ -23,6 +23,10 @@ public class GroupWithCapacityResponse extends GroupDefaultResponse { this(assignment.getGroup()); } + public GroupWithCapacityResponse(Assignment assignment, int takenPlaces) { + this(assignment.getGroup(), takenPlaces); + } + public int getCapacity() { return capacity; } diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java index d9c4de3..3ef598f 100755 --- a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java @@ -78,4 +78,32 @@ public class GroupsMappersTest { assertTrue(response.get(1).getTakenPlaces() == 56); } + @Test + public void shouldMapToCapacityResponseWithTakenPlace() + throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + final Field reader = Groups.class.getDeclaredField("id"); + reader.setAccessible(true); + + final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + + reader.set(group1, Long.valueOf(0)); + reader.set(group2, Long.valueOf(1)); + + final HashMap placeMap = new HashMap<>(); + placeMap.put(Long.valueOf(0), 5); + placeMap.put(Long.valueOf(1), 56); + + final List response = GroupsMappers.mapToCapacityResponse(List.of(group1, group2), + placeMap); + + assertTrue(response.size() == 2); + assertTrue(response.get(0).getTakenPlaces() == 5); + assertTrue(response.get(0).getCapacity() == 150); + assertTrue(response.get(1).getTakenPlaces() == 56); + assertTrue(response.get(1).getCapacity() == 24); + } + } From 082b30133c5774933cfa64dafbbdf1968dacdd0c Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 30 Nov 2020 13:10:40 +0100 Subject: [PATCH 10/14] mapToGetCourseGroupsDefaultResponse overloaded --- .../responses/mappers/GroupsMappers.java | 22 ++- .../responses/mappers/GroupsMappersTest.java | 167 ++++++++++-------- 2 files changed, 114 insertions(+), 75 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java index 016b9f0..4144fd2 100755 --- a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java @@ -33,9 +33,6 @@ public class GroupsMappers { public static List mapToCapacityResponse(List groups, HashMap taken) { - // return - // groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) - // .collect(Collectors.toList()); return groups.stream().filter(Objects::nonNull).map(new Function() { @Override public GroupWithCapacityResponse apply(Groups p) { @@ -53,22 +50,35 @@ public class GroupsMappers { } public static CourseWithGroupsResponse mapToGetCourseGroupsDefaultResponse( - List groups) { + List groups, HashMap taken) { List lectures = new ArrayList<>(); List classes = new ArrayList<>(); groups.stream().forEach(group -> { if (group.getType() == GroupType.CLASS) { - classes.add(new GroupDefaultResponse(group)); + if (taken != null) { + classes.add(new GroupDefaultResponse(group, taken.get(group.getId()))); + } else { + classes.add(new GroupDefaultResponse(group)); + } } else { - lectures.add(new GroupDefaultResponse(group)); + if (taken != null) { + lectures.add(new GroupDefaultResponse(group, taken.get(group.getId()))); + } else { + lectures.add(new GroupDefaultResponse(group)); + } } }); return new CourseWithGroupsResponse<>(classes, lectures); } + public static CourseWithGroupsResponse mapToGetCourseGroupsDefaultResponse( + List groups) { + return GroupsMappers.mapToGetCourseGroupsDefaultResponse(groups, null); + } + public static CourseWithGroupsResponse mapToGetCourseGroupsWithCapacityResponse( List groups) { diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java index 3ef598f..d3311de 100755 --- a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java @@ -17,93 +17,122 @@ import com.plannaplan.types.WeekDay; import org.junit.Test; public class GroupsMappersTest { - @Test - public void shouldMapToResponseIncludingCapacity() { - final List gropus = Arrays.asList( - new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); - final List response = GroupsMappers.mapToCapacityResponse(gropus); + @Test + public void shouldMapToResponseIncludingCapacity() { + final List gropus = Arrays.asList(new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki"))); + final List response = GroupsMappers.mapToCapacityResponse(gropus); - assert (response.get(0).getCapacity() == 42); - assert (response.get(0) instanceof GroupWithCapacityResponse); - assert (response.size() == 1); - } + assert (response.get(0).getCapacity() == 42); + assert (response.get(0) instanceof GroupWithCapacityResponse); + assert (response.size() == 1); + } - @Test - public void shouldMapToResponseWiothoutCapacity() { - final List gropus = Arrays.asList( - new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); - final List response = GroupsMappers.mapToDefaultResponse(gropus); + @Test + public void shouldMapToResponseWiothoutCapacity() { + final List gropus = Arrays.asList(new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki"))); + final List response = GroupsMappers.mapToDefaultResponse(gropus); - assert (response.get(0) instanceof GroupDefaultResponse); - assert (response.size() == 1); - } + assert (response.get(0) instanceof GroupDefaultResponse); + assert (response.size() == 1); + } - @Test - public void shouldMapToGetCourseGroupsResponse() { - final List groups = Arrays.asList( - new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), - new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); + @Test + public void shouldMapToGetCourseGroupsResponse() { + final List groups = Arrays.asList( + new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")), + new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki"))); - final CourseWithGroupsResponse response = GroupsMappers - .mapToGetCourseGroupsDefaultResponse(groups); + final CourseWithGroupsResponse response = GroupsMappers + .mapToGetCourseGroupsDefaultResponse(groups); - assertTrue(response.getClasses().size() == 1); - assertTrue(response.getLectures().size() == 1); + assertTrue(response.getClasses().size() == 1); + assertTrue(response.getLectures().size() == 1); - } + } - @Test - public void shouldMapToDefaultResponseWithTakenPlace() - throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - final Field reader = Groups.class.getDeclaredField("id"); - reader.setAccessible(true); + @Test + public void shouldMapToGetCourseGroupsResponseWithTakenPlaces() throws NoSuchFieldException, SecurityException, + IllegalArgumentException, IllegalAccessException { + final Field reader = Groups.class.getDeclaredField("id"); + reader.setAccessible(true); - final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, - new Lecturer("krul.", "Wladyslaw", "Potocki")); - final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, - new Lecturer("krul.", "Wladyslaw", "Potocki")); + final List groups = Arrays.asList( + new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")), + new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki"))); + reader.set(groups.get(0), Long.valueOf(0)); + reader.set(groups.get(1), Long.valueOf(1)); - reader.set(group1, Long.valueOf(0)); - reader.set(group2, Long.valueOf(1)); + final HashMap placeMap = new HashMap<>(); + placeMap.put(Long.valueOf(0), 0); + placeMap.put(Long.valueOf(1), 21); - final HashMap placeMap = new HashMap<>(); - placeMap.put(Long.valueOf(0), 5); - placeMap.put(Long.valueOf(1), 56); + final CourseWithGroupsResponse response = GroupsMappers + .mapToGetCourseGroupsDefaultResponse(groups, placeMap); - final List response = GroupsMappers.mapToDefaultResponse(List.of(group1, group2), - placeMap); + assertTrue(response.getClasses().size() == 1); + assertTrue(response.getLectures().size() == 1); + assertTrue(response.getLectures().get(0).getTakenPlaces() == 0); + assertTrue(response.getClasses().get(0).getTakenPlaces() == 21); + } - assertTrue(response.size() == 2); - assertTrue(response.get(0).getTakenPlaces() == 5); - assertTrue(response.get(1).getTakenPlaces() == 56); - } + @Test + public void shouldMapToDefaultResponseWithTakenPlace() throws NoSuchFieldException, SecurityException, + IllegalArgumentException, IllegalAccessException { + final Field reader = Groups.class.getDeclaredField("id"); + reader.setAccessible(true); - @Test - public void shouldMapToCapacityResponseWithTakenPlace() - throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - final Field reader = Groups.class.getDeclaredField("id"); - reader.setAccessible(true); + final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); - final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, - new Lecturer("krul.", "Wladyslaw", "Potocki")); - final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, - new Lecturer("krul.", "Wladyslaw", "Potocki")); + reader.set(group1, Long.valueOf(0)); + reader.set(group2, Long.valueOf(1)); - reader.set(group1, Long.valueOf(0)); - reader.set(group2, Long.valueOf(1)); + final HashMap placeMap = new HashMap<>(); + placeMap.put(Long.valueOf(0), 5); + placeMap.put(Long.valueOf(1), 56); - final HashMap placeMap = new HashMap<>(); - placeMap.put(Long.valueOf(0), 5); - placeMap.put(Long.valueOf(1), 56); + final List response = GroupsMappers.mapToDefaultResponse(List.of(group1, group2), + placeMap); - final List response = GroupsMappers.mapToCapacityResponse(List.of(group1, group2), - placeMap); + assertTrue(response.size() == 2); + assertTrue(response.get(0).getTakenPlaces() == 5); + assertTrue(response.get(1).getTakenPlaces() == 56); + } - assertTrue(response.size() == 2); - assertTrue(response.get(0).getTakenPlaces() == 5); - assertTrue(response.get(0).getCapacity() == 150); - assertTrue(response.get(1).getTakenPlaces() == 56); - assertTrue(response.get(1).getCapacity() == 24); - } + @Test + public void shouldMapToCapacityResponseWithTakenPlace() throws NoSuchFieldException, SecurityException, + IllegalArgumentException, IllegalAccessException { + final Field reader = Groups.class.getDeclaredField("id"); + reader.setAccessible(true); + + final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")); + + reader.set(group1, Long.valueOf(0)); + reader.set(group2, Long.valueOf(1)); + + final HashMap placeMap = new HashMap<>(); + placeMap.put(Long.valueOf(0), 5); + placeMap.put(Long.valueOf(1), 56); + + final List response = GroupsMappers + .mapToCapacityResponse(List.of(group1, group2), placeMap); + + assertTrue(response.size() == 2); + assertTrue(response.get(0).getTakenPlaces() == 5); + assertTrue(response.get(0).getCapacity() == 150); + assertTrue(response.get(1).getTakenPlaces() == 56); + assertTrue(response.get(1).getCapacity() == 24); + } } From 78ed2f75f363abc890de1264d89e924ddac99c0c Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 30 Nov 2020 13:22:53 +0100 Subject: [PATCH 11/14] Vhevkpoint implemented but stiull some errors --- .../controllers/GroupController.java | 9 ++++-- .../responses/mappers/GroupsMappers.java | 20 +++++++++++-- .../responses/mappers/GroupsMappersTest.java | 29 +++++++++++++++++++ 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java index 6be9f55..42d2742 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/GroupController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/GroupController.java @@ -41,10 +41,15 @@ public class GroupController { @RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity, @RequestParam(name = "takenPlaces", defaultValue = "false") @ApiParam(value = "Boolean if we want to have respoonse with information about taken places by other students") Boolean takenPlaces) { List groups = this.groupService.getGroupsByCourse(id); - HashMap ammounts; if (takenPlaces) { - ammounts = this.groupService.getTakenPlaces(groups); + HashMap ammounts = this.groupService.getTakenPlaces(groups); + if (capacity) { + return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups, ammounts), + HttpStatus.OK); + } + return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsDefaultResponse(groups, ammounts), + HttpStatus.OK); } if (capacity) { diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java index 4144fd2..43779d3 100755 --- a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java @@ -80,20 +80,34 @@ public class GroupsMappers { } public static CourseWithGroupsResponse mapToGetCourseGroupsWithCapacityResponse( - List groups) { + List groups, HashMap taken) { List lectures = new ArrayList<>(); List classes = new ArrayList<>(); groups.stream().forEach(group -> { if (group.getType() == GroupType.CLASS) { - classes.add(new GroupWithCapacityResponse(group)); + if (taken != null) { + classes.add(new GroupWithCapacityResponse(group, taken.get(group.getId()))); + } else { + classes.add(new GroupWithCapacityResponse(group)); + } + } else { - lectures.add(new GroupWithCapacityResponse(group)); + if (taken != null) { + lectures.add(new GroupWithCapacityResponse(group, taken.get(group.getId()))); + } else { + lectures.add(new GroupWithCapacityResponse(group)); + } } }); return new CourseWithGroupsResponse<>(classes, lectures); } + public static CourseWithGroupsResponse mapToGetCourseGroupsWithCapacityResponse( + List groups) { + return GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups, null); + } + } diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java index d3311de..174c147 100755 --- a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java @@ -81,6 +81,35 @@ public class GroupsMappersTest { assertTrue(response.getClasses().get(0).getTakenPlaces() == 21); } + @Test + public void shouldMapToGetCourseCapacityGroupsResponseWithTakenPlaces() throws NoSuchFieldException, + SecurityException, IllegalArgumentException, IllegalAccessException { + final Field reader = Groups.class.getDeclaredField("id"); + reader.setAccessible(true); + + final List groups = Arrays.asList( + new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki")), + new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, + new Lecturer("krul.", "Wladyslaw", "Potocki"))); + reader.set(groups.get(0), Long.valueOf(0)); + reader.set(groups.get(1), Long.valueOf(1)); + + final HashMap placeMap = new HashMap<>(); + placeMap.put(Long.valueOf(0), 0); + placeMap.put(Long.valueOf(1), 21); + + final CourseWithGroupsResponse response = GroupsMappers + .mapToGetCourseGroupsWithCapacityResponse(groups, placeMap); + + assertTrue(response.getClasses().size() == 1); + assertTrue(response.getLectures().size() == 1); + assertTrue(response.getLectures().get(0).getTakenPlaces() == 0); + assertTrue(response.getLectures().get(0).getCapacity() == 150); + assertTrue(response.getClasses().get(0).getTakenPlaces() == 21); + assertTrue(response.getClasses().get(0).getCapacity() == 24); + } + @Test public void shouldMapToDefaultResponseWithTakenPlace() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { From c2c82b75ba95eb25cc0761371125f508bb807484 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 1 Dec 2020 17:00:56 +0100 Subject: [PATCH 12/14] repaired places failing --- .../com/plannaplan/services/GroupService.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java index 1cd4971..29673ec 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; +import java.util.function.Function; import com.plannaplan.entities.Groups; import com.plannaplan.repositories.GroupRepository; @@ -63,8 +64,18 @@ public class GroupService { public HashMap getTakenPlaces(List groups) { HashMap response = new HashMap<>(); - List respoonses = this.repo.getAssignedAmounts( - groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList())); + // List respoonses = this.repo.getAssignedAmounts( + // groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList())); + + List respoonses = this.repo + .getAssignedAmounts(groups.stream().filter(Objects::nonNull).map(new Function() { + @Override + public Long apply(Groups p) { + final Long id = p.getId(); + response.put(id, 0); + return id; + } + }).collect(Collectors.toList())); for (Object[] element : respoonses) { response.put(((Groups) element[0]).getId(), ((Long) element[1]).intValue()); From 7e45da13061d172d8c862d3f4f5980e67a05fa7f Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 1 Dec 2020 17:21:54 +0100 Subject: [PATCH 13/14] Not null group response --- .../src/main/java/com/plannaplan/services/GroupService.java | 3 --- .../plannaplan/responses/models/GroupDefaultResponse.java | 6 ++++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java index 29673ec..615c9d8 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/GroupService.java @@ -64,9 +64,6 @@ public class GroupService { public HashMap getTakenPlaces(List groups) { HashMap response = new HashMap<>(); - // List respoonses = this.repo.getAssignedAmounts( - // groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList())); - List respoonses = this.repo .getAssignedAmounts(groups.stream().filter(Objects::nonNull).map(new Function() { @Override diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java index 50329eb..c182343 100755 --- a/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java +++ b/restservice/src/main/java/com/plannaplan/responses/models/GroupDefaultResponse.java @@ -1,5 +1,6 @@ package com.plannaplan.responses.models; +import com.fasterxml.jackson.annotation.JsonInclude; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Groups; import com.plannaplan.types.GroupType; @@ -7,6 +8,7 @@ import com.plannaplan.types.GroupType; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +@JsonInclude(JsonInclude.Include.NON_NULL) @ApiModel(description = "Response shows information about given group.", value = "GroupDefaultResponse") public class GroupDefaultResponse { @@ -29,7 +31,7 @@ public class GroupDefaultResponse { private GroupType type; @ApiModelProperty(value = "Value shows how many places is already taken by other students.") - private int takenPlaces; + private Integer takenPlaces; public GroupDefaultResponse(Groups group) { this.id = group.getId() != null ? group.getId() : null; @@ -73,7 +75,7 @@ public class GroupDefaultResponse { return id; } - public int getTakenPlaces() { + public Integer getTakenPlaces() { return this.takenPlaces; } From b2b9178bc10959a0a80b4dd0f801156118a3ac0d Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 1 Dec 2020 17:31:55 +0100 Subject: [PATCH 14/14] Added missing config tests. Ready to pull. Other resposnes to fix in another task --- .../controllers/ConfigController.java | 2 +- .../controllers/ConfigControllerTest.java | 22 ++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java index f9e3b0e..58b94e1 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ConfigController.java @@ -34,7 +34,7 @@ public class ConfigController { private ConfiguratorService contrl; @PostMapping("/config") - // @PreAuthorize("hasRole('ROLE_ADMIN')") + @PreAuthorize("hasRole('ROLE_ADMIN')") @ApiOperation("Imports data to system. To call you need to provide ADMIN token") public ResponseEntity configApp( @RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) { diff --git a/restservice/src/test/java/com/plannaplan/controllers/ConfigControllerTest.java b/restservice/src/test/java/com/plannaplan/controllers/ConfigControllerTest.java index 2c445af..9c56c69 100755 --- a/restservice/src/test/java/com/plannaplan/controllers/ConfigControllerTest.java +++ b/restservice/src/test/java/com/plannaplan/controllers/ConfigControllerTest.java @@ -28,7 +28,6 @@ public class ConfigControllerTest extends AbstractControllerTest { private static final String FILE_NAME = "Zajecia.xlsx"; private static final String CONFIG_ENDPOINT = "/api/v1/configurator/config"; - private static final String TEST_MAIL = "notexisting@mail.domain"; @Autowired private UserService service; @@ -45,12 +44,13 @@ public class ConfigControllerTest extends AbstractControllerTest { @Test public void shouldReturnOKAuthorized() throws Exception { - final User usr = new User(null, null, TEST_MAIL, UserRoles.ADMIN); + final String mail = "shouldReturnOKAuthorized@ConfigController.test"; + final User usr = new User(null, null, mail, UserRoles.ADMIN); this.service.save(usr); final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); final MockMultipartFile file = new MockMultipartFile("file", inputStream); - final String token = this.service.login(TEST_MAIL); + final String token = this.service.login(mail); MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).header("Authorization", "Bearer " + token)) @@ -58,4 +58,20 @@ public class ConfigControllerTest extends AbstractControllerTest { } + @Test + public void shouldReturnDenyNoAdminAuthorized() throws Exception { + final String mail = "shouldReturnDenyNoAdminAuthorized@ConfigController.test"; + final User usr = new User(null, null, mail, UserRoles.TEST_USER); + this.service.save(usr); + + final InputStream inputStream = getClass().getClassLoader().getResourceAsStream(FILE_NAME); + final MockMultipartFile file = new MockMultipartFile("file", inputStream); + final String token = this.service.login(mail); + + MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).apply(springSecurity()).build(); + mockMvc.perform(multipart(CONFIG_ENDPOINT).file(file).header("Authorization", "Bearer " + token)) + .andExpect(status().is4xxClientError()); + + } + }