diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java index 5d3b28950..a95ab7a8c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/database/DataBaseAdapter.java @@ -60,6 +60,7 @@ import it.niedermann.nextcloud.deck.model.Stack; import it.niedermann.nextcloud.deck.model.User; import it.niedermann.nextcloud.deck.model.appwidgets.StackWidgetModel; import it.niedermann.nextcloud.deck.model.enums.DBStatus; +import it.niedermann.nextcloud.deck.model.enums.EDoneType; import it.niedermann.nextcloud.deck.model.enums.EDueType; import it.niedermann.nextcloud.deck.model.full.FullBoard; import it.niedermann.nextcloud.deck.model.full.FullCard; @@ -259,9 +260,9 @@ public class DataBaseAdapter { public LiveData<List<FullCard>> getFullCardsForStack(long accountId, long localStackId, @Nullable FilterInformation filter) { return new ReactiveLiveData<>( - filter == null - ? db.getCardDao().getFullCardsForStack(accountId, localStackId) - : db.getCardDao().getFilteredFullCardsForStack(getQueryForFilter(filter, accountId, localStackId))) + FilterInformation.hasActiveFilter(filter) + ? db.getCardDao().getFilteredFullCardsForStack(getQueryForFilter(filter, accountId, localStackId)) + : db.getCardDao().getFullCardsForStack(accountId, localStackId)) .tap(this::filterRelationsForCard, executor) .distinctUntilChanged(); @@ -284,9 +285,9 @@ public class DataBaseAdapter { @WorkerThread public List<FullCard> getFullCardsForStackDirectly(long accountId, long localStackId, @Nullable FilterInformation filter) { - return filter == null - ? db.getCardDao().getFullCardsForStackDirectly(accountId, localStackId) - : db.getCardDao().getFilteredFullCardsForStackDirectly(getQueryForFilter(filter, accountId, localStackId)); + return FilterInformation.hasActiveFilter(filter) + ? db.getCardDao().getFilteredFullCardsForStackDirectly(getQueryForFilter(filter, accountId, localStackId)) + : db.getCardDao().getFullCardsForStackDirectly(accountId, localStackId); } @AnyThread @@ -351,24 +352,38 @@ public class DataBaseAdapter { if (filter.getDueType() != EDueType.NO_FILTER) { switch (filter.getDueType()) { case NO_DUE: - query.append("and c.dueDate is null"); + query.append("and c.dueDate is null "); break; case OVERDUE: - query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') <= datetime('now', 'localtime')"); + query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') <= datetime('now', 'localtime') "); break; case TODAY: - query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') between datetime('now', 'localtime') and datetime('now', '+24 hour', 'localtime')"); + query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') between datetime('now', 'localtime') and datetime('now', '+24 hour', 'localtime') "); break; case WEEK: - query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') between datetime('now', 'localtime') and datetime('now', '+7 day', 'localtime')"); + query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') between datetime('now', 'localtime') and datetime('now', '+7 day', 'localtime') "); break; case MONTH: - query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') between datetime('now', 'localtime') and datetime('now', '+30 day', 'localtime')"); + query.append("and datetime(c.duedate/1000, 'unixepoch', 'localtime') between datetime('now', 'localtime') and datetime('now', '+30 day', 'localtime') "); break; default: - throw new IllegalArgumentException("You need to add your new EDueType value\"" + filter.getDueType() + "\" here!"); + throw new IllegalArgumentException("You need to add your new " + EDueType.class.getSimpleName() + " value\"" + filter.getDueType() + "\" here!"); } } + + if (filter.getDoneType() != EDoneType.NO_FILTER) { + switch (filter.getDoneType()) { + case DONE: + query.append("and (c.done is not null and c.done != 0) "); + break; + case UNDONE: + query.append("and (c.done is null or c.done = 0) "); + break; + default: + throw new IllegalArgumentException("You need to add your new " + EDoneType.class.getSimpleName() + " value\"" + filter.getDueType() + "\" here!"); + } + } + if (!TextUtils.isEmpty(filter.getFilterText())) { query.append(" and (c.description like ? or c.title like ?) "); String filterText = "%" + filter.getFilterText() + "%"; |