From 936e1c924b59572177c2275f91a1d2ec9e04da10 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Fri, 15 Mar 2013 16:33:28 -0700 Subject: [PATCH] First pass at improving tag data members migration --- .../astrid/actfm/TagSettingsActivity.java | 2 +- .../todoroo/astrid/dao/TagMetadataDao.java | 28 ++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java index 47de92de5..6218933b6 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -355,7 +355,7 @@ public class TagSettingsActivity extends FragmentActivity { imm.hideSoftInputFromWindow(tagName.getWindowToken(), 0); tagDataService.save(tagData); - tagMetadataDao.synchronizeMembers(tagData.getId(), tagData.getUuid(), members); + tagMetadataDao.synchronizeMembers(tagData, tagData.getValue(TagData.MEMBERS), tagData.getUuid(), members); if (isNewTag) { setResult(RESULT_OK, new Intent().putExtra(TOKEN_NEW_FILTER, diff --git a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java index 2389efeed..0edbf1877 100644 --- a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java @@ -9,6 +9,7 @@ import java.util.HashSet; import java.util.Set; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import android.content.ContentValues; @@ -146,7 +147,8 @@ public class TagMetadataDao extends DatabaseDao { } } - public void synchronizeMembers(long tagId, String tagUuid, JSONArray members) { + public void synchronizeMembers(TagData tagData, String legacyMembersString, String tagUuid, JSONArray members) { + long tagId = tagData.getId(); Set emails = new HashSet(); Set ids = new HashSet(); @@ -163,6 +165,30 @@ public class TagMetadataDao extends DatabaseDao { } } + if (!TextUtils.isEmpty(legacyMembersString)) { + try { + JSONArray legacyMembers = new JSONArray(legacyMembersString); + for (int i = 0; i < legacyMembers.length(); i++) { + JSONObject user = legacyMembers.optJSONObject(i); + if (user != null) { + String id = user.optString("id"); //$NON-NLS-1$ + String email = user.optString("email"); //$NON-NLS-1$ + + if (!TextUtils.isEmpty(id) && ids.contains(id)) { + createMemberLink(tagId, tagUuid, id, false); + } else if (!TextUtils.isEmpty(email) && emails.contains(email)) { + createMemberLink(tagId, tagUuid, email, false); + } + } + + } + } catch (JSONException e) { + // + } + tagData.setValue(TagData.MEMBERS, ""); //$NON-NLS-1$ + PluginServices.getTagDataDao().saveExisting(tagData); + } + TodorooCursor currentMembers = query(Query.select(TagMemberMetadata.USER_UUID).where(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY))); try { TagMetadata m = new TagMetadata();