diff --git a/src/main/java/se/su/dsv/scipro/match/dao/interfaces/SupervisorDao.java b/src/main/java/se/su/dsv/scipro/match/dao/interfaces/SupervisorDao.java index 3b39960532..4b8b6c08b4 100644 --- a/src/main/java/se/su/dsv/scipro/match/dao/interfaces/SupervisorDao.java +++ b/src/main/java/se/su/dsv/scipro/match/dao/interfaces/SupervisorDao.java @@ -9,6 +9,7 @@ import se.su.dsv.scipro.data.dataobjects.Language; import se.su.dsv.scipro.data.dataobjects.ProjectClass; import se.su.dsv.scipro.data.dataobjects.User; import se.su.dsv.scipro.match.dataobject.Availability; +import se.su.dsv.scipro.match.dataobject.Keyword; public interface SupervisorDao extends QueryableDao<Employee, SupervisorDaoParams>{ @@ -19,6 +20,8 @@ public interface SupervisorDao extends QueryableDao<Employee, SupervisorDaoParam List<Employee> getCapableSupervisors(ProjectClass projectClass, Set<Language> languages); + List<Employee> getSupervisorsByKeyword(Keyword keyword); + List<Employee> getAutoCompleteCapableSupervisors( /*final ProjectClass projectClass, final Set<Language> languages,*/ final String searchString, int limit); diff --git a/src/main/java/se/su/dsv/scipro/match/dao/jpa/SupervisorDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/match/dao/jpa/SupervisorDaoJPAImp.java index cf2c9e53b8..d37b2c3b35 100644 --- a/src/main/java/se/su/dsv/scipro/match/dao/jpa/SupervisorDaoJPAImp.java +++ b/src/main/java/se/su/dsv/scipro/match/dao/jpa/SupervisorDaoJPAImp.java @@ -95,6 +95,10 @@ SupervisorDao { new QuerySet().projectClass(projectClass).languages(languages) .fetchCallback()); } + + public List<Employee> getSupervisorsByKeyword(final Keyword keyword) { + return getJpaTemplate().execute(new QuerySet().keyword(keyword).fetchCallback()); + } public List<Employee> getAutoCompleteCapableSupervisors( /*final ProjectClass projectClass, final Set<Language> languages,*/ @@ -126,6 +130,15 @@ SupervisorDao { } return this; } + + public QuerySet keyword(Keyword keyword) { + if (keyword != null) { + getQuery().combine( + new Query().join("_.keywords.keywords k").where("k = :keyword").parameter( + "keyword", keyword)).distinct(); + } + return this; + } public QuerySet orderByUser() { getQuery().combine(RoleDaoJPAImp.orderByUserQuery());