Added support for sortable params to KeywordDao

This commit is contained in:
Emil Siverhall 2012-02-27 13:41:36 +01:00
parent 55d52cbce0
commit a29ca62bae
2 changed files with 61 additions and 0 deletions
src/main/java/se/su/dsv/scipro/match/dao

@ -1,8 +1,10 @@
package se.su.dsv.scipro.match.dao.interfaces; package se.su.dsv.scipro.match.dao.interfaces;
import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.Set; 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.data.dao.interfaces.LazyDeleteDao;
import se.su.dsv.scipro.match.dataobject.Keyword; import se.su.dsv.scipro.match.dataobject.Keyword;
import se.su.dsv.scipro.match.dataobject.KeywordType; 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>{ public interface KeywordDao extends LazyDeleteDao<Keyword>{
Set<Keyword> getKeywords(KeywordType type, boolean includeDeleted); Set<Keyword> getKeywords(KeywordType type, boolean includeDeleted);
List<Keyword> getKeywordList(Params params);
public List<Keyword> findAllFromType(KeywordType kt, boolean includeDeleted); public List<Keyword> findAllFromType(KeywordType kt, boolean includeDeleted);
@ -17,4 +20,41 @@ public interface KeywordDao extends LazyDeleteDao<Keyword>{
Keyword getKeywordByNameAndType(String keywordName, KeywordType type); 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;
}
}
} }

@ -14,6 +14,7 @@ import org.springframework.orm.jpa.JpaCallback;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; 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.AbstractSortableQuerySet;
import se.su.dsv.scipro.data.dao.jpa.LazyDeleteAbstractDaoJPAImp; import se.su.dsv.scipro.data.dao.jpa.LazyDeleteAbstractDaoJPAImp;
import se.su.dsv.scipro.data.dao.jpa.Query; 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> { private static class QuerySet extends AbstractSortableQuerySet<Keyword> {
public QuerySet() { public QuerySet() {
super(Keyword.class); super(Keyword.class);
@ -55,6 +68,14 @@ public class KeywordDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<Keyword> imple
return this; return this;
} }
public QuerySet includeDeleted(boolean includeDeleted) {
if(!includeDeleted) {
getQuery().combine(
new Query().where("k.deleted = false"));
}
return this;
}
public QuerySet noDeleted() { public QuerySet noDeleted() {
getQuery().combine( getQuery().combine(
new Query().where("k.deleted = false")); new Query().where("k.deleted = false"));