From 16a9f53311710649287dc77246ef802ffffc0077 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Mon, 4 Feb 2013 17:06:56 -0800 Subject: [PATCH] MetadataDao should fail transaction if information for the outstanding tables is missing and log the error --- api/src/com/todoroo/andlib/data/DatabaseDao.java | 4 ++++ astrid/src/com/todoroo/astrid/dao/MetadataDao.java | 2 +- .../todoroo/astrid/sync/AstridNewSyncMigrationTest.java | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/api/src/com/todoroo/andlib/data/DatabaseDao.java b/api/src/com/todoroo/andlib/data/DatabaseDao.java index 551a9cb84..836ac7ecf 100644 --- a/api/src/com/todoroo/andlib/data/DatabaseDao.java +++ b/api/src/com/todoroo/andlib/data/DatabaseDao.java @@ -38,6 +38,8 @@ import com.todoroo.astrid.data.SyncFlags; */ public class DatabaseDao { + private static final String ERROR_TAG = "database-dao"; //$NON-NLS-1$ + private final Class modelClass; private Table table; @@ -235,6 +237,7 @@ public class DatabaseDao { database.getDatabase().beginTransactionWithListener(new SQLiteTransactionListener() { @Override public void onRollback() { + Log.e(ERROR_TAG, "Error updating rows", new Throwable()); //$NON-NLS-1$ result.set(0); } @Override @@ -298,6 +301,7 @@ public class DatabaseDao { database.getDatabase().beginTransactionWithListener(new SQLiteTransactionListener() { @Override public void onRollback() { + Log.e(ERROR_TAG, "Error inserting or updating rows", new Throwable()); //$NON-NLS-1$ result.set(false); } @Override diff --git a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java index 3ea1c5f02..ef93af688 100644 --- a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java @@ -92,7 +92,7 @@ public class MetadataDao extends DatabaseDao { String tagUuid = modelSetValues.getAsString(TaskToTagMetadata.TAG_UUID.name); Long deletionDate = modelSetValues.getAsLong(Metadata.DELETION_DATE.name); if (taskId == null || taskId == AbstractModel.NO_ID || RemoteModel.isUuidEmpty(tagUuid)) - return true; + return false; TaskOutstanding to = new TaskOutstanding(); to.setValue(OutstandingEntry.ENTITY_ID_PROPERTY, taskId); diff --git a/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java b/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java index 76ea2b0ed..b29cc708f 100644 --- a/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java +++ b/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java @@ -17,6 +17,7 @@ import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.RemoteModelDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.RemoteModel; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.tags.TaskToTagMetadata; @@ -54,41 +55,48 @@ public class AstridNewSyncMigrationTest extends NewSyncTestCase { m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 1L); m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 1"); + m.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(m); m.clear(); m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 2L); m.setValue(TaskToTagMetadata.TAG_NAME, "New tag"); + m.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(m); m.clear(); m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 3L); m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 3"); + m.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(m); m.clear(); m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 3L); m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 4"); + m.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(m); m.clear(); m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 5L); m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 1"); + m.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(m); m.clear(); m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 5L); m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 5"); + m.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(m); m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 5L); m.setValue(TaskToTagMetadata.TAG_NAME, "New tag 2"); + m.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(m); // State (task: tags)