From 00625738b735083425a37892173a144cbfcd2a95 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Tue, 9 Apr 2013 15:19:33 -0700 Subject: [PATCH] Empty title outstanding entry migration shouldn't be an inline upgrade: --- .../EmptyTitleOutstandingEntryMigration.java | 43 +++++++++++++++++++ .../astrid/service/UpgradeService.java | 32 +++----------- 2 files changed, 49 insertions(+), 26 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java new file mode 100644 index 000000000..41ba0984f --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java @@ -0,0 +1,43 @@ +package com.todoroo.astrid.actfm.sync; + +import java.util.ArrayList; +import java.util.List; + +import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.sql.Criterion; +import com.todoroo.andlib.sql.Query; +import com.todoroo.astrid.dao.TaskOutstandingDao; +import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.data.TaskOutstanding; + +public class EmptyTitleOutstandingEntryMigration { + + @Autowired + private TaskOutstandingDao taskOutstandingDao; + + public void performMigration() { + try { + TodorooCursor outstandingWithTitle = taskOutstandingDao + .query(Query.select(TaskOutstanding.TASK_ID) + .where(Criterion.and(TaskOutstanding.COLUMN_STRING.eq(Task.TITLE.name), + Criterion.or(TaskOutstanding.VALUE_STRING.isNotNull(), TaskOutstanding.VALUE_STRING.neq("")))) //$NON-NLS-1$ + .groupBy(TaskOutstanding.TASK_ID)); + List ids = new ArrayList(); + for (outstandingWithTitle.moveToFirst(); !outstandingWithTitle.isAfterLast(); outstandingWithTitle.moveToNext()) { + try { + ids.add(outstandingWithTitle.get(TaskOutstanding.TASK_ID)); + } catch (Exception e) { + // + } + } + + taskOutstandingDao.deleteWhere(Criterion.and(TaskOutstanding.TASK_ID.in(ids.toArray(new Long[ids.size()])), + TaskOutstanding.COLUMN_STRING.eq(Task.TITLE.name), + Criterion.or(TaskOutstanding.VALUE_STRING.isNull(), TaskOutstanding.VALUE_STRING.eq("")))); //$NON-NLS-1$ + } catch (Exception e) { + // + } + } + +} diff --git a/astrid/src/com/todoroo/astrid/service/UpgradeService.java b/astrid/src/com/todoroo/astrid/service/UpgradeService.java index 20c31c71d..f8f08f0a9 100644 --- a/astrid/src/com/todoroo/astrid/service/UpgradeService.java +++ b/astrid/src/com/todoroo/astrid/service/UpgradeService.java @@ -5,9 +5,6 @@ */ package com.todoroo.astrid.service; -import java.util.ArrayList; -import java.util.List; - import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; @@ -27,6 +24,7 @@ import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.AstridNewSyncMigrator; +import com.todoroo.astrid.actfm.sync.EmptyTitleOutstandingEntryMigration; import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.Eula; import com.todoroo.astrid.api.AstridApiConstants; @@ -36,7 +34,6 @@ import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.data.TaskOutstanding; import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.helper.DueDateTimeMigrator; import com.todoroo.astrid.service.abtesting.ABChooser; @@ -182,7 +179,7 @@ public final class UpgradeService { Preferences.setInt(AstridPreferences.P_UPGRADE_FROM, from); - int maxWithUpgrade = V4_6_0_BETA; // The last version that required a migration + int maxWithUpgrade = V4_6_2; // The last version that required a migration Preferences.setInt(AstridPreferences.P_UPGRADE_FROM, from); @@ -249,6 +246,10 @@ public final class UpgradeService { new GCMIntentService.GCMMigration().performMigration(UpgradeActivity.this); } + if (from < V4_6_2) { + new EmptyTitleOutstandingEntryMigration().performMigration(); + } + } finally { finished = true; DialogUtilities.dismissDialog(UpgradeActivity.this, dialog); @@ -284,27 +285,6 @@ public final class UpgradeService { if (from < V4_6_2) { Preferences.setBoolean(R.string.p_show_timer_shortcut, true); - try { - TodorooCursor outstandingWithTitle = PluginServices.getTaskOutstandingDao() - .query(Query.select(TaskOutstanding.TASK_ID) - .where(Criterion.and(TaskOutstanding.COLUMN_STRING.eq(Task.TITLE.name), - Criterion.or(TaskOutstanding.VALUE_STRING.isNotNull(), TaskOutstanding.VALUE_STRING.neq("")))) //$NON-NLS-1$ - .groupBy(TaskOutstanding.TASK_ID)); - List ids = new ArrayList(); - for (outstandingWithTitle.moveToFirst(); !outstandingWithTitle.isAfterLast(); outstandingWithTitle.moveToNext()) { - try { - ids.add(outstandingWithTitle.get(TaskOutstanding.TASK_ID)); - } catch (Exception e) { - // - } - } - - PluginServices.getTaskOutstandingDao().deleteWhere(Criterion.and(TaskOutstanding.TASK_ID.in(ids.toArray(new Long[ids.size()])), - TaskOutstanding.COLUMN_STRING.eq(Task.TITLE.name), - Criterion.or(TaskOutstanding.VALUE_STRING.isNull(), TaskOutstanding.VALUE_STRING.eq("")))); //$NON-NLS-1$ - } catch (Exception e) { - // - } } }