Fixed sad bugs in empty title migration, also push attachments for those tasks

pull/14/head
Sam Bosley 11 years ago
parent e3dfa88ecf
commit 8fa2bd531b

@ -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<TaskOutstanding> 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<Long> ids = new ArrayList<Long>();
List<String> uuids = new ArrayList<String>();
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<TaskAttachment, TaskAttachmentOutstanding>(NameMaps.TABLE_ID_ATTACHMENTS,
taskAttachmentDao, taskAttachmentOutstandingDao, TaskAttachment.CREATED_AT).execute(TaskAttachment.TASK_UUID.in(uuids.toArray(new String[uuids.size()])));
} catch (Exception e) {
//
}

@ -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<TYPE extends RemoteModel,
}
public void execute() {
execute(Criterion.all);
}
public void execute(Criterion criterion) {
Property<?>[] syncableProperties = NameMaps.syncableProperties(table);
TodorooCursor<TYPE> items = dao.query(Query.select(AndroidUtilities.addToArray(Property.class, syncableProperties, AbstractModel.ID_PROPERTY, RemoteModel.UUID_PROPERTY)));
TodorooCursor<TYPE> 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()) {

Loading…
Cancel
Save