diff --git a/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java b/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java index eb4d64b5a8..80e609f010 100644 --- a/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java +++ b/src/main/java/se/su/dsv/scipro/match/dao/interfaces/KeywordDao.java @@ -1,8 +1,10 @@ package se.su.dsv.scipro.match.dao.interfaces; +import java.io.Serializable; import java.util.List; import java.util.Set; +import se.su.dsv.scipro.data.dao.interfaces.Dao; import se.su.dsv.scipro.data.dao.interfaces.LazyDeleteDao; import se.su.dsv.scipro.match.dataobject.Keyword; import se.su.dsv.scipro.match.dataobject.KeywordType; @@ -10,6 +12,7 @@ import se.su.dsv.scipro.match.dataobject.KeywordType; public interface KeywordDao extends LazyDeleteDao<Keyword>{ Set<Keyword> getKeywords(KeywordType type, boolean includeDeleted); + List<Keyword> getKeywordList(Params params); public List<Keyword> findAllFromType(KeywordType kt, boolean includeDeleted); @@ -17,4 +20,41 @@ public interface KeywordDao extends LazyDeleteDao<Keyword>{ Keyword getKeywordByNameAndType(String keywordName, KeywordType type); + public static class Params extends Dao.SortableParams implements Serializable { + + private static final long serialVersionUID = 5317030582030781723L; + + private String keyword; + private KeywordType type; + private boolean includeDeleted = false; + + public Params() { + //Sort keywords on their name in ascending order as default when using Params + setSortOn("keyword", Sort.ASCENDING); + } + + public void setKeyword(String keyword) { + this.keyword = keyword; + } + + public String getKeyword() { + return keyword; + } + + public void setType(KeywordType type) { + this.type = type; + } + + public KeywordType getType() { + return type; + } + + public void setIncludeDeleted(boolean includeDeleted) { + this.includeDeleted = includeDeleted; + } + + public boolean isIncludeDeleted() { + return includeDeleted; + } + } } diff --git a/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java index f1b466f4a7..9b4860b570 100644 --- a/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java +++ b/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java @@ -14,6 +14,7 @@ import org.springframework.orm.jpa.JpaCallback; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; +import se.su.dsv.scipro.data.dao.jpa.AbstractQuerySet; import se.su.dsv.scipro.data.dao.jpa.AbstractSortableQuerySet; import se.su.dsv.scipro.data.dao.jpa.LazyDeleteAbstractDaoJPAImp; import se.su.dsv.scipro.data.dao.jpa.Query; @@ -41,6 +42,18 @@ public class KeywordDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<Keyword> imple } } + @Override + public List<Keyword> getKeywordList(Params params) { + return getJpaTemplate().execute(createQuerySet(params).fetchCallback()); + } + + private AbstractQuerySet<Keyword> createQuerySet(Params params) { + return new QuerySet() + .type(params.getType()) + .includeDeleted(params.isIncludeDeleted()) + .sort(params); + } + private static class QuerySet extends AbstractSortableQuerySet<Keyword> { public QuerySet() { super(Keyword.class); @@ -55,6 +68,14 @@ public class KeywordDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<Keyword> imple return this; } + public QuerySet includeDeleted(boolean includeDeleted) { + if(!includeDeleted) { + getQuery().combine( + new Query().where("k.deleted = false")); + } + return this; + } + public QuerySet noDeleted() { getQuery().combine( new Query().where("k.deleted = false"));