Try to migrate users with empty title outstanding entries by deleting those entries if a valid one for the task exists elsewhere in the table

pull/14/head
Sam Bosley 11 years ago
parent dc79636647
commit 1d67648460

@ -67,7 +67,6 @@ import com.todoroo.astrid.actfm.CommentsActivity;
import com.todoroo.astrid.actfm.EditPeopleControlSet;
import com.todoroo.astrid.actfm.TaskCommentsFragment;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.TaskAttachmentDao;
import com.todoroo.astrid.dao.TaskOutstandingDao;
@ -835,7 +834,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
if (isNewTask) {
taskOutstandingDao.deleteWhere(Criterion.and(TaskOutstanding.TASK_ID.eq(model.getId()),
TaskOutstanding.COLUMN_STRING.eq(NameMaps.localPropertyToServerColumnName(NameMaps.TABLE_ID_TASKS, Task.TITLE)),
TaskOutstanding.COLUMN_STRING.eq(Task.TITLE.name),
Criterion.or(TaskOutstanding.VALUE_STRING.isNull(), TaskOutstanding.VALUE_STRING.eq("")))); //$NON-NLS-1$
}

@ -5,6 +5,9 @@
*/
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;
@ -33,6 +36,7 @@ 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;
@ -280,6 +284,27 @@ public final class UpgradeService {
if (from < V4_6_2) {
Preferences.setBoolean(R.string.p_show_timer_shortcut, true);
try {
TodorooCursor<TaskOutstanding> 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<Long> ids = new ArrayList<Long>();
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) {
//
}
}
}

Loading…
Cancel
Save