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

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

@ -259,40 +259,13 @@ public abstract class TaskDao {
/** Generates SQL clauses */ /** Generates SQL clauses */
public static class TaskCriteria { 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 */ /** @return tasks that have not yet been completed or deleted */
public static Criterion activeAndVisible() { public static Criterion activeAndVisible() {
return Criterion.and( return Criterion.and(
Task.COMPLETION_DATE.eq(0), Task.COMPLETION_DATE.lte(0),
Task.DELETION_DATE.eq(0), Task.DELETION_DATE.lte(0),
Task.HIDE_UNTIL.lt(Functions.now())); 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 { public interface QueryCallback {

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

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

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