From 5d87de12d93daf6c3c329181aa2a86751fa1330c Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 28 Mar 2012 17:35:59 -0700 Subject: [PATCH] Cleanup and better code --- api/src/com/todoroo/andlib/sql/Functions.java | 10 +--- .../astrid/helper/DueDateTimeMigrator.java | 48 ++++++++++--------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/api/src/com/todoroo/andlib/sql/Functions.java b/api/src/com/todoroo/andlib/sql/Functions.java index a4cfc78ed..7a9ace07f 100644 --- a/api/src/com/todoroo/andlib/sql/Functions.java +++ b/api/src/com/todoroo/andlib/sql/Functions.java @@ -35,18 +35,10 @@ public final class Functions { return new Field("(strftime('%s','now')*1000 + " + millis + ")"); } - public static Field strftime(LongProperty field) { - return strftimeWithFormat(field, "%H:%M:%S"); - } - - public static Field strftimeWithFormat(LongProperty field, String format) { + public static Field strftime(LongProperty field, String format) { return new Field("(strftime('" + format + "', datetime(" + field.toString() + "/1000, 'unixepoch', 'localtime')))"); } - public static Field strftimeSeconds(LongProperty field) { - return cast(strftimeWithFormat(field, "%S"), "LONG"); - } - public static Field cast(Field field, String newType) { return new Field("CAST(" + field.toString() + " AS " + newType + ")"); diff --git a/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java b/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java index 28d85b8f6..df1d694e1 100644 --- a/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java +++ b/astrid/src/com/todoroo/astrid/helper/DueDateTimeMigrator.java @@ -19,6 +19,7 @@ public class DueDateTimeMigrator { @Autowired TaskDao taskDao; private static final String PREF_MIGRATED_DUE_TIMES = "migrated_due_times"; //$NON-NLS-1$ + private static final String STRFTIME_FORMAT = "%H:%M%S"; //$NON-NLS-1$ private static final String LEGACY_NO_TIME_STRING = "23:59:59"; //$NON-NLS-1$ public DueDateTimeMigrator() { @@ -34,47 +35,48 @@ public class DueDateTimeMigrator { // Get tasks with due time (i.e. due date != 23:59:59) TodorooCursor tasksWithDueTime = taskDao.query(Query.select(Task.ID, Task.TITLE, Task.DUE_DATE).where( Criterion.and(Task.DUE_DATE.gt(0), - Criterion.not(Functions.strftime(Task.DUE_DATE).eq(LEGACY_NO_TIME_STRING))))); + Criterion.not(Functions.strftime(Task.DUE_DATE, STRFTIME_FORMAT).eq(LEGACY_NO_TIME_STRING))))); // Get tasks with no due time (i.e. due date = 23:59:59) TodorooCursor tasksWithoutDueTime = taskDao.query(Query.select(Task.ID, Task.TITLE, Task.DUE_DATE).where( Criterion.and(Task.DUE_DATE.gt(0), - Functions.strftime(Task.DUE_DATE).eq(LEGACY_NO_TIME_STRING)))); + Functions.strftime(Task.DUE_DATE, STRFTIME_FORMAT).eq(LEGACY_NO_TIME_STRING)))); - // Set tasks with time to have time HH:MM:01 - processCursor(tasksWithDueTime, new TaskDateAdjuster() { - @Override - public void adjust(Date date) { - date.setSeconds(1); - } - }); + try { + // Set tasks with time to have time HH:MM:01 + processCursor(tasksWithDueTime, new TaskDateAdjuster() { + @Override + public void adjust(Date date) { + date.setSeconds(1); + } + }); - // Set tasks without time to 12:00:00 - processCursor(tasksWithoutDueTime, new TaskDateAdjuster() { - @Override - public void adjust(Date date) { - date.setHours(12); - date.setMinutes(0); - date.setSeconds(0); - } - }); + // Set tasks without time to 12:00:00 + processCursor(tasksWithoutDueTime, new TaskDateAdjuster() { + @Override + public void adjust(Date date) { + date.setHours(12); + date.setMinutes(0); + date.setSeconds(0); + } + }); + } finally { + tasksWithDueTime.close(); + tasksWithoutDueTime.close(); + } Preferences.setBoolean(PREF_MIGRATED_DUE_TIMES, true); } } private void processCursor(TodorooCursor cursor, TaskDateAdjuster adjuster) { Task curr = new Task(); - try { - for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { + for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { curr.readFromCursor(cursor); long time = curr.getValue(Task.DUE_DATE) / 1000L * 1000L; Date date = new Date(time); adjuster.adjust(date); curr.setValue(Task.DUE_DATE, date.getTime()); taskDao.save(curr); - } - } finally { - cursor.close(); } }