diff --git a/src/main/java/se/su/dsv/scipro/springdata/repos/SupervisorRepo.java b/src/main/java/se/su/dsv/scipro/springdata/repos/SupervisorRepo.java index d825066ddd..3c588bfcd2 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/repos/SupervisorRepo.java +++ b/src/main/java/se/su/dsv/scipro/springdata/repos/SupervisorRepo.java @@ -16,7 +16,7 @@ import java.util.List; */ @Transactional ( readOnly = true ) public interface SupervisorRepo extends JpaRepository<Employee, Long>, QueryDslPredicateExecutor<Employee> { - // select employeeFull from Employee employeeFull where employeeFull.id in ( + @Query ("select employee.id " + "from Employee employee " + "join employee.keywords.keywords keywords " + @@ -27,21 +27,14 @@ public interface SupervisorRepo extends JpaRepository<Employee, Long>, QueryDslP @Param("keywordTypeName") String keywordTypeName); - // hämtar employees med keywords där typen är type name... men en employee kan ha keywords av flera olika type names +// dessa två metoder hämtar employees med keywords där typen är type name... men en employee kan ha keywords av flera olika type names @Query ("select employee.id " + "from Employee employee " + "join employee.keywords.keywords keywords " + "where keywords.type.name = :keywordTypeName " + "group by employee.id " + - //"order by size(employee.keywords.keywords) asc ") "order by size(employee.keywords.keywords) asc ") - // sum(keywords.type.name = :keywordTypeName) - /*@Query ("select employeeFull from Employee employeeFull where employeeFull.id in (" + - "select employee.id from Employee employee inner join employee.keywords.keywords keywords " + - "where keywords.type.name = :keywordTypeName " + //and keywords.deleted = false and employee.deleted = false)) " + - "group by employee.id " + - "order by size(employeeFull.keywords.keywords) asc)")*/ //"CASE ':ascending' WHEN 'true' THEN (size(employeeFull.keywords.keywords) asc " + //"ELSE size(employeeFull.keywords.keywords) desc END" + //"ELSE employeeFull.keywords.keywords.size desc " + @@ -49,16 +42,5 @@ public interface SupervisorRepo extends JpaRepository<Employee, Long>, QueryDslP public List<Long> findSupervisorsOrderedByNumKeywordsAscending( @Param("keywordTypeName") String keywordTypeName); - - /* public List<Employee> findSupervisorsOrderedByNumKeywords(String keywordTypeName, Boolean asc) { - switch (asc) { - case Direction.ASC: - return findSupervisorsOrderedByNumKeywordsAscending(keywordTypeName); - case Direction.DESC: - default: - return findSupervisorsOrderedByNumKeywordsAscending(keywordTypeName); - } - return findSupervisorsOrderedByNumKeywordsAscending(keywordTypeName); - }*/ } diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java index e039f044f7..fa721fbc76 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java @@ -38,14 +38,9 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long> @Override public List<Employee> findAllEmployees(org.springframework.data.domain.Sort orders) { - return supervisorRepo.findAll(orders); // 218 st + return supervisorRepo.findAll(orders); // // 120414: the list should return 218 employees } - /* @Override - public List<Employee> findSupervisorsOrderedByNumKeywords(String keywordTypeName, Sort.Direction sortDirection) { - return supervisorRepo.findSupervisorsOrderedByNumKeywords(keywordTypeName, sortDirection); - }*/ - @Override public List<Employee> findSupervisorsOrderedByNumKeywordsDescending(String keywordTypeName) { List<Long> employeeIDs = new ArrayList<Long>(); @@ -77,12 +72,12 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long> List<Employee> employeeList = new ArrayList<Employee>(); if(direction.equalsIgnoreCase("desc")) { employeeList.addAll(getEmployeesThatHaveKeywords(keywordTypeName, direction)); - employeeList.addAll(getEmployeesWithoutKeywords()); + employeeList.addAll(getEmployeesWithoutKeywords(keywordTypeName)); } else { - employeeList.addAll(getEmployeesWithoutKeywords()); + employeeList.addAll(getEmployeesWithoutKeywords(keywordTypeName)); employeeList.addAll(getEmployeesThatHaveKeywords(keywordTypeName, direction)); } - return employeeList; // totalt 129 st för regular men 156 st för area och 218 för last name (vilken innehåller både keywords Area och Regular) + return employeeList; // 120414: the list should return 218 employees } private List<Employee> getEmployeesThatHaveKeywords(String keywordTypeName, String direction) { @@ -109,7 +104,7 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long> } - private List<Employee> getEmployeesWithoutKeywords() { + private List<Employee> getEmployeesWithoutKeywords(String keywordTypeName) { List<Employee> employeeList = new ArrayList<Employee>(); String nativeSQL = "select " + "role.id " + @@ -119,12 +114,16 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long> "where " + "role.rolename = 'Employee' and " + "user.id = role.user_id and not exists " + - "(select " + - "1 " + + "(select 1 " + "from " + - "Employee_Keyword ek " + + "Employee_Keyword ek, " + + "Keyword k, " + + "KeywordType kt " + "where " + - "ek.role_id = role.id) " + + "ek.role_id = role.id and " + + "k.id = ek.keywords_id and " + + "k.type_id = kt.id and " + + "kt.name= '" + keywordTypeName + "') " + "order by " + "user.lastName asc "; return runQueryAddToList(employeeList, nativeSQL); @@ -140,6 +139,6 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long> employeeList.add(employee); } } - return employeeList; // 36 st + 93 st + return employeeList; } }