Tombstone tag metadata when list deleted during sync

pull/14/head
Sam Bosley 12 years ago
parent 336f01889c
commit 0e42f0c61f

@ -15,6 +15,7 @@ import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmInvoker; import com.todoroo.astrid.actfm.sync.ActFmInvoker;
import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.PluginServices;
@ -297,9 +298,27 @@ public class MakeChanges<TYPE extends RemoteModel> extends ServerToClientMessage
uuidChanged(oldUuid, uuid); uuidChanged(oldUuid, uuid);
} }
if (changes.has("name")) { String nameCol = NameMaps.localPropertyToServerColumnName(NameMaps.TABLE_ID_TAGS, TagData.NAME);
String deletedCol = NameMaps.localPropertyToServerColumnName(NameMaps.TABLE_ID_TAGS, TagData.DELETION_DATE);
if (changes.has(nameCol)) {
Metadata template = new Metadata(); Metadata template = new Metadata();
template.setValue(TaskToTagMetadata.TAG_NAME, changes.optString("name")); template.setValue(TaskToTagMetadata.TAG_NAME, changes.optString(nameCol));
PluginServices.getMetadataService().update(
Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
TaskToTagMetadata.TAG_UUID.eq(uuid)), template);
} else if (changes.has(deletedCol)) {
Metadata template = new Metadata();
String valueString = changes.optString(deletedCol);
long deletedValue = 0;
if (!TextUtils.isEmpty(valueString)) {
try {
deletedValue = DateUtilities.parseIso8601(valueString);
} catch (Exception e){
//
}
}
template.setValue(Metadata.DELETION_DATE, deletedValue);
template.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
PluginServices.getMetadataService().update( PluginServices.getMetadataService().update(
Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
TaskToTagMetadata.TAG_UUID.eq(uuid)), template); TaskToTagMetadata.TAG_UUID.eq(uuid)), template);

@ -328,7 +328,7 @@ public class NameMaps {
// Mapping helpers // Mapping helpers
// ---------- // ----------
private static <A, B> B mapColumnName(String table, String col, Map<A, B> taskMap, Map<A, B> tagMap, Map<A, B> userMap, private static <A, B> B mapColumnName(String table, A col, Map<A, B> taskMap, Map<A, B> tagMap, Map<A, B> userMap,
Map<A, B> userActivityMap, Map<A, B> taskAttachmentMap, Map<A, B> taskListMetadataMap) { Map<A, B> userActivityMap, Map<A, B> taskAttachmentMap, Map<A, B> taskListMetadataMap) {
Map<A, B> map = null; Map<A, B> map = null;
if (TABLE_ID_TASKS.equals(table)) if (TABLE_ID_TASKS.equals(table))
@ -373,6 +373,11 @@ public class NameMaps {
return false; return false;
} }
public static String localPropertyToServerColumnName(String table, Property<?> localProperty) {
return mapColumnName(table, localProperty, TASK_PROPERTIES_LOCAL_TO_SERVER, TAG_DATA_PROPERTIES_LOCAL_TO_SERVER, USER_PROPERTIES_LOCAL_TO_SERVER,
USER_ACTIVITY_PROPERTIES_LOCAL_TO_SERVER, TASK_ATTACHMENT_PROPERTIES_LOCAL_TO_SERVER, TASK_LIST_METADATA_PROPERTIES_LOCAL_TO_SERVER);
}
public static String localColumnNameToServerColumnName(String table, String localColumn) { public static String localColumnNameToServerColumnName(String table, String localColumn) {
return mapColumnName(table, localColumn, TASK_COLUMNS_LOCAL_TO_SERVER, TAG_DATA_COLUMNS_LOCAL_TO_SERVER, USER_COLUMNS_LOCAL_TO_SERVER, return mapColumnName(table, localColumn, TASK_COLUMNS_LOCAL_TO_SERVER, TAG_DATA_COLUMNS_LOCAL_TO_SERVER, USER_COLUMNS_LOCAL_TO_SERVER,
USER_ACTIVITY_COLUMNS_LOCAL_TO_SERVER, TASK_ATTACHMENT_COLUMNS_LOCAL_TO_SERVER, TASK_LIST_METADATA_COLUMNS_LOCAL_TO_SERVER); USER_ACTIVITY_COLUMNS_LOCAL_TO_SERVER, TASK_ATTACHMENT_COLUMNS_LOCAL_TO_SERVER, TASK_LIST_METADATA_COLUMNS_LOCAL_TO_SERVER);

Loading…
Cancel
Save