diff --git a/api/src/com/todoroo/andlib/data/DatabaseDao.java b/api/src/com/todoroo/andlib/data/DatabaseDao.java index 370c78303..a6cc41c4c 100644 --- a/api/src/com/todoroo/andlib/data/DatabaseDao.java +++ b/api/src/com/todoroo/andlib/data/DatabaseDao.java @@ -388,7 +388,7 @@ public class DatabaseDao { long now = DateUtilities.now(); int count = 0; for (Entry entry : entries) { - if (entry.getValue() != null && shouldRecordOutstandingEntry(entry.getKey())) { + if (entry.getValue() != null && shouldRecordOutstandingEntry(entry.getKey(), entry.getValue())) { AbstractModel m; try { m = outstandingTable.modelClass.newInstance(); @@ -415,7 +415,7 @@ public class DatabaseDao { * @param columnName * @return */ - protected boolean shouldRecordOutstandingEntry(String columnName) { + protected boolean shouldRecordOutstandingEntry(String columnName, Object value) { return true; } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java index e32aed89d..d19eef417 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java @@ -194,16 +194,18 @@ public class NameMaps { private static final Map> USER_COLUMN_NAMES_TO_PROPERTIES; private static final Map USER_COLUMNS_LOCAL_TO_SERVER; private static final Map> USER_PROPERTIES_SERVER_TO_LOCAL; + private static final Set USER_PROPERTIES_EXCLUDED; private static void putUserPropertyToServerName(Property property, String serverName, boolean writeable) { putPropertyToServerName(property, serverName, USER_PROPERTIES_LOCAL_TO_SERVER, USER_COLUMN_NAMES_TO_PROPERTIES, - USER_COLUMNS_LOCAL_TO_SERVER, null, writeable); + USER_COLUMNS_LOCAL_TO_SERVER, USER_PROPERTIES_EXCLUDED, writeable); } static { USER_PROPERTIES_LOCAL_TO_SERVER = new HashMap, String>(); USER_COLUMN_NAMES_TO_PROPERTIES = new HashMap>(); USER_COLUMNS_LOCAL_TO_SERVER = new HashMap(); + USER_PROPERTIES_EXCLUDED = new HashSet(); putUserPropertyToServerName(User.UUID, "uuid", false); putUserPropertyToServerName(User.PICTURE, "picture", false); @@ -358,6 +360,9 @@ public class NameMaps { } else if (TABLE_ID_USER_ACTIVITY.equals(table)) { if (USER_ACTIVITY_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) return !USER_ACTIVITY_PROPERTIES_EXCLUDED.contains(column); + } else if (TABLE_ID_USERS.equals(table)) { + if (USER_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) + return !USER_PROPERTIES_EXCLUDED.contains(column); } else if (TABLE_ID_ATTACHMENTS.equals(table)) { if (TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) return !TASK_ATTACHMENT_PROPERTIES_EXCLUDED.contains(column); diff --git a/astrid/src/com/todoroo/astrid/dao/TagDataDao.java b/astrid/src/com/todoroo/astrid/dao/TagDataDao.java index e85d7953a..d99dc72dc 100644 --- a/astrid/src/com/todoroo/astrid/dao/TagDataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TagDataDao.java @@ -29,7 +29,7 @@ public class TagDataDao extends RemoteModelDao { } @Override - protected boolean shouldRecordOutstandingEntry(String columnName) { + protected boolean shouldRecordOutstandingEntry(String columnName, Object value) { return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_TAGS, columnName); } diff --git a/astrid/src/com/todoroo/astrid/dao/TaskAttachmentDao.java b/astrid/src/com/todoroo/astrid/dao/TaskAttachmentDao.java index ebacd6e35..1c4a9b312 100644 --- a/astrid/src/com/todoroo/astrid/dao/TaskAttachmentDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TaskAttachmentDao.java @@ -41,7 +41,7 @@ public class TaskAttachmentDao extends RemoteModelDao { } @Override - protected boolean shouldRecordOutstandingEntry(String columnName) { + protected boolean shouldRecordOutstandingEntry(String columnName, Object value) { return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_ATTACHMENTS, columnName); } diff --git a/astrid/src/com/todoroo/astrid/dao/TaskDao.java b/astrid/src/com/todoroo/astrid/dao/TaskDao.java index 7597902b8..befa3348e 100644 --- a/astrid/src/com/todoroo/astrid/dao/TaskDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TaskDao.java @@ -287,7 +287,7 @@ public class TaskDao extends RemoteModelDao { }; @Override - protected boolean shouldRecordOutstandingEntry(String columnName) { + protected boolean shouldRecordOutstandingEntry(String columnName, Object value) { return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_TASKS, columnName); } diff --git a/astrid/src/com/todoroo/astrid/dao/TaskListMetadataDao.java b/astrid/src/com/todoroo/astrid/dao/TaskListMetadataDao.java index 151b0e7fc..f8c17ec30 100644 --- a/astrid/src/com/todoroo/astrid/dao/TaskListMetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TaskListMetadataDao.java @@ -12,6 +12,7 @@ import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.astrid.actfm.sync.messages.NameMaps; +import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TaskListMetadata; @@ -33,7 +34,10 @@ public class TaskListMetadataDao extends RemoteModelDao { } @Override - protected boolean shouldRecordOutstandingEntry(String columnName) { + protected boolean shouldRecordOutstandingEntry(String columnName, Object value) { + if (TaskListMetadata.FILTER.name.equals(columnName) || TaskListMetadata.TAG_UUID.name.equals(columnName)) + return !RemoteModel.isUuidEmpty(value.toString()); + return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_TASK_LIST_METADATA, columnName); } diff --git a/astrid/src/com/todoroo/astrid/dao/UserActivityDao.java b/astrid/src/com/todoroo/astrid/dao/UserActivityDao.java index 9ce932089..b86a6e412 100644 --- a/astrid/src/com/todoroo/astrid/dao/UserActivityDao.java +++ b/astrid/src/com/todoroo/astrid/dao/UserActivityDao.java @@ -35,7 +35,7 @@ public class UserActivityDao extends RemoteModelDao { } @Override - protected boolean shouldRecordOutstandingEntry(String columnName) { + protected boolean shouldRecordOutstandingEntry(String columnName, Object value) { return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_USER_ACTIVITY, columnName); } } diff --git a/astrid/src/com/todoroo/astrid/dao/UserDao.java b/astrid/src/com/todoroo/astrid/dao/UserDao.java index 7276e7e67..7416ddbd3 100644 --- a/astrid/src/com/todoroo/astrid/dao/UserDao.java +++ b/astrid/src/com/todoroo/astrid/dao/UserDao.java @@ -7,6 +7,7 @@ package com.todoroo.astrid.dao; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.astrid.actfm.sync.messages.NameMaps; import com.todoroo.astrid.data.User; public class UserDao extends RemoteModelDao { @@ -18,4 +19,9 @@ public class UserDao extends RemoteModelDao { DependencyInjectionService.getInstance().inject(this); setDatabase(database); } + + @Override + protected boolean shouldRecordOutstandingEntry(String columnName, Object value) { + return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_USERS, columnName); + } }