Refactored some things in TagService to use UUIDs

pull/14/head
Sam Bosley 12 years ago
parent 4ad09ff6ee
commit d0fd66cdd0

@ -1146,11 +1146,7 @@ public final class ActFmSyncService {
invokeFetchList("task", manual, null, new TaskListItemProcessor(manual) {
@Override
protected void deleteExtras(Long[] localIds) {
taskService.deleteWhere(Criterion.and(
TagService.memberOfTagData(tagData.getValue(TagData.REMOTE_ID)),
TaskCriteria.activeAndVisible(),
Task.REMOTE_ID.isNotNull(),
Criterion.not(Task.ID.in(localIds))));
//
}
}, done, "tasks:" + tagData.getId(), "tag_id", tagData.getValue(TagData.REMOTE_ID));
}

@ -16,6 +16,7 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
@ -107,9 +108,16 @@ public class TagCaseMigrator {
addTasksToTargetTag(renameMap.get(tag), targetNameForTag(tag));
}
@Deprecated
private static Criterion tagEq(String tag, Criterion additionalCriterion) {
return Criterion.and(
MetadataCriteria.withKey(TagMetadata.KEY), TagMetadata.TAG_NAME.eq(tag),
additionalCriterion);
}
private void addTasksToTargetTag(String tag, String target) {
TodorooCursor<Task> tasks = taskService.query(Query.select(Task.ID).join(Join.inner(Metadata.TABLE,
Task.ID.eq(Metadata.TASK))).where(TagService.tagEq(tag, Criterion.all)));
Task.ID.eq(Metadata.TASK))).where(tagEq(tag, Criterion.all)));
try {
for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
Task curr = new Task(tasks);

@ -161,12 +161,8 @@ public final class TagService {
}
public static Criterion memberOfTagData(long tagDataUUID) {
return Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).where(
Criterion.and(Metadata.KEY.eq(TagMetadata.KEY), TagMetadata.TAG_UUID.eq(tagDataUUID))));
}
public static Criterion tagEq(String tag, Criterion additionalCriterion) {
@Deprecated
private static Criterion tagEq(String tag, Criterion additionalCriterion) {
return Criterion.and(
MetadataCriteria.withKey(TagMetadata.KEY), TagMetadata.TAG_NAME.eq(tag),
additionalCriterion);
@ -179,7 +175,7 @@ public final class TagService {
}
public QueryTemplate untaggedTemplate() {
Long[] emergentTags = getEmergentTagIds();
String[] emergentTags = getEmergentTagIds();
return new QueryTemplate().where(Criterion.and(
Criterion.not(Task.UUID.in(Query.select(TagMetadata.TASK_UUID).from(Metadata.TABLE)
@ -222,18 +218,20 @@ public final class TagService {
}
}
public Long[] getEmergentTagIds() {
TodorooCursor<TagData> emergent = tagDataService.query(Query.select(TagData.ID)
public String[] getEmergentTagIds() {
TodorooCursor<TagData> emergent = tagDataService.query(Query.select(TagData.UUID)
.where(Functions.bitwiseAnd(TagData.FLAGS, TagData.FLAG_EMERGENT).gt(0)));
try {
Long[] tags = new Long[emergent.getCount()];
ArrayList<String> tags = new ArrayList<String>();
TagData data = new TagData();
for (int i = 0; i < emergent.getCount(); i++) {
emergent.moveToPosition(i);
data.readFromCursor(emergent);
tags[i] = data.getId();
String uuid = data.getValue(TagData.UUID);
if (!TextUtils.isEmpty(uuid) && !"0".equals(uuid))
tags.add(uuid);
}
return tags;
return tags.toArray(new String[tags.size()]);
} finally {
emergent.close();
}
@ -337,7 +335,7 @@ public final class TagService {
Metadata.DELETION_DATE.eq(0),
Metadata.TASK.eq(taskId))));
if (!includeEmergent)
criterion = Criterion.and(Criterion.not(TagData.ID.in(getEmergentTagIds())), criterion);
criterion = Criterion.and(Criterion.not(TagData.UUID.in(getEmergentTagIds())), criterion);
return tagDataService.query(Query.select(properties).where(criterion));
}

@ -950,7 +950,7 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
if (getActiveTagData() != null)
tagName = getActiveTagData().getValue(TagData.NAME);
Long[] emergentTagIds = TagService.getInstance().getEmergentTagIds();
String[] emergentTagIds = TagService.getInstance().getEmergentTagIds();
StringProperty tagProperty = new StringProperty(null, TAGS_METADATA_JOIN + "." + TagMetadata.TAG_UUID.name);
Criterion tagsJoinCriterion = Criterion.and(

Loading…
Cancel
Save