diff --git a/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java index 7170dee84..228298853 100644 --- a/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -24,7 +24,6 @@ import android.widget.EditText; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback; -import com.todoroo.astrid.dao.TagMetadataDao; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.service.TagDataService; @@ -62,7 +61,6 @@ public class TagSettingsActivity extends InjectingActionBarActivity { @Inject TagService tagService; @Inject TagDataService tagDataService; - @Inject TagMetadataDao tagMetadataDao; @Inject ActivityPreferences preferences; @Inject ResourceResolver resourceResolver; @@ -182,7 +180,6 @@ public class TagSettingsActivity extends InjectingActionBarActivity { imm.hideSoftInputFromWindow(tagName.getWindowToken(), 0); tagDataService.save(tagData); - tagMetadataDao.synchronizeMembers(tagData, tagData.getMembers(), tagData.getUuid(), members); if (isNewTag) { setResult(RESULT_OK, new Intent().putExtra(TOKEN_NEW_FILTER, diff --git a/astrid/src/main/java/com/todoroo/astrid/dao/TagMetadataDao.java b/astrid/src/main/java/com/todoroo/astrid/dao/TagMetadataDao.java deleted file mode 100644 index 4b485074d..000000000 --- a/astrid/src/main/java/com/todoroo/astrid/dao/TagMetadataDao.java +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.dao; - -import android.text.TextUtils; - -import com.todoroo.andlib.data.DatabaseDao; -import com.todoroo.andlib.data.TodorooCursor; -import com.todoroo.andlib.sql.Criterion; -import com.todoroo.andlib.sql.Query; -import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.astrid.data.Metadata; -import com.todoroo.astrid.data.TagData; -import com.todoroo.astrid.data.TagMetadata; -import com.todoroo.astrid.tags.TagMemberMetadata; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * Data Access layer for {@link Metadata}-related operations. - * - * @author Tim Su - * - */ -@Singleton -public class TagMetadataDao extends DatabaseDao { - - private static final Logger log = LoggerFactory.getLogger(TagMetadataDao.class); - - private final TagDataDao tagDataDao; - - @Inject - public TagMetadataDao(Database database, TagDataDao tagDataDao) { - super(TagMetadata.class); - this.tagDataDao = tagDataDao; - setDatabase(database); - } - - public static class TagMetadataCriteria { - /** Returns all metadata associated with a given task */ - public static Criterion byTag(String tagUuid) { - return TagMetadata.TAG_UUID.eq(tagUuid); - } - - /** Returns all metadata associated with a given key */ - public static Criterion withKey(String key) { - return TagMetadata.KEY.eq(key); - } - - /** Returns all metadata associated with a given key */ - public static Criterion byTagAndWithKey(String tagUuid, String key) { - return Criterion.and(withKey(key), byTag(tagUuid)); - } - } - - public void createMemberLink(long tagId, String tagUuid, String memberId) { - createMemberLink(tagId, tagUuid, memberId, false); - } - - public void createMemberLink(long tagId, String tagUuid, String memberId, boolean removedMember) { - TagMetadata newMetadata = TagMemberMetadata.newMemberMetadata(tagId, tagUuid, memberId); - if (removedMember) { - newMetadata.setDeletionDate(DateUtilities.now()); - } - if (update(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY), - TagMemberMetadata.USER_UUID.eq(memberId)), newMetadata) <= 0) { - createNew(newMetadata); - } - } - - public void removeMemberLink(long tagId, String tagUuid, String memberId) { - TagMetadata deleteTemplate = new TagMetadata(); - deleteTemplate.setTagID(tagId); // Need this for recording changes in outstanding table - deleteTemplate.setDeletionDate(DateUtilities.now()); - deleteTemplate.setValue(TagMemberMetadata.USER_UUID, memberId); // Need this for recording changes in outstanding table - - update(Criterion.and(TagMetadataCriteria.withKey(TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0), - TagMetadata.TAG_UUID.eq(tagUuid), TagMemberMetadata.USER_UUID.eq(memberId)), deleteTemplate); - } - - public void synchronizeMembers(TagData tagData, String legacyMembersString, String tagUuid, JSONArray members) { - long tagId = tagData.getId(); - Set emails = new HashSet<>(); - Set ids = new HashSet<>(); - - HashMap idToEmail = new HashMap<>(); - - for (int i = 0; i < members.length(); i++) { - JSONObject person = members.optJSONObject(i); - if (person != null) { - String id = person.optString("id"); //$NON-NLS-1$ - if (!TextUtils.isEmpty(id)) { - ids.add(id); - } - - String email = person.optString("email"); //$NON-NLS-1$ - if (!TextUtils.isEmpty(email)) { - emails.add(email); - } - - if (!TextUtils.isEmpty(id) && !TextUtils.isEmpty(email)) { - idToEmail.put(id, email); - } - } - } - - 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)) { - createMemberLink(tagId, tagUuid, id, !ids.contains(id)); - } else if (!TextUtils.isEmpty(email)) { - createMemberLink(tagId, tagUuid, email, !emails.contains(email)); - } - } - - } - } catch (JSONException e) { - log.error(e.getMessage(), e); - } - tagData.setMembers(""); //$NON-NLS-1$ - tagDataDao.saveExisting(tagData); - } - - TodorooCursor currentMembers = query(Query.select(TagMemberMetadata.USER_UUID).where(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY))); - try { - TagMetadata m = new TagMetadata(); - for (currentMembers.moveToNext(); !currentMembers.isAfterLast(); currentMembers.moveToNext()) { - m.clear(); - m.readFromCursor(currentMembers); - - String userId = m.getValue(TagMemberMetadata.USER_UUID); - boolean exists = ids.remove(userId) || emails.remove(userId); - if (exists && idToEmail.containsKey(userId)) { - String email = idToEmail.get(userId); - emails.remove(email); - } - - if (!exists) { // Was in database, but not in new members list - removeMemberLink(tagId, tagUuid, userId); - } - } - } finally { - currentMembers.close(); - } - - for (String email : emails) { - createMemberLink(tagId, tagUuid, email); - } - - for (String id : ids) { - createMemberLink(tagId, tagUuid, id); - } - } -} - diff --git a/astrid/src/main/java/org/tasks/Tasks.java b/astrid/src/main/java/org/tasks/Tasks.java index 81d9c4f9e..417f78a8c 100644 --- a/astrid/src/main/java/org/tasks/Tasks.java +++ b/astrid/src/main/java/org/tasks/Tasks.java @@ -5,7 +5,6 @@ import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TagDataDao; -import com.todoroo.astrid.dao.TagMetadataDao; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskListMetadataDao; @@ -36,7 +35,6 @@ public class Tasks extends InjectingApplication { @Inject Database database; @Inject TaskDao taskDao; @Inject MetadataDao metadataDao; - @Inject TagMetadataDao tagMetadataDao; @Inject TagDataDao tagDataDao; @Inject StoreObjectDao storeObjectDao; @Inject UserActivityDao userActivityDao;