Update tag and tagdata deletion

pull/848/head
Alex Baker 6 years ago
parent 3f71329f61
commit 3d83bd381b

@ -256,8 +256,8 @@ public class Upgrader {
} }
private void removeDuplicateTagData(List<TagData> tagData) { private void removeDuplicateTagData(List<TagData> tagData) {
for (int i = 1; i < tagData.size(); i++) { if (tagData.size() > 1) {
tagDataDao.delete(tagData.get(i).getId()); tagDataDao.delete(tagData.subList(1, tagData.size()));
} }
} }
@ -265,9 +265,9 @@ public class Upgrader {
List<Tag> metadatas = tagDao.getByTagUid(uuid); List<Tag> metadatas = tagDao.getByTagUid(uuid);
ImmutableListMultimap<Long, Tag> metadataByTask = Multimaps.index(metadatas, Tag::getTask); ImmutableListMultimap<Long, Tag> metadataByTask = Multimaps.index(metadatas, Tag::getTask);
for (Long key : metadataByTask.keySet()) { for (Long key : metadataByTask.keySet()) {
ImmutableList<Tag> tagData = metadataByTask.get(key); ImmutableList<Tag> tags = metadataByTask.get(key);
for (int i = 1; i < tagData.size(); i++) { if (tags.size() > 1) {
tagDao.deleteById(tagData.get(i).getId()); tagDao.delete(tags.subList(1, tags.size()));
} }
} }
} }

@ -166,8 +166,7 @@ public class TagSettingsActivity extends BaseListSettingsActivity {
protected void delete() { protected void delete() {
if (tagData != null) { if (tagData != null) {
String uuid = tagData.getRemoteId(); String uuid = tagData.getRemoteId();
tagDao.deleteTag(uuid); tagDataDao.delete(tagData);
tagDataDao.delete(tagData.getId());
setResult( setResult(
RESULT_OK, RESULT_OK,
new Intent(TaskListFragment.ACTION_DELETED).putExtra(EXTRA_TAG_UUID, uuid)); new Intent(TaskListFragment.ACTION_DELETED).putExtra(EXTRA_TAG_UUID, uuid));

@ -6,6 +6,7 @@ import static com.google.common.collect.Sets.difference;
import static com.google.common.collect.Sets.newHashSet; import static com.google.common.collect.Sets.newHashSet;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Transaction; import androidx.room.Transaction;
@ -20,9 +21,6 @@ public abstract class TagDao {
@Query("UPDATE tags SET name = :name WHERE tag_uid = :tagUid") @Query("UPDATE tags SET name = :name WHERE tag_uid = :tagUid")
public abstract void rename(String tagUid, String name); public abstract void rename(String tagUid, String name);
@Query("DELETE FROM tags WHERE tag_uid = :tagUid")
public abstract void deleteTag(String tagUid);
@Insert @Insert
public abstract void insert(Tag tag); public abstract void insert(Tag tag);
@ -44,8 +42,8 @@ public abstract class TagDao {
@Query("SELECT * FROM tags WHERE task = :taskId AND tag_uid = :tagUid") @Query("SELECT * FROM tags WHERE task = :taskId AND tag_uid = :tagUid")
public abstract Tag getTagByTaskAndTagUid(long taskId, String tagUid); public abstract Tag getTagByTaskAndTagUid(long taskId, String tagUid);
@Query("DELETE FROM tags WHERE _id = :id") @Delete
public abstract void deleteById(long id); public abstract void delete(List<Tag> tags);
@Transaction @Transaction
public boolean applyTags(Task task, TagDataDao tagDataDao,List<TagData> current) { public boolean applyTags(Task task, TagDataDao tagDataDao,List<TagData> current) {

@ -2,8 +2,10 @@ package org.tasks.data;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Transaction;
import androidx.room.Update; import androidx.room.Update;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.helper.UUIDHelper;
@ -37,8 +39,20 @@ public abstract class TagDataDao {
@Query("SELECT * FROM tagdata WHERE name IS NOT NULL AND name != '' ORDER BY UPPER(name) ASC") @Query("SELECT * FROM tagdata WHERE name IS NOT NULL AND name != '' ORDER BY UPPER(name) ASC")
public abstract List<TagData> tagDataOrderedByName(); public abstract List<TagData> tagDataOrderedByName();
@Query("DELETE FROM tagdata WHERE _id = :id") @Delete
public abstract void delete(Long id); abstract void deleteTagData(TagData tagData);
@Query("DELETE FROM tags WHERE tag_uid = :tagUid")
abstract void deleteTags(String tagUid);
@Transaction
public void delete(TagData tagData) {
deleteTags(tagData.getRemoteId());
deleteTagData(tagData);
}
@Delete
public abstract void delete(List<TagData> tagData);
@Query("SELECT tagdata.* FROM tagdata " @Query("SELECT tagdata.* FROM tagdata "
+ "INNER JOIN tags ON tags.tag_uid = tagdata.remoteId " + "INNER JOIN tags ON tags.tag_uid = tagdata.remoteId "

Loading…
Cancel
Save