From f7a233d45510e63fc889278fa35a80eebb65c240 Mon Sep 17 00:00:00 2001 From: Dmitriy Bogdanov Date: Thu, 29 Jun 2017 14:57:27 +0400 Subject: [PATCH] Correctly process multiple tags with the same label ...in article filtering --- .../apps/Poche/ui/ArticleListFragment.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/fr/gaulupeau/apps/Poche/ui/ArticleListFragment.java b/app/src/main/java/fr/gaulupeau/apps/Poche/ui/ArticleListFragment.java index 67180932..1a01fe26 100644 --- a/app/src/main/java/fr/gaulupeau/apps/Poche/ui/ArticleListFragment.java +++ b/app/src/main/java/fr/gaulupeau/apps/Poche/ui/ArticleListFragment.java @@ -16,6 +16,7 @@ import android.widget.Toast; import org.greenrobot.greendao.query.LazyList; import org.greenrobot.greendao.query.QueryBuilder; +import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -49,7 +50,7 @@ public class ArticleListFragment extends RecyclerViewListFragment
{ private int listType; private String tagLabel; - private Long tagID; + private List tagIDs; private OnFragmentInteractionListener host; @@ -144,15 +145,17 @@ public class ArticleListFragment extends RecyclerViewListFragment
{ @Override protected void resetContent() { if(tagLabel != null) { - // TODO: check: can be non-unique? - Tag tag = tagDao.queryBuilder() + List tags = tagDao.queryBuilder() .where(TagDao.Properties.Label.eq(tagLabel)) .orderDesc(TagDao.Properties.Label) - .unique(); + .list(); - tagID = tag != null ? tag.getId() : null; + tagIDs = new ArrayList<>(tags.size()); + for(Tag t: tags) { + tagIDs.add(t.getId()); + } } else { - tagID = null; + tagIDs = null; } super.resetContent(); @@ -173,10 +176,10 @@ public class ArticleListFragment extends RecyclerViewListFragment
{ private QueryBuilder
getQueryBuilder() { QueryBuilder
qb = articleDao.queryBuilder(); - if(tagID != null) { + if(tagIDs != null && !tagIDs.isEmpty()) { // TODO: try subquery qb.join(ArticleTagsJoin.class, ArticleTagsJoinDao.Properties.ArticleId) - .where(ArticleTagsJoinDao.Properties.TagId.eq(tagID)); + .where(ArticleTagsJoinDao.Properties.TagId.in(tagIDs)); } switch(listType) {