Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Tom Vahlman 2012-02-27 16:32:19 +01:00
commit f10718e5b4
7 changed files with 96 additions and 14 deletions
src
main/java/se/su/dsv/scipro
test/java/se/su/dsv/scipro/match/dao

@ -58,7 +58,7 @@ public class ManageKeywordPanel extends Panel {
dialog.add(new EmptyPanel("dialogContent")); dialog.add(new EmptyPanel("dialogContent"));
dialog.setOutputMarkupId(true); dialog.setOutputMarkupId(true);
keywordsDataProvider = new KeywordsDataProvider(null, keywordType); keywordsDataProvider = new KeywordsDataProvider(keywordType, true);
tableContainer = new WebMarkupContainer("table"); tableContainer = new WebMarkupContainer("table");
tableContainer.setOutputMarkupId(true); tableContainer.setOutputMarkupId(true);

@ -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"));

@ -5,6 +5,7 @@ import java.util.Iterator;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.Dao; import se.su.dsv.scipro.data.dao.interfaces.Dao;
import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
import se.su.dsv.scipro.dataproviders.SortSpecifier; import se.su.dsv.scipro.dataproviders.SortSpecifier;
import se.su.dsv.scipro.dataproviders.SortableDataProvider; import se.su.dsv.scipro.dataproviders.SortableDataProvider;
import se.su.dsv.scipro.match.dao.interfaces.KeywordDao; import se.su.dsv.scipro.match.dao.interfaces.KeywordDao;
@ -15,29 +16,34 @@ public class KeywordsDataProvider extends SortableDataProvider<Keyword>{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private KeywordType keywordType = null;
@SpringBean @SpringBean
protected KeywordDao keywordDao; protected KeywordDao keywordDao;
private KeywordDao.Params params;
@Override @Override
protected Dao<Keyword> getDao() { protected Dao<Keyword> getDao() {
return keywordDao; return keywordDao;
} }
public KeywordsDataProvider(final SortSpecifier sortSpecifier, KeywordType keywordType) { public KeywordsDataProvider(KeywordType keywordType, boolean includeDeleted) {
this(null, keywordType, includeDeleted);
}
public KeywordsDataProvider(final SortSpecifier sortSpecifier, KeywordType keywordType, boolean includeDeleted) {
super(sortSpecifier, Keyword.class); super(sortSpecifier, Keyword.class);
this.keywordType = keywordType; params = new KeywordDao.Params();
params.setIncludeDeleted(includeDeleted);
params.setType(keywordType);
} }
public Iterator<Keyword> iterator(int first, int count) { public Iterator<Keyword> iterator(int first, int count) {
Iterator<Keyword> iter = keywordDao.getKeywords(keywordType, true).iterator(); Iterator<Keyword> iter = keywordDao.getKeywordList(params).iterator();
return iter; return iter;
} }
@Override @Override
public int size() { public int size() {
return keywordDao.getKeywords(keywordType, true).size(); return keywordDao.getKeywordList(params).size();
} }
} }

@ -47,8 +47,10 @@ public class FilterFormKeywordPanel extends Panel {
KeywordType kwType = keywordTypeDao.findByType(type); KeywordType kwType = keywordTypeDao.findByType(type);
Set<Keyword> tmpWords = keywordDao.getKeywords(kwType, true); KeywordDao.Params params = new KeywordDao.Params();
keywords = new ArrayList<Keyword>(tmpWords); params.setType(kwType);
params.setIncludeDeleted(true);
keywords = keywordDao.getKeywordList(params);
CompoundPropertyModel<List<Keyword>> keyWordModel = new CompoundPropertyModel<List<Keyword>>(keywords); CompoundPropertyModel<List<Keyword>> keyWordModel = new CompoundPropertyModel<List<Keyword>>(keywords);
checkGroup = new CheckGroup<Keyword>("checkGroup", new ArrayList<Keyword>()); checkGroup = new CheckGroup<Keyword>("checkGroup", new ArrayList<Keyword>());

@ -133,8 +133,9 @@ public class KeywordSelectionPanel extends Panel {
if (keywordProvider.getObject() != null) { if (keywordProvider.getObject() != null) {
ideaAreaKeywords = new ArrayList<Keyword>(keywordProvider.getObject().getKeywords().getFiltered(area)); ideaAreaKeywords = new ArrayList<Keyword>(keywordProvider.getObject().getKeywords().getFiltered(area));
} }
Set<Keyword> areaKeySet = keywordDao.getKeywords(area, false); KeywordDao.Params params = new KeywordDao.Params();
List<Keyword> areaKeyList = new ArrayList<Keyword>(areaKeySet); params.setType(area);
List<Keyword> areaKeyList = keywordDao.getKeywordList(params);
CompoundPropertyModel<List<Keyword>> listModel = new CompoundPropertyModel<List<Keyword>>(areaKeyList); CompoundPropertyModel<List<Keyword>> listModel = new CompoundPropertyModel<List<Keyword>>(areaKeyList);
researchAreaGroup = new CheckGroup<Keyword>("researchAreaGroup", ideaAreaKeywords); researchAreaGroup = new CheckGroup<Keyword>("researchAreaGroup", ideaAreaKeywords);
@ -162,13 +163,18 @@ public class KeywordSelectionPanel extends Panel {
} }
} }
private void addRegularKeywordSelection() { private void addRegularKeywordSelection() {
KeywordType keyword = keywordTypeDao.findByType(KeywordTypeDao.TYPE.REGULAR); KeywordType keywordType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.REGULAR);
List<Keyword> selectedWords = keywordProvider.getObject().getKeywords().getFiltered(keyword); List<Keyword> selectedWords = keywordProvider.getObject().getKeywords().getFiltered(keywordType);
ideaKeywords = new ArrayList<Keyword>(); ideaKeywords = new ArrayList<Keyword>();
if(!selectedWords.isEmpty()) if(!selectedWords.isEmpty())
ideaKeywords = new ArrayList<Keyword>(selectedWords); ideaKeywords = new ArrayList<Keyword>(selectedWords);
Set<Keyword> keySet = keywordDao.getKeywords(keyword, false); KeywordDao.Params params = new KeywordDao.Params();
params.setType(keywordType);
List<Keyword> keywordList = keywordDao.getKeywordList(params);
Set<Keyword> keySet = new HashSet<Keyword>(keywordList);
//Set<Keyword> keySet = keywordDao.getKeywords(keywordType, false);
regularKeywordsPalette = new Palette<Keyword>("keywordPalette", regularKeywordsPalette = new Palette<Keyword>("keywordPalette",
new ListModel<Keyword>(ideaKeywords), new ListModel<Keyword>(ideaKeywords),
new CollectionModel<Keyword>(keySet), new CollectionModel<Keyword>(keySet),

@ -1,6 +1,7 @@
package se.su.dsv.scipro.match.dao; package se.su.dsv.scipro.match.dao;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
import org.junit.Assert; import org.junit.Assert;
@ -70,6 +71,12 @@ public class TestKeywordDao {
Set<Keyword> keywords = target.getKeywords(standard, true); Set<Keyword> keywords = target.getKeywords(standard, true);
Assert.assertEquals(new HashSet<Keyword>( Assert.assertEquals(new HashSet<Keyword>(
Arrays.asList(new Keyword[] { keyword1, keyword2 })), keywords); Arrays.asList(new Keyword[] { keyword1, keyword2 })), keywords);
KeywordDao.Params params = new KeywordDao.Params();
params.setType(standard);
List<Keyword> keywordList = target.getKeywordList(params);
Assert.assertEquals(Arrays.asList(new Keyword[]{keyword1, keyword2}), keywordList);
} }
@Test @Test