Replace hidden and completed eq with lte

gtask_related_email
Alex Baker 5 years ago
parent 6e8587875f
commit ddf9ccdf5d

@ -0,0 +1,42 @@
package org.tasks.db;
import static org.junit.Assert.assertEquals;
import static org.tasks.db.QueryUtils.showCompleted;
import static org.tasks.db.QueryUtils.showHidden;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.astrid.data.Task;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class QueryUtilsTest {
@Test
public void replaceHiddenLT() {
assertEquals(
"(1)",
showHidden(Task.HIDE_UNTIL.lt(Functions.now()).toString()));
}
@Test
public void replaceHiddenLTE() {
assertEquals(
"(1)",
showHidden(Task.HIDE_UNTIL.lte(Functions.now()).toString()));
}
@Test
public void replaceUncompletedEQ() {
assertEquals(
"(1)",
showCompleted(Task.COMPLETION_DATE.eq(0).toString()));
}
@Test
public void replaceUncompletedLTE() {
assertEquals(
"(1)",
showCompleted(Task.COMPLETION_DATE.lte(0).toString()));
}
}

@ -73,7 +73,7 @@ public final class BuiltInFilterExposer {
return new NoSubtasksFilter(
r.getString(R.string.BFE_Recent),
new QueryTemplate()
.where(TaskCriteria.notDeleted())
.where(Task.DELETION_DATE.lte(0))
.orderBy(Order.desc(Task.MODIFICATION_DATE))
.limit(15));
}
@ -86,8 +86,7 @@ public final class BuiltInFilterExposer {
Criterion.and(
Criterion.not(
Task.UUID.in(Query.select(Field.field("task_uid")).from(Tag.TABLE))),
TaskCriteria.isActive(),
TaskCriteria.isVisible())));
TaskCriteria.activeAndVisible())));
}
public static boolean isInbox(Context context, Filter filter) {

@ -6,9 +6,9 @@
package com.todoroo.astrid.core;
import static com.todoroo.astrid.dao.TaskDao.TaskCriteria.includeCompleted;
import static com.todoroo.astrid.dao.TaskDao.TaskCriteria.includeHidden;
import static com.todoroo.astrid.dao.TaskDao.TaskCriteria.isVisible;
import static org.tasks.db.QueryUtils.showCompleted;
import static org.tasks.db.QueryUtils.showHidden;
import static org.tasks.db.QueryUtils.showRecentlyCompleted;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
@ -59,20 +59,12 @@ public class SortHelper {
// flags
if (preferences.getBoolean(R.string.p_show_completed_tasks, false)) {
adjustedSql =
adjustedSql.replace(
Task.COMPLETION_DATE.eq(0).toString(), includeCompleted().toString());
adjustedSql = showCompleted(adjustedSql);
} else if (preferences.getBoolean(R.string.p_temporarily_show_completed_tasks, false)) {
adjustedSql =
adjustedSql.replace(
Task.COMPLETION_DATE.eq(0).toString(),
Criterion.or(
Task.COMPLETION_DATE.lte(0),
Task.COMPLETION_DATE.gt(DateUtilities.now() - 60000))
.toString());
adjustedSql = showRecentlyCompleted(adjustedSql);
}
if (preferences.getBoolean(R.string.p_show_hidden_tasks, false)) {
adjustedSql = adjustedSql.replace(isVisible().toString(), includeHidden().toString());
adjustedSql = showHidden(adjustedSql);
}
return adjustedSql;

@ -259,40 +259,13 @@ public abstract class TaskDao {
/** Generates SQL clauses */
public static class TaskCriteria {
/** @return tasks that were not deleted */
public static Criterion notDeleted() {
return Task.DELETION_DATE.eq(0);
}
public static Criterion notCompleted() {
return Task.COMPLETION_DATE.eq(0);
}
public static Criterion includeCompleted() {
return Task.COMPLETION_DATE.gte(0);
}
/** @return tasks that have not yet been completed or deleted */
public static Criterion activeAndVisible() {
return Criterion.and(
Task.COMPLETION_DATE.eq(0),
Task.DELETION_DATE.eq(0),
Task.COMPLETION_DATE.lte(0),
Task.DELETION_DATE.lte(0),
Task.HIDE_UNTIL.lt(Functions.now()));
}
/** @return tasks that have not yet been completed or deleted */
public static Criterion isActive() {
return Criterion.and(Task.COMPLETION_DATE.eq(0), Task.DELETION_DATE.eq(0));
}
/** @return tasks that are not hidden at current time */
public static Criterion isVisible() {
return Task.HIDE_UNTIL.lt(Functions.now());
}
public static Criterion includeHidden() {
return Task.HIDE_UNTIL.gte(0);
}
}
public interface QueryCallback {

@ -1,11 +1,7 @@
package com.todoroo.astrid.service;
import static com.todoroo.astrid.dao.TaskDao.TaskCriteria.includeCompleted;
import static com.todoroo.astrid.dao.TaskDao.TaskCriteria.includeHidden;
import static com.todoroo.astrid.dao.TaskDao.TaskCriteria.isVisible;
import static com.todoroo.astrid.dao.TaskDao.TaskCriteria.notCompleted;
import static org.tasks.db.DbUtils.batch;
import static org.tasks.db.DbUtils.collect;
import static org.tasks.db.QueryUtils.showHiddenAndCompleted;
import com.google.common.collect.ImmutableList;
import com.todoroo.astrid.api.Filter;
@ -91,11 +87,7 @@ public class TaskDeleter {
public int clearCompleted(Filter filter) {
List<Long> completed = new ArrayList<>();
Filter deleteFilter = new Filter(null, null);
deleteFilter.setFilterQueryOverride(
filter
.getOriginalSqlQuery()
.replace(isVisible().toString(), includeHidden().toString())
.replace(notCompleted().toString(), includeCompleted().toString()));
deleteFilter.setFilterQueryOverride(showHiddenAndCompleted(filter.getOriginalSqlQuery()));
List<TaskContainer> tasks =
taskDao.fetchTasks(
(includeGoogleSubtasks, includeCaldavSubtasks) ->

@ -1,5 +1,7 @@
package com.todoroo.astrid.subtasks;
import static org.tasks.db.QueryUtils.showHiddenAndCompleted;
import android.text.TextUtils;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TaskDao;
@ -133,10 +135,7 @@ public class SubtasksFilterUpdater {
query = query.replaceAll("ORDER BY .*", "");
query = query + String.format("ORDER BY %s", getOrderString());
query =
query.replace(
TaskDao.TaskCriteria.activeAndVisible().toString(),
TaskDao.TaskCriteria.notDeleted().toString());
query = showHiddenAndCompleted(query);
filter.setFilterQueryOverride(query);
}
@ -165,10 +164,7 @@ public class SubtasksFilterUpdater {
Set<String> idsInQuery = new HashSet<>();
String sql = filter.getSqlQuery().replaceAll("ORDER BY .*", ""); // $NON-NLS-1$//$NON-NLS-2$
sql = sql + " ORDER BY created"; // $NON-NLS-1$
sql =
sql.replace(
TaskDao.TaskCriteria.activeAndVisible().toString(),
TaskDao.TaskCriteria.notDeleted().toString());
sql = showHiddenAndCompleted(sql);
List<Task> tasks = taskDao.fetchFiltered(sql);
for (Task task : tasks) {
String id = task.getUuid();

@ -1,5 +1,7 @@
package com.todoroo.astrid.subtasks;
import static org.tasks.db.QueryUtils.showHidden;
import android.content.Context;
import android.text.TextUtils;
import com.todoroo.astrid.api.Filter;
@ -146,10 +148,7 @@ public class SubtasksHelper {
query = query.replaceAll("ORDER BY .*", "");
query = query + String.format(" ORDER BY %s", getOrderString(tagData, tlm));
query =
query.replace(
TaskCriteria.isVisible().toString(),
TaskCriteria.includeHidden().toString());
query = showHidden(query);
}
filter.setFilterQueryOverride(query);

@ -0,0 +1,36 @@
package org.tasks.db;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task;
import java.util.regex.Pattern;
public class QueryUtils {
private static final Pattern HIDDEN =
Pattern.compile("tasks\\.hideUntil<=?\\(strftime\\('%s','now'\\)\\*1000\\)");
private static final Pattern UNCOMPLETED = Pattern.compile("tasks\\.completed<?=0");
public static String showHidden(String query) {
return HIDDEN.matcher(query).replaceAll("1");
}
public static String showCompleted(String query) {
return UNCOMPLETED.matcher(query).replaceAll("1");
}
public static String showHiddenAndCompleted(String query) {
return showCompleted(showHidden(query));
}
public static String showRecentlyCompleted(String query) {
return UNCOMPLETED
.matcher(query)
.replaceAll(
Criterion.or(
Task.COMPLETION_DATE.lte(0),
Task.COMPLETION_DATE.gte(DateUtilities.now() - 59999))
.toString());
}
}
Loading…
Cancel
Save