From 4b096a50bffc4f4f7064c3ff78cdcf761017e93e Mon Sep 17 00:00:00 2001 From: Filip Izydorczyk Date: Sat, 2 Jan 2021 14:35:00 +0100 Subject: [PATCH] Added getting sorted students --- .../repositories/UserRepository.java | 4 ++-- .../services/AssignmentService.java | 23 +++++++++++++++---- .../com/plannaplan/services/UserService.java | 12 ++++++++++ .../services/AssignmentServiceTest.java | 20 ++++++++++++++++ 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/buisnesslogic/src/main/java/com/plannaplan/repositories/UserRepository.java b/buisnesslogic/src/main/java/com/plannaplan/repositories/UserRepository.java index 4c0b0ab..aea1bee 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/repositories/UserRepository.java +++ b/buisnesslogic/src/main/java/com/plannaplan/repositories/UserRepository.java @@ -35,13 +35,13 @@ import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends JpaRepository { - @Query("FROM User WHERE email = ?1 OR usosId = ?1") /** * return user by given authority * * @param authority user usosId or email * @return optional with user if found */ + @Query("FROM User WHERE email = ?1 OR usosId = ?1") Optional getByAuthority(@Param("authority") String authority); @Query("FROM User WHERE email = ?1") @@ -56,7 +56,6 @@ public interface UserRepository extends JpaRepository { @Query("FROM User WHERE (name LIKE %?1% OR surname LIKE %?1%)") List searchForUsers(@Param("query") String query); - @Query("FROM User WHERE (name LIKE %?1% OR surname LIKE %?1%) AND role=?2") /** * search for user with given query * @@ -64,6 +63,7 @@ public interface UserRepository extends JpaRepository { * @param role limits results by role * @return list opf results */ + @Query("FROM User WHERE (name LIKE %?1% OR surname LIKE %?1%) AND role=?2") List searchForUsers(@Param("query") String query, @Param("role") UserRoles role); @Query("FROM User WHERE role=?1") diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java b/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java index ce21a8f..dc27cb2 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/AssignmentService.java @@ -5,13 +5,15 @@ import java.util.Optional; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; +import com.plannaplan.entities.User; import com.plannaplan.repositories.AssignmentRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** - * Service of Assignment which can save assignments, diplay assignments, get ammount of assigments. + * Service of Assignment which can save assignments, diplay assignments, get + * ammount of assigments. */ @Service @@ -19,11 +21,15 @@ public class AssignmentService { @Autowired private AssignmentRepository repo; + @Autowired + private UserService userService; + public AssignmentService() { } /** * Save given assignment + * * @param assignment assignment to save * @return assignment saved assignment with database id */ @@ -32,16 +38,14 @@ public class AssignmentService { } /* - * getCommisionAssignments - * Return id of the commision + * getCommisionAssignments Return id of the commision */ public List getCommisionAssignments(Commision com) { return this.repo.getByCommision(com.getId()); } /* - * getAssignmentsAmmount - * Return count assignments ammount + * getAssignmentsAmmount Return count assignments ammount */ public long getAssignmentsAmmount() { return this.repo.count(); @@ -49,10 +53,19 @@ public class AssignmentService { /** * Get assigmnent by id + * * @param id id of assigmnent * @return Optional of assignment */ public Optional getById(Long id) { return this.repo.findById(id); } + + public void callAcceptAlgorythm() { + final List students = this.userService.getStudentsSortedByRanking(); + + students.forEach(e -> { + System.out.println(e.getRanking()); + }); + } } diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java b/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java index 16de2d8..1c8533a 100755 --- a/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/UserService.java @@ -3,6 +3,7 @@ package com.plannaplan.services; import java.util.List; import java.util.Optional; import java.util.UUID; +import java.util.stream.Collectors; import com.plannaplan.entities.User; import com.plannaplan.exceptions.UserNotFoundException; @@ -153,4 +154,15 @@ public class UserService { return this.repo.getAllByRole(UserRoles.ADMIN).size() > 0; } + /** + * get students sorted by their ranking + * + * @return list of students + */ + public List getStudentsSortedByRanking() { + return this.repo.getAllByRole(UserRoles.STUDENT).stream().sorted((u1, u2) -> { + return -1 * u1.getRanking().compareTo(u2.getRanking()); + }).collect(Collectors.toList()); + } + } \ No newline at end of file diff --git a/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java b/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java index 1f4bb31..10ec7cf 100755 --- a/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java +++ b/buisnesslogic/src/test/java/com/plannaplan/services/AssignmentServiceTest.java @@ -2,12 +2,19 @@ package com.plannaplan.services; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.MethodMode; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.junit.Assert.assertTrue; import java.util.List; +import java.util.Random; +import java.util.UUID; +import java.util.stream.IntStream; + +import javax.management.relation.Role; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; @@ -56,6 +63,19 @@ public class AssignmentServiceTest { assertTrue("Returned list size should be 1", response.size() == 1); } + @Test + @DirtiesContext(methodMode = MethodMode.BEFORE_METHOD) + public void shouldPerformAcceptAlgorythm() { + final Random generator = new Random(); + IntStream.range(0, 1700).forEach(i -> { + this.userService.save(new User(null, null, + "shouldPerformAcceptAlgorythm-" + UUID.randomUUID().toString() + "@AssignmentService.test", null, + UserRoles.STUDENT, generator.nextInt(400) + 100)); + }); + this.service.callAcceptAlgorythm(); + System.out.println("-X_-x-x-x-_X-x-x-x-X_-x-x-x-"); + } + private void addAssignmentToCommision(Commision com) { Assignment a = new Assignment(null, com); this.service.save(a);