diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java index 41ba0984f..acc685a72 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/EmptyTitleOutstandingEntryMigration.java @@ -5,10 +5,18 @@ import java.util.List; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Criterion; +import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.Query; +import com.todoroo.astrid.actfm.sync.messages.ConstructOutstandingTableFromMasterTable; +import com.todoroo.astrid.actfm.sync.messages.NameMaps; +import com.todoroo.astrid.dao.TaskAttachmentDao; +import com.todoroo.astrid.dao.TaskAttachmentOutstandingDao; import com.todoroo.astrid.dao.TaskOutstandingDao; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.data.TaskAttachment; +import com.todoroo.astrid.data.TaskAttachmentOutstanding; import com.todoroo.astrid.data.TaskOutstanding; public class EmptyTitleOutstandingEntryMigration { @@ -16,17 +24,30 @@ public class EmptyTitleOutstandingEntryMigration { @Autowired private TaskOutstandingDao taskOutstandingDao; + @Autowired + private TaskAttachmentDao taskAttachmentDao; + + @Autowired + private TaskAttachmentOutstandingDao taskAttachmentOutstandingDao; + + public EmptyTitleOutstandingEntryMigration() { + DependencyInjectionService.getInstance().inject(this); + } + public void performMigration() { try { TodorooCursor outstandingWithTitle = taskOutstandingDao - .query(Query.select(TaskOutstanding.TASK_ID) + .query(Query.select(TaskOutstanding.TASK_ID, Task.UUID) + .join(Join.left(Task.TABLE, Task.ID.eq(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(); + List uuids = new ArrayList(); for (outstandingWithTitle.moveToFirst(); !outstandingWithTitle.isAfterLast(); outstandingWithTitle.moveToNext()) { try { ids.add(outstandingWithTitle.get(TaskOutstanding.TASK_ID)); + uuids.add(outstandingWithTitle.get(Task.UUID)); } catch (Exception e) { // } @@ -35,6 +56,9 @@ public class EmptyTitleOutstandingEntryMigration { 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$ + + new ConstructOutstandingTableFromMasterTable(NameMaps.TABLE_ID_ATTACHMENTS, + taskAttachmentDao, taskAttachmentOutstandingDao, TaskAttachment.CREATED_AT).execute(TaskAttachment.TASK_UUID.in(uuids.toArray(new String[uuids.size()]))); } catch (Exception e) { // } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ConstructOutstandingTableFromMasterTable.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ConstructOutstandingTableFromMasterTable.java index 316bf94bc..8926d8a11 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ConstructOutstandingTableFromMasterTable.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ConstructOutstandingTableFromMasterTable.java @@ -6,6 +6,7 @@ import com.todoroo.andlib.data.AbstractModel; import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; @@ -35,8 +36,12 @@ public class ConstructOutstandingTableFromMasterTable[] syncableProperties = NameMaps.syncableProperties(table); - TodorooCursor items = dao.query(Query.select(AndroidUtilities.addToArray(Property.class, syncableProperties, AbstractModel.ID_PROPERTY, RemoteModel.UUID_PROPERTY))); + TodorooCursor items = dao.query(Query.select(AndroidUtilities.addToArray(Property.class, syncableProperties, AbstractModel.ID_PROPERTY, RemoteModel.UUID_PROPERTY)).where(criterion)); try { OE oe = outstandingDao.getModelClass().newInstance(); for (items.moveToFirst(); !items.isAfterLast(); items.moveToNext()) {