From f3cced5d022364e39dba7dbc47cb824064eaadf7 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Thu, 24 Jan 2013 18:13:03 -0800 Subject: [PATCH] Added a tag metadata table for things like tag to user join table --- .../com/todoroo/astrid/data/TagMetadata.java | 99 +++++++++++++++++++ .../astrid/actfm/EditPeopleControlSet.java | 95 ++++++------------ .../astrid/actfm/sync/ActFmSyncService.java | 16 +-- .../actfm/sync/ActFmSyncV2Provider.java | 10 +- .../actfm/sync/AstridNewSyncMigrator.java | 30 +++--- .../actfm/sync/messages/MakeChanges.java | 8 +- .../astrid/core/CoreFilterExposer.java | 6 +- .../astrid/people/PeopleFilterExposer.java | 6 +- .../sync/ProducteevDataService.java | 6 +- .../sync/ProducteevSyncProvider.java | 14 +-- .../todoroo/astrid/tags/TagCaseMigrator.java | 10 +- .../tags/TagCustomFilterCriteriaExposer.java | 12 +-- .../todoroo/astrid/tags/TagFilterExposer.java | 6 +- .../astrid/tags/TagMemberMetadata.java | 12 +++ .../com/todoroo/astrid/tags/TagService.java | 80 +++++++-------- .../todoroo/astrid/tags/TagsControlSet.java | 2 +- ...agMetadata.java => TaskToTagMetadata.java} | 2 +- .../reusable/FeaturedListFilterExposer.java | 8 +- .../astrid/activity/TaskListFragment.java | 8 +- .../todoroo/astrid/adapter/TaskAdapter.java | 4 +- .../src/com/todoroo/astrid/dao/Database.java | 3 + .../com/todoroo/astrid/dao/MetadataDao.java | 8 +- .../service/Astrid2To3UpgradeHelper.java | 8 +- .../astrid/service/StartupService.java | 8 +- .../todoroo/astrid/service/TaskService.java | 10 +- .../sync/AstridNewSyncMigrationTest.java | 38 +++---- 26 files changed, 296 insertions(+), 213 deletions(-) create mode 100644 api/src/com/todoroo/astrid/data/TagMetadata.java create mode 100644 astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java rename astrid/plugin-src/com/todoroo/astrid/tags/{TagMetadata.java => TaskToTagMetadata.java} (97%) diff --git a/api/src/com/todoroo/astrid/data/TagMetadata.java b/api/src/com/todoroo/astrid/data/TagMetadata.java new file mode 100644 index 000000000..54ff15ef9 --- /dev/null +++ b/api/src/com/todoroo/astrid/data/TagMetadata.java @@ -0,0 +1,99 @@ +package com.todoroo.astrid.data; + +import android.content.ContentValues; +import android.net.Uri; + +import com.todoroo.andlib.data.AbstractModel; +import com.todoroo.andlib.data.Property; +import com.todoroo.andlib.data.Property.LongProperty; +import com.todoroo.andlib.data.Property.StringProperty; +import com.todoroo.andlib.data.Table; +import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.astrid.api.AstridApiConstants; + +@SuppressWarnings("nls") +public class TagMetadata extends AbstractModel { + + public static final Table TABLE = new Table("tag_metadata", TagMetadata.class); + + /** content uri for this model */ + public static final Uri CONTENT_URI = Uri.parse("content://" + AstridApiConstants.API_PACKAGE + "/" + + TABLE.name); + + // --- properties + + /** ID */ + public static final LongProperty ID = new LongProperty( + TABLE, ID_PROPERTY_NAME); + + /** Tag uuid */ + public static final StringProperty TAG_UUID = new StringProperty( + TABLE, "tag_uuid"); + + /** Metadata Key */ + public static final StringProperty KEY = new StringProperty( + TABLE, "key"); + + /** Metadata Text Value Column 1 */ + public static final StringProperty VALUE1 = new StringProperty( + TABLE, "value"); + + /** Metadata Text Value Column 2 */ + public static final StringProperty VALUE2 = new StringProperty( + TABLE, "value2"); + + /** Metadata Text Value Column 3 */ + public static final StringProperty VALUE3 = new StringProperty( + TABLE, "value3"); + + /** Unixtime Metadata was created */ + public static final LongProperty CREATION_DATE = new LongProperty( + TABLE, "created"); + + /** Unixtime metadata was deleted/tombstoned */ + public static final LongProperty DELETION_DATE = new LongProperty( + TABLE, "deleted"); + + /** List of all properties for this model */ + public static final Property[] PROPERTIES = generateProperties(TagMetadata.class); + + + /** Default values container */ + private static final ContentValues defaultValues = new ContentValues(); + + static { + defaultValues.put(DELETION_DATE.name, 0L); + } + + @Override + public ContentValues getDefaultValues() { + return defaultValues; + } + + public TagMetadata() { + super(); + } + + public TagMetadata(TodorooCursor cursor) { + this(); + readPropertiesFromCursor(cursor); + } + + public void readFromCursor(TodorooCursor cursor) { + super.readPropertiesFromCursor(cursor); + } + + @Override + public long getId() { + return getIdHelper(ID); + } + + // --- parcelable helpers + + private static final Creator CREATOR = new ModelCreator(TagMetadata.class); + + @Override + protected Creator getCreator() { + return CREATOR; + } +} diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java index 25c0c7d87..40b090295 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java @@ -53,8 +53,11 @@ import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.activity.TaskEditFragment; +import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.UserDao; +import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.TagData; +import com.todoroo.astrid.data.TagMetadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.User; import com.todoroo.astrid.helper.AsyncImageView; @@ -65,6 +68,7 @@ import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.abtesting.ABChooser; +import com.todoroo.astrid.tags.TagMemberMetadata; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.ui.PeopleContainer; import com.todoroo.astrid.ui.PeopleContainer.ParseSharedException; @@ -176,7 +180,6 @@ public class EditPeopleControlSet extends PopupControlSet { this.task = task; } - @SuppressWarnings("nls") public void setUpData(final Task task, final TagData includeTag) { new Thread(new Runnable() { @Override @@ -187,26 +190,13 @@ public class EditPeopleControlSet extends PopupControlSet { TagData tagData = new TagData(); for(tags.moveToFirst(); !tags.isAfterLast(); tags.moveToNext()) { tagData.readFromCursor(tags); - final String tag = tagData.getValue(TagData.NAME); - if(tagData.getValue(TagData.MEMBER_COUNT) > 0) { - try { - addMembersFromTagData(tagData, tag, sharedPeople); - } catch (JSONException e) { - exceptionService.reportError("json-reading-data", e); - } - } + addMembersFromTagData(tagData, sharedPeople); } if (includeTag != null && tags.getCount() == 0) { - try { - addMembersFromTagData(includeTag, null, sharedPeople); - } catch (JSONException e) { - exceptionService.reportError("json-reading-data", e); - } + addMembersFromTagData(includeTag, sharedPeople); } -// if(collaborators.size() > 0) -// buildCollaborators(collaborators); buildAssignedToSpinner(task, sharedPeople); } finally { tags.close(); @@ -216,56 +206,35 @@ public class EditPeopleControlSet extends PopupControlSet { }).start(); } - @SuppressWarnings("nls") - private static void addMembersFromTagData(TagData tagData, String tag, ArrayList sharedPeople) throws JSONException { - JSONArray members = new JSONArray(tagData.getValue(TagData.MEMBERS)); - if (tag == null) - tag = tagData.getValue(TagData.NAME); - for(int i = 0; i < members.length(); i++) { - JSONObject user = members.getJSONObject(i); - user.put("tag", tag); - sharedPeople.add(user); - } - if(!TextUtils.isEmpty(tagData.getValue(TagData.USER))) { - JSONObject user = new JSONObject(tagData.getValue(TagData.USER)); - user.put("tag", tag); - sharedPeople.add(user); + private static void addMembersFromTagData(TagData tagData, ArrayList sharedPeople) { + try { + JSONArray members = new JSONArray(tagData.getValue(TagData.MEMBERS)); + for (int i = 0; i < members.length(); i++) { + JSONObject user = members.getJSONObject(i); + sharedPeople.add(user); + } + if(!TextUtils.isEmpty(tagData.getValue(TagData.USER))) { + JSONObject user = new JSONObject(tagData.getValue(TagData.USER)); + sharedPeople.add(user); + } + } catch (JSONException e) { + TodorooCursor users = PluginServices.getUserDao().query(Query.select(User.PROPERTIES).where(User.UUID.in( + Query.select(TagMemberMetadata.USER_UUID).from(Metadata.TABLE).where(TagMetadata.TAG_UUID.eq(tagData.getUuid()))))); + User user = new User(); + for (users.moveToFirst(); !users.isAfterLast(); users.moveToNext()) { + user.clear(); + user.readFromCursor(users); + JSONObject userJson = new JSONObject(); + try { + ActFmSyncService.JsonHelper.jsonFromUser(userJson, user); + sharedPeople.add(userJson); + } catch (JSONException e2) { + // + } + } } } -// @SuppressWarnings("nls") -// private void buildCollaborators(final ArrayList sharedPeople) { -// -// activity.runOnUiThread(new Runnable() { -// @Override -// public void run() { -// HashSet userIds = new HashSet(); -// LinearLayout collaborators = (LinearLayout) getSharedWithView().findViewById(R.id.collaborators); -// -// for(JSONObject person : sharedPeople) { -// if(person == null) -// continue; -// long id = person.optLong("id", -1); -// if(id == 0 || id == ActFmPreferenceService.userId() || (id > -1 && userIds.contains(id))) -// continue; -// userIds.add(id); -// -// View contact = activity.getLayoutInflater().inflate(R.layout.contact_adapter_row, collaborators, false); -// AsyncImageView icon = (AsyncImageView) contact.findViewById(R.id.icon); -// TextView name = (TextView) contact.findViewById(android.R.id.text1); -// TextView tag = (TextView) contact.findViewById(android.R.id.text2); -// -// icon.setUrl(person.optString("picture")); -// name.setText(person.optString("name")); -// name.setTextAppearance(activity, R.style.TextAppearance_Medium); -// tag.setText(activity.getString(R.string.actfm_EPA_list, person.optString("tag"))); -// -// collaborators.addView(contact); -// } -// } -// }); -// } - public static class AssignedToUser { public String label; public JSONObject user; diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java index 8fc4ccdab..f766205cf 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -76,7 +76,7 @@ import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.abtesting.ABTestEventReportingService; import com.todoroo.astrid.subtasks.SubtasksHelper; import com.todoroo.astrid.sync.SyncV2Provider.SyncExceptionHandler; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.reusable.FeaturedListFilterExposer; import com.todoroo.astrid.utility.Flags; @@ -493,13 +493,13 @@ public final class ActFmSyncService { Metadata metadata = new Metadata(); for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { metadata.readFromCursor(cursor); - if(metadata.containsNonNullValue(TagMetadata.TAG_UUID) && - !RemoteModel.NO_UUID.equals(metadata.getValue(TagMetadata.TAG_UUID))) { + if(metadata.containsNonNullValue(TaskToTagMetadata.TAG_UUID) && + !RemoteModel.NO_UUID.equals(metadata.getValue(TaskToTagMetadata.TAG_UUID))) { params.add("tag_ids[]"); - params.add(metadata.getValue(TagMetadata.TAG_UUID)); + params.add(metadata.getValue(TaskToTagMetadata.TAG_UUID)); } else { params.add("tags[]"); - params.add(metadata.getValue(TagMetadata.TAG_NAME)); + params.add(metadata.getValue(TaskToTagMetadata.TAG_NAME)); } } } @@ -1014,7 +1014,7 @@ public final class ActFmSyncService { JsonHelper.taskFromJson(result, task, metadata); task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); taskService.save(task); - metadataService.synchronizeMetadata(task.getId(), metadata, Metadata.KEY.eq(TagMetadata.KEY), false); + metadataService.synchronizeMetadata(task.getId(), metadata, Metadata.KEY.eq(TaskToTagMetadata.KEY), false); synchronizeAttachments(result, task); } @@ -1524,7 +1524,7 @@ public final class ActFmSyncService { } ids.add(remote.getId()); - metadataService.synchronizeMetadata(remote.getId(), metadata, MetadataCriteria.withKey(TagMetadata.KEY), false); + metadataService.synchronizeMetadata(remote.getId(), metadata, MetadataCriteria.withKey(TaskToTagMetadata.KEY), false); synchronizeAttachments(item, remote); remote.clear(); } @@ -1847,7 +1847,7 @@ public final class ActFmSyncService { String name = tag.getString("name"); if(TextUtils.isEmpty(name)) continue; - Metadata tagMetadata = TagMetadata.newTagMetadata(model.getId(), remoteId, name, tag.getString("id")); + Metadata tagMetadata = TaskToTagMetadata.newTagMetadata(model.getId(), remoteId, name, tag.getString("id")); metadata.add(tagMetadata); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java index dda4fc91d..576522b8f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java @@ -42,7 +42,7 @@ import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.SubtasksUpdater; import com.todoroo.astrid.sync.SyncResultCallback; import com.todoroo.astrid.sync.SyncV2Provider; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.utility.Flags; @@ -572,8 +572,8 @@ public class ActFmSyncV2Provider extends SyncV2Provider { private void pushQueuedTasksByTag(TagData tagData, SyncResultCallback callback, AtomicInteger finisher) { Long[] ids; - TodorooCursor allTagged = metadataService.query(Query.select(Metadata.TASK).where(Criterion.and(Metadata.KEY.eq(TagMetadata.KEY), - TagMetadata.TAG_NAME.eqCaseInsensitive(tagData.getValue(TagData.NAME))))); + TodorooCursor allTagged = metadataService.query(Query.select(Metadata.TASK).where(Criterion.and(Metadata.KEY.eq(TaskToTagMetadata.KEY), + TaskToTagMetadata.TAG_NAME.eqCaseInsensitive(tagData.getValue(TagData.NAME))))); try { ids = new Long[allTagged.getCount()]; Metadata m = new Metadata(); @@ -588,8 +588,8 @@ public class ActFmSyncV2Provider extends SyncV2Provider { } TodorooCursor taskCursor = taskService.query(Query.select(Task.PROPERTIES) - .join(Join.inner(Metadata.TABLE, Criterion.and(Metadata.KEY.eq(TagMetadata.KEY), Metadata.TASK.eq(Task.ID), - TagMetadata.TAG_NAME.eqCaseInsensitive(tagData.getValue(TagData.NAME))))) + .join(Join.inner(Metadata.TABLE, Criterion.and(Metadata.KEY.eq(TaskToTagMetadata.KEY), Metadata.TASK.eq(Task.ID), + TaskToTagMetadata.TAG_NAME.eqCaseInsensitive(tagData.getValue(TagData.NAME))))) .where(Criterion.or( Criterion.and(TaskCriteria.isActive(), Task.REMOTE_ID.isNull()), diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java index 1efa0fa1e..185b0c249 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java @@ -25,7 +25,7 @@ import com.todoroo.astrid.data.Update; import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TagDataService; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.utility.Constants; @SuppressWarnings("nls") @@ -55,9 +55,9 @@ public class AstridNewSyncMigrator { // First ensure that a TagData object exists for each tag metadata // -------------- Query noTagDataQuery = Query.select(Metadata.PROPERTIES).where(Criterion.and( - MetadataCriteria.withKey(TagMetadata.KEY), - Criterion.or(TagMetadata.TAG_UUID.isNull(), TagMetadata.TAG_UUID.eq(0)), - Criterion.not(TagMetadata.TAG_NAME.in(Query.select(TagData.NAME).from(TagData.TABLE))))).groupBy(TagMetadata.TAG_NAME); + MetadataCriteria.withKey(TaskToTagMetadata.KEY), + Criterion.or(TaskToTagMetadata.TAG_UUID.isNull(), TaskToTagMetadata.TAG_UUID.eq(0)), + Criterion.not(TaskToTagMetadata.TAG_NAME.in(Query.select(TagData.NAME).from(TagData.TABLE))))).groupBy(TaskToTagMetadata.TAG_NAME); TodorooCursor noTagData = metadataService.query(noTagDataQuery); try { @@ -66,10 +66,10 @@ public class AstridNewSyncMigrator { tag.readFromCursor(noTagData); if (Constants.DEBUG) - Log.w(LOG_TAG, "CREATING TAG DATA " + tag.getValue(TagMetadata.TAG_NAME)); + Log.w(LOG_TAG, "CREATING TAG DATA " + tag.getValue(TaskToTagMetadata.TAG_NAME)); TagData newTagData = new TagData(); - newTagData.setValue(TagData.NAME, tag.getValue(TagMetadata.TAG_NAME)); + newTagData.setValue(TagData.NAME, tag.getValue(TaskToTagMetadata.TAG_NAME)); tagDataService.save(newTagData); } } finally { @@ -124,9 +124,9 @@ public class AstridNewSyncMigrator { // Finally, ensure that all tag metadata entities have all important fields filled in // -------------- Query incompleteQuery = Query.select(Metadata.PROPERTIES).where(Criterion.and( - MetadataCriteria.withKey(TagMetadata.KEY), - Criterion.or(TagMetadata.TASK_UUID.eq(0), TagMetadata.TASK_UUID.isNull(), - TagMetadata.TAG_UUID.eq(0), TagMetadata.TAG_UUID.isNull()))); + MetadataCriteria.withKey(TaskToTagMetadata.KEY), + Criterion.or(TaskToTagMetadata.TASK_UUID.eq(0), TaskToTagMetadata.TASK_UUID.isNull(), + TaskToTagMetadata.TAG_UUID.eq(0), TaskToTagMetadata.TAG_UUID.isNull()))); TodorooCursor incompleteMetadata = metadataService.query(incompleteQuery); try { Metadata m = new Metadata(); @@ -136,16 +136,16 @@ public class AstridNewSyncMigrator { boolean changes = false; if (Constants.DEBUG) - Log.w(LOG_TAG, "Incomplete linking task " + m.getValue(Metadata.TASK) + " to " + m.getValue(TagMetadata.TAG_NAME)); + Log.w(LOG_TAG, "Incomplete linking task " + m.getValue(Metadata.TASK) + " to " + m.getValue(TaskToTagMetadata.TAG_NAME)); - if (!m.containsNonNullValue(TagMetadata.TASK_UUID) || RemoteModel.NO_UUID.equals(m.getValue(TagMetadata.TASK_UUID))) { + if (!m.containsNonNullValue(TaskToTagMetadata.TASK_UUID) || RemoteModel.NO_UUID.equals(m.getValue(TaskToTagMetadata.TASK_UUID))) { if (Constants.DEBUG) Log.w(LOG_TAG, "No task uuid"); updateTaskUuid(m); changes = true; } - if (!m.containsNonNullValue(TagMetadata.TAG_UUID) || RemoteModel.NO_UUID.equals(m.getValue(TagMetadata.TAG_UUID))) { + if (!m.containsNonNullValue(TaskToTagMetadata.TAG_UUID) || RemoteModel.NO_UUID.equals(m.getValue(TaskToTagMetadata.TAG_UUID))) { if (Constants.DEBUG) Log.w(LOG_TAG, "No tag uuid"); updateTagUuid(m); @@ -197,7 +197,7 @@ public class AstridNewSyncMigrator { if (task != null) { if (Constants.DEBUG) Log.w(LOG_TAG, "Linking with task uuid " + task.getValue(Task.UUID)); - m.setValue(TagMetadata.TASK_UUID, task.getValue(Task.UUID)); + m.setValue(TaskToTagMetadata.TASK_UUID, task.getValue(Task.UUID)); } else { if (Constants.DEBUG) Log.w(LOG_TAG, "Task not found, deleting link"); @@ -206,12 +206,12 @@ public class AstridNewSyncMigrator { } private void updateTagUuid(Metadata m) { - String tag = m.getValue(TagMetadata.TAG_NAME); + String tag = m.getValue(TaskToTagMetadata.TAG_NAME); TagData tagData = tagDataService.getTag(tag, TagData.UUID); if (tagData != null) { if (Constants.DEBUG) Log.w(LOG_TAG, "Linking with tag uuid " + tagData.getValue(TagData.UUID)); - m.setValue(TagMetadata.TAG_UUID, tagData.getValue(TagData.UUID)); + m.setValue(TaskToTagMetadata.TAG_UUID, tagData.getValue(TagData.UUID)); } else { if (Constants.DEBUG) Log.w(LOG_TAG, "Tag not found, deleting link"); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java index adef3371b..21d9de20f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java @@ -24,7 +24,7 @@ import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria; import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TagService; @SuppressWarnings("nls") @@ -219,10 +219,10 @@ public class MakeChanges extends ServerToClientMessage public void performChanges() { if (changes.has("name")) { Metadata template = new Metadata(); - template.setValue(TagMetadata.TAG_NAME, changes.optString("name")); + template.setValue(TaskToTagMetadata.TAG_NAME, changes.optString("name")); PluginServices.getMetadataService().update( - Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), - TagMetadata.TAG_UUID.eq(uuid)), template); + Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), + TaskToTagMetadata.TAG_UUID.eq(uuid)), template); } if (changes.has("member_added")) { diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java index 7a08c0b5c..3daec6238 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java @@ -26,7 +26,7 @@ import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskApiDao.TaskCriteria; import com.todoroo.astrid.service.ThemeService; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; /** * Exposes Astrid's built in filters to the {@link FilterListFragment} @@ -66,8 +66,8 @@ public final class CoreFilterExposer extends BroadcastReceiver implements Astrid new QueryTemplate().where( Criterion.and(TaskCriteria.activeVisibleMine(), Criterion.not(Task.ID.in(Query.select(Metadata.TASK).from(Metadata.TABLE).where( - Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), - TagMetadata.TAG_NAME.like("x_%", "x"))))))), //$NON-NLS-1$ //$NON-NLS-2$ + Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), + TaskToTagMetadata.TAG_NAME.like("x_%", "x"))))))), //$NON-NLS-1$ //$NON-NLS-2$ null); int themeFlags = ThemeService.getFilterThemeFlags(); inbox.listingIcon = ((BitmapDrawable)r.getDrawable( diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java index fed181025..545ef6ade 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java @@ -39,7 +39,7 @@ import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.User; import com.todoroo.astrid.service.ThemeService; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.utility.AstridPreferences; public class PeopleFilterExposer extends BroadcastReceiver { @@ -141,8 +141,8 @@ public class PeopleFilterExposer extends BroadcastReceiver { String title = context.getString(R.string.actfm_my_shared_tasks_title); QueryTemplate template = new QueryTemplate().join(Join.inner(Metadata.TABLE.as("mtags"), Criterion.and(Task.ID.eq(Field.field("mtags." + Metadata.TASK.name)), - Field.field("mtags." + Metadata.KEY.name).eq(TagMetadata.KEY), - Field.field("mtags." + TagMetadata.TAG_NAME.name).in(names), + Field.field("mtags." + Metadata.KEY.name).eq(TaskToTagMetadata.KEY), + Field.field("mtags." + TaskToTagMetadata.TAG_NAME.name).in(names), TaskCriteria.activeVisibleMine()))); FilterWithCustomIntent filter = new FilterWithCustomIntent(title, title, template, null); diff --git a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevDataService.java b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevDataService.java index c0e38b56b..3393f22c6 100644 --- a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevDataService.java +++ b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevDataService.java @@ -35,7 +35,7 @@ import com.todoroo.astrid.notes.NoteMetadata; import com.todoroo.astrid.producteev.ProducteevUtilities; import com.todoroo.astrid.producteev.api.ApiUtilities; import com.todoroo.astrid.service.MetadataService; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; public final class ProducteevDataService { @@ -157,7 +157,7 @@ public final class ProducteevDataService { // note we don't include note metadata, since we only receive deltas metadataService.synchronizeMetadata(task.task.getId(), task.metadata, Criterion.or(MetadataCriteria.withKey(ProducteevTask.METADATA_KEY), - MetadataCriteria.withKey(TagMetadata.KEY)), true); + MetadataCriteria.withKey(TaskToTagMetadata.KEY)), true); } /** @@ -172,7 +172,7 @@ public final class ProducteevDataService { ArrayList metadata = new ArrayList(); TodorooCursor metadataCursor = metadataService.query(Query.select(Metadata.PROPERTIES). where(Criterion.and(MetadataCriteria.byTask(task.getId()), - Criterion.or(MetadataCriteria.withKey(TagMetadata.KEY), + Criterion.or(MetadataCriteria.withKey(TaskToTagMetadata.KEY), MetadataCriteria.withKey(ProducteevTask.METADATA_KEY), MetadataCriteria.withKey(NoteMetadata.METADATA_KEY))))); try { diff --git a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java index aa4323f60..f9eadc683 100644 --- a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java +++ b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java @@ -57,7 +57,7 @@ import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.sync.SyncContainer; import com.todoroo.astrid.sync.SyncProvider; import com.todoroo.astrid.sync.SyncProviderUtilities; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.utility.Constants; @SuppressWarnings("nls") @@ -394,8 +394,8 @@ public class ProducteevSyncProvider extends SyncProvider localTags = new HashSet(); HashSet remoteTags = new HashSet(); for(Metadata item : local.metadata) - if(TagMetadata.KEY.equals(item.getValue(Metadata.KEY))) - localTags.add(item.getValue(TagMetadata.TAG_NAME)); + if(TaskToTagMetadata.KEY.equals(item.getValue(Metadata.KEY))) + localTags.add(item.getValue(TaskToTagMetadata.TAG_NAME)); if(remote != null && remote.metadata != null) { for(Metadata item : remote.metadata) - if(TagMetadata.KEY.equals(item.getValue(Metadata.KEY))) - remoteTags.add(item.getValue(TagMetadata.TAG_NAME)); + if(TaskToTagMetadata.KEY.equals(item.getValue(Metadata.KEY))) + remoteTags.add(item.getValue(TaskToTagMetadata.TAG_NAME)); } if(!localTags.equals(remoteTags)) { diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagCaseMigrator.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagCaseMigrator.java index 856d92070..2bd4541f2 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagCaseMigrator.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagCaseMigrator.java @@ -111,7 +111,7 @@ public class TagCaseMigrator { @Deprecated private static Criterion tagEq(String tag, Criterion additionalCriterion) { return Criterion.and( - MetadataCriteria.withKey(TagMetadata.KEY), TagMetadata.TAG_NAME.eq(tag), + MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_NAME.eq(tag), additionalCriterion); } @@ -121,14 +121,14 @@ public class TagCaseMigrator { try { for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { Task curr = new Task(tasks); - TodorooCursor tagMetadata = metadataService.query(Query.select(TagMetadata.TAG_NAME) - .where(Criterion.and(TagMetadata.TAG_NAME.eq(target), Metadata.KEY.eq(TagMetadata.KEY), Metadata.TASK.eq(curr.getId())))); + TodorooCursor tagMetadata = metadataService.query(Query.select(TaskToTagMetadata.TAG_NAME) + .where(Criterion.and(TaskToTagMetadata.TAG_NAME.eq(target), Metadata.KEY.eq(TaskToTagMetadata.KEY), Metadata.TASK.eq(curr.getId())))); try { if (tagMetadata.getCount() == 0) { Metadata newTag = new Metadata(); - newTag.setValue(Metadata.KEY, TagMetadata.KEY); + newTag.setValue(Metadata.KEY, TaskToTagMetadata.KEY); newTag.setValue(Metadata.TASK, curr.getId()); - newTag.setValue(TagMetadata.TAG_NAME, target); + newTag.setValue(TaskToTagMetadata.TAG_NAME, target); metadataService.save(newTag); } // else already exists for some weird reason } finally { diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagCustomFilterCriteriaExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagCustomFilterCriteriaExposer.java index f10e66cc3..702b948c0 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagCustomFilterCriteriaExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagCustomFilterCriteriaExposer.java @@ -46,16 +46,16 @@ public class TagCustomFilterCriteriaExposer extends BroadcastReceiver { for(int i = 0; i < tags.length; i++) tagNames[i] = tags[i].tag; ContentValues values = new ContentValues(); - values.put(Metadata.KEY.name, TagMetadata.KEY); - values.put(TagMetadata.TAG_NAME.name, "?"); + values.put(Metadata.KEY.name, TaskToTagMetadata.KEY); + values.put(TaskToTagMetadata.TAG_NAME.name, "?"); CustomFilterCriterion criterion = new MultipleSelectCriterion( IDENTIFIER_TAG_IS, context.getString(R.string.CFC_tag_text), Query.select(Metadata.TASK).from(Metadata.TABLE).join(Join.inner( Task.TABLE, Metadata.TASK.eq(Task.ID))).where(Criterion.and( TaskDao.TaskCriteria.activeAndVisible(), - MetadataDao.MetadataCriteria.withKey(TagMetadata.KEY), - TagMetadata.TAG_NAME.eq("?"))).toString(), + MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY), + TaskToTagMetadata.TAG_NAME.eq("?"))).toString(), values, tagNames, tagNames, ((BitmapDrawable)r.getDrawable(TagService.getDefaultImageIDForTag(RemoteModel.NO_UUID))).getBitmap(), context.getString(R.string.CFC_tag_name)); @@ -70,8 +70,8 @@ public class TagCustomFilterCriteriaExposer extends BroadcastReceiver { Query.select(Metadata.TASK).from(Metadata.TABLE).join(Join.inner( Task.TABLE, Metadata.TASK.eq(Task.ID))).where(Criterion.and( TaskDao.TaskCriteria.activeAndVisible(), - MetadataDao.MetadataCriteria.withKey(TagMetadata.KEY), - TagMetadata.TAG_NAME.like("%?%"))).toString(), + MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY), + TaskToTagMetadata.TAG_NAME.like("%?%"))).toString(), null, context.getString(R.string.CFC_tag_contains_name), "", ((BitmapDrawable)r.getDrawable(TagService.getDefaultImageIDForTag(RemoteModel.NO_UUID))).getBitmap(), context.getString(R.string.CFC_tag_contains_name)); diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java index da0c4c0e4..05508e551 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java @@ -72,9 +72,9 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE return null; QueryTemplate tagTemplate = tag.queryTemplate(criterion); ContentValues contentValues = new ContentValues(); - contentValues.put(Metadata.KEY.name, TagMetadata.KEY); - contentValues.put(TagMetadata.TAG_NAME.name, tag.tag); - contentValues.put(TagMetadata.TAG_UUID.name, tag.uuid.toString()); + contentValues.put(Metadata.KEY.name, TaskToTagMetadata.KEY); + contentValues.put(TaskToTagMetadata.TAG_NAME.name, tag.tag); + contentValues.put(TaskToTagMetadata.TAG_UUID.name, tag.uuid.toString()); FilterWithUpdate filter = new FilterWithUpdate(tag.tag, title, tagTemplate, diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java new file mode 100644 index 000000000..09e39cf8a --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java @@ -0,0 +1,12 @@ +package com.todoroo.astrid.tags; + +import com.todoroo.andlib.data.Property.StringProperty; +import com.todoroo.astrid.data.TagMetadata; + +public class TagMemberMetadata { + + public static final String KEY = "tag-members"; //$NON-NLS-1$ + + public static final StringProperty USER_UUID = new StringProperty( + TagMetadata.TABLE, TagMetadata.VALUE1.name); +} diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java index 16326a7b7..a0272e90e 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java @@ -93,7 +93,7 @@ public final class TagService { * Property for retrieving count of aggregated rows */ private static final CountProperty COUNT = new CountProperty(); - public static final Order GROUPED_TAGS_BY_ALPHA = Order.asc(Functions.upper(TagMetadata.TAG_NAME)); + public static final Order GROUPED_TAGS_BY_ALPHA = Order.asc(Functions.upper(TaskToTagMetadata.TAG_NAME)); public static final Order GROUPED_TAGS_BY_SIZE = Order.desc(COUNT); /** @@ -152,11 +152,11 @@ public final class TagService { */ public QueryTemplate queryTemplate(Criterion criterion) { Criterion fullCriterion = Criterion.and( - Field.field("mtags." + Metadata.KEY.name).eq(TagMetadata.KEY), - Field.field("mtags." + TagMetadata.TAG_UUID.name).eq(uuid), + Field.field("mtags." + Metadata.KEY.name).eq(TaskToTagMetadata.KEY), + Field.field("mtags." + TaskToTagMetadata.TAG_UUID.name).eq(uuid), Field.field("mtags." + Metadata.DELETION_DATE.name).eq(0), criterion); - return new QueryTemplate().join(Join.inner(Metadata.TABLE.as("mtags"), Task.UUID.eq(Field.field("mtags." + TagMetadata.TASK_UUID.name)))) + return new QueryTemplate().join(Join.inner(Metadata.TABLE.as("mtags"), Task.UUID.eq(Field.field("mtags." + TaskToTagMetadata.TASK_UUID.name)))) .where(fullCriterion); } @@ -165,13 +165,13 @@ public final class TagService { @Deprecated private static Criterion tagEq(String tag, Criterion additionalCriterion) { return Criterion.and( - MetadataCriteria.withKey(TagMetadata.KEY), TagMetadata.TAG_NAME.eq(tag), + MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_NAME.eq(tag), additionalCriterion); } public static Criterion tagEqIgnoreCase(String tag, Criterion additionalCriterion) { return Criterion.and( - MetadataCriteria.withKey(TagMetadata.KEY), TagMetadata.TAG_NAME.eqCaseInsensitive(tag), + MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_NAME.eqCaseInsensitive(tag), additionalCriterion); } @@ -179,8 +179,8 @@ public final class TagService { String[] emergentTags = getEmergentTagIds(); return new QueryTemplate().where(Criterion.and( - Criterion.not(Task.UUID.in(Query.select(TagMetadata.TASK_UUID).from(Metadata.TABLE) - .where(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), Criterion.not(TagMetadata.TAG_UUID.in(emergentTags)))))), + Criterion.not(Task.UUID.in(Query.select(TaskToTagMetadata.TASK_UUID).from(Metadata.TABLE) + .where(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0), Criterion.not(TaskToTagMetadata.TAG_UUID.in(emergentTags)))))), TaskCriteria.isActive(), TaskApiDao.TaskCriteria.ownedByMe(), TaskCriteria.isVisible())); @@ -197,19 +197,19 @@ public final class TagService { public Tag[] getGroupedTags(Order order, Criterion activeStatus, boolean includeEmergent) { Criterion criterion; if (includeEmergent) - criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TagMetadata.KEY)); + criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TaskToTagMetadata.KEY)); else - criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TagMetadata.KEY), Criterion.not(TagMetadata.TAG_UUID.in(getEmergentTagIds()))); - Query query = Query.select(TagMetadata.TAG_NAME, TagMetadata.TAG_UUID, COUNT). + criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TaskToTagMetadata.KEY), Criterion.not(TaskToTagMetadata.TAG_UUID.in(getEmergentTagIds()))); + Query query = Query.select(TaskToTagMetadata.TAG_NAME, TaskToTagMetadata.TAG_UUID, COUNT). join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))). where(criterion). - orderBy(order).groupBy(TagMetadata.TAG_NAME); + orderBy(order).groupBy(TaskToTagMetadata.TAG_NAME); TodorooCursor cursor = metadataDao.query(query); try { ArrayList array = new ArrayList(); for (int i = 0; i < cursor.getCount(); i++) { cursor.moveToNext(); - Tag tag = Tag.tagFromUUID(cursor.get(TagMetadata.TAG_UUID)); + Tag tag = Tag.tagFromUUID(cursor.get(TaskToTagMetadata.TAG_UUID)); if (tag != null) array.add(tag); } @@ -258,9 +258,9 @@ public final class TagService { } public void createLink(Task task, String tagName, String tagUuid) { - Metadata link = TagMetadata.newTagMetadata(task.getId(), task.getUuid(), tagName, tagUuid); - if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(task.getId(), TagMetadata.KEY), - TagMetadata.TASK_UUID.eq(task.getValue(Task.UUID)), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) { + Metadata link = TaskToTagMetadata.newTagMetadata(task.getId(), task.getUuid(), tagName, tagUuid); + if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(task.getId(), TaskToTagMetadata.KEY), + TaskToTagMetadata.TASK_UUID.eq(task.getValue(Task.UUID)), TaskToTagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) { metadataDao.createNew(link); } } @@ -282,11 +282,11 @@ public final class TagService { name = tagData.getValue(TagData.NAME); } - Metadata link = TagMetadata.newTagMetadata(taskId, taskUuid, name, tagUuid); + Metadata link = TaskToTagMetadata.newTagMetadata(taskId, taskUuid, name, tagUuid); if (suppressOutstanding) link.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); - if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(taskId, TagMetadata.KEY), - TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) { + if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(taskId, TaskToTagMetadata.KEY), + TaskToTagMetadata.TASK_UUID.eq(taskUuid), TaskToTagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) { if (suppressOutstanding) link.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); metadataDao.createNew(link); @@ -307,10 +307,10 @@ public final class TagService { if (suppressOutstanding) deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); deleteTemplate.setValue(Metadata.TASK, taskId); // Need this for recording changes in outstanding table - deleteTemplate.setValue(TagMetadata.TAG_UUID, tagUuid); // Need this for recording changes in outstanding table + deleteTemplate.setValue(TaskToTagMetadata.TAG_UUID, tagUuid); // Need this for recording changes in outstanding table deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); - metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), - TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), deleteTemplate); + metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0), + TaskToTagMetadata.TASK_UUID.eq(taskUuid), TaskToTagMetadata.TAG_UUID.eq(tagUuid)), deleteTemplate); } /** @@ -326,11 +326,11 @@ public final class TagService { for (String uuid : tagUuids) { // TODO: Right now this is in a loop because each deleteTemplate needs the individual tagUuid in order to record // the outstanding entry correctly. If possible, this should be improved to a single query - deleteTemplate.setValue(TagMetadata.TAG_UUID, uuid); // Need this for recording changes in outstanding table + deleteTemplate.setValue(TaskToTagMetadata.TAG_UUID, uuid); // Need this for recording changes in outstanding table if (suppressOutstanding) deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); - metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), - TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(uuid)), deleteTemplate); + metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0), + TaskToTagMetadata.TASK_UUID.eq(taskUuid), TaskToTagMetadata.TAG_UUID.eq(uuid)), deleteTemplate); } } } @@ -344,21 +344,21 @@ public final class TagService { public TodorooCursor getTags(long taskId, boolean includeEmergent) { Criterion criterion; if (includeEmergent) - criterion = Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), + criterion = Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0), MetadataCriteria.byTask(taskId)); else - criterion = Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), + criterion = Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0), - MetadataCriteria.byTask(taskId), Criterion.not(TagMetadata.TAG_UUID.in(getEmergentTagIds()))); - Query query = Query.select(TagMetadata.TAG_NAME, TagMetadata.TAG_UUID).where(criterion).orderBy(Order.asc(Functions.upper(TagMetadata.TAG_NAME))); + MetadataCriteria.byTask(taskId), Criterion.not(TaskToTagMetadata.TAG_UUID.in(getEmergentTagIds()))); + Query query = Query.select(TaskToTagMetadata.TAG_NAME, TaskToTagMetadata.TAG_UUID).where(criterion).orderBy(Order.asc(Functions.upper(TaskToTagMetadata.TAG_NAME))); return metadataDao.query(query); } public TodorooCursor getTagDataForTask(long taskId, boolean includeEmergent, Property... properties) { - Criterion criterion = TagData.UUID.in(Query.select(TagMetadata.TAG_UUID) + Criterion criterion = TagData.UUID.in(Query.select(TaskToTagMetadata.TAG_UUID) .from(Metadata.TABLE) - .where(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), + .where(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0), Metadata.TASK.eq(taskId)))); if (!includeEmergent) @@ -368,9 +368,9 @@ public final class TagService { } public TodorooCursor getTagDataForTask(long taskId, Criterion additionalCriterion, Property... properties) { - Criterion criterion = TagData.UUID.in(Query.select(TagMetadata.TAG_UUID).from(Metadata.TABLE).where( + Criterion criterion = TagData.UUID.in(Query.select(TaskToTagMetadata.TAG_UUID).from(Metadata.TABLE).where( Criterion.and(Metadata.DELETION_DATE.eq(0), - MetadataCriteria.byTaskAndwithKey(taskId, TagMetadata.KEY)))); + MetadataCriteria.byTaskAndwithKey(taskId, TaskToTagMetadata.KEY)))); return tagDataService.query(Query.select(properties).where(Criterion.and(criterion, additionalCriterion))); } @@ -399,7 +399,7 @@ public final class TagService { for (int i = 0; i < length; i++) { tags.moveToNext(); metadata.readFromCursor(tags); - tagBuilder.append(metadata.getValue(TagMetadata.TAG_NAME)); + tagBuilder.append(metadata.getValue(TaskToTagMetadata.TAG_NAME)); if (i < length - 1) tagBuilder.append(separator); } @@ -492,11 +492,11 @@ public final class TagService { public boolean synchronizeTags(long taskId, String taskUuid, Set tags) { HashSet existingLinks = new HashSet(); TodorooCursor links = metadataDao.query(Query.select(Metadata.PROPERTIES) - .where(Criterion.and(TagMetadata.TASK_UUID.eq(taskUuid), Metadata.DELETION_DATE.eq(0)))); + .where(Criterion.and(TaskToTagMetadata.TASK_UUID.eq(taskUuid), Metadata.DELETION_DATE.eq(0)))); try { for (links.moveToFirst(); !links.isAfterLast(); links.moveToNext()) { Metadata link = new Metadata(links); - existingLinks.add(link.getValue(TagMetadata.TAG_UUID)); + existingLinks.add(link.getValue(TaskToTagMetadata.TAG_UUID)); } } finally { links.close(); @@ -512,7 +512,7 @@ public final class TagService { if (existingLinks.contains(tagData.getValue(TagData.UUID))) { existingLinks.remove(tagData.getValue(TagData.UUID)); } else { - Metadata newLink = TagMetadata.newTagMetadata(taskId, taskUuid, tag, tagData.getValue(TagData.UUID)); + Metadata newLink = TaskToTagMetadata.newTagMetadata(taskId, taskUuid, tag, tagData.getValue(TagData.UUID)); metadataDao.createNew(newLink); } } @@ -532,12 +532,12 @@ public final class TagService { public String getTagWithCase(String tag) { MetadataService service = PluginServices.getMetadataService(); String tagWithCase = tag; - TodorooCursor tagMetadata = service.query(Query.select(TagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1)); + TodorooCursor tagMetadata = service.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1)); try { if (tagMetadata.getCount() > 0) { tagMetadata.moveToFirst(); Metadata tagMatch = new Metadata(tagMetadata); - tagWithCase = tagMatch.getValue(TagMetadata.TAG_NAME); + tagWithCase = tagMatch.getValue(TaskToTagMetadata.TAG_NAME); } else { TodorooCursor tagData = tagDataService.query(Query.select(TagData.NAME).where(TagData.NAME.eqCaseInsensitive(tag))); try { @@ -595,7 +595,7 @@ public final class TagService { // Then rename all instances of oldTag to newTag. Metadata metadata = new Metadata(); - metadata.setValue(TagMetadata.TAG_NAME, newTag); + metadata.setValue(TaskToTagMetadata.TAG_NAME, newTag); int ret; if (caseSensitive) ret = metadataService.update(tagEq(oldTag, Criterion.all), metadata); diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagsControlSet.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagsControlSet.java index 15aa260e3..dc30b2efc 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagsControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagsControlSet.java @@ -232,7 +232,7 @@ public final class TagsControlSet extends PopupControlSet { LinkedHashSet tags = new LinkedHashSet(cursor.getCount()); try { for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { - String tag = cursor.get(TagMetadata.TAG_NAME); + String tag = cursor.get(TaskToTagMetadata.TAG_NAME); tags.add(tag); } } finally { diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagMetadata.java b/astrid/plugin-src/com/todoroo/astrid/tags/TaskToTagMetadata.java similarity index 97% rename from astrid/plugin-src/com/todoroo/astrid/tags/TagMetadata.java rename to astrid/plugin-src/com/todoroo/astrid/tags/TaskToTagMetadata.java index 452b0ca26..1002e42e8 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagMetadata.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TaskToTagMetadata.java @@ -3,7 +3,7 @@ package com.todoroo.astrid.tags; import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.astrid.data.Metadata; -public class TagMetadata { +public class TaskToTagMetadata { /** Metadata key for tag data */ public static final String KEY = "tags-tag"; //$NON-NLS-1$ diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterExposer.java index 453504940..cd6fcb0de 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterExposer.java @@ -26,7 +26,7 @@ import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TaskApiDao.TaskCriteria; import com.todoroo.astrid.tags.TagFilterExposer; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService.Tag; @@ -48,9 +48,9 @@ public class FeaturedListFilterExposer extends TagFilterExposer { String title = tag.tag; QueryTemplate tagTemplate = tag.queryTemplate(criterion); ContentValues contentValues = new ContentValues(); - contentValues.put(Metadata.KEY.name, TagMetadata.KEY); - contentValues.put(TagMetadata.TAG_NAME.name, tag.tag); - contentValues.put(TagMetadata.TAG_UUID.name, tag.uuid.toString()); + contentValues.put(Metadata.KEY.name, TaskToTagMetadata.KEY); + contentValues.put(TaskToTagMetadata.TAG_NAME.name, tag.tag); + contentValues.put(TaskToTagMetadata.TAG_UUID.name, tag.uuid.toString()); FilterWithUpdate filter = new FilterWithUpdate(tag.tag, title, tagTemplate, diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index 3ef1cce24..1de0eddbf 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -101,7 +101,7 @@ import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.UpgradeService; import com.todoroo.astrid.subtasks.SubtasksListFragment; import com.todoroo.astrid.sync.SyncProviderPreferences; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.taskrabbit.TaskRabbitMetadata; import com.todoroo.astrid.timers.TimerPlugin; @@ -951,15 +951,15 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, tagName = getActiveTagData().getValue(TagData.NAME); String[] emergentTagIds = TagService.getInstance().getEmergentTagIds(); - StringProperty tagProperty = new StringProperty(null, TAGS_METADATA_JOIN + "." + TagMetadata.TAG_UUID.name); + StringProperty tagProperty = new StringProperty(null, TAGS_METADATA_JOIN + "." + TaskToTagMetadata.TAG_UUID.name); Criterion tagsJoinCriterion = Criterion.and( - Field.field(TAGS_METADATA_JOIN + "." + Metadata.KEY.name).eq(TagMetadata.KEY), //$NON-NLS-1$ + Field.field(TAGS_METADATA_JOIN + "." + Metadata.KEY.name).eq(TaskToTagMetadata.KEY), //$NON-NLS-1$ Field.field(TAGS_METADATA_JOIN + "." + Metadata.DELETION_DATE.name).eq(0), Task.ID.eq(Field.field(TAGS_METADATA_JOIN + "." + Metadata.TASK.name)), Criterion.not(tagProperty.in(emergentTagIds))); if (tagName != null) - tagsJoinCriterion = Criterion.and(tagsJoinCriterion, Field.field(TAGS_METADATA_JOIN + "." + TagMetadata.TAG_NAME.name).neq(tagName)); + tagsJoinCriterion = Criterion.and(tagsJoinCriterion, Field.field(TAGS_METADATA_JOIN + "." + TaskToTagMetadata.TAG_NAME.name).neq(tagName)); // TODO: For now, we'll modify the query to join and include the task rabbit and tag data here. // Eventually, we might consider restructuring things so that this query is constructed elsewhere. diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java index b09f8958e..977ec4742 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java @@ -91,7 +91,7 @@ import com.todoroo.astrid.notes.NotesAction; import com.todoroo.astrid.notes.NotesDecorationExposer; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.ThemeService; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.timers.TimerDecorationExposer; import com.todoroo.astrid.ui.CheckableImageView; import com.todoroo.astrid.utility.Constants; @@ -116,7 +116,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { Metadata.ID.name).as("taskRabId"); //$NON-NLS-1$ @SuppressWarnings("nls") - private static final StringProperty TAGS = new StringProperty(null, "group_concat(" + TaskListFragment.TAGS_METADATA_JOIN + "." + TagMetadata.TAG_NAME.name + ", ' | ')").as("tags"); + private static final StringProperty TAGS = new StringProperty(null, "group_concat(" + TaskListFragment.TAGS_METADATA_JOIN + "." + TaskToTagMetadata.TAG_NAME.name + ", ' | ')").as("tags"); // --- other constants diff --git a/astrid/src/com/todoroo/astrid/dao/Database.java b/astrid/src/com/todoroo/astrid/dao/Database.java index be17f3b22..85644c15a 100644 --- a/astrid/src/com/todoroo/astrid/dao/Database.java +++ b/astrid/src/com/todoroo/astrid/dao/Database.java @@ -18,6 +18,7 @@ import com.todoroo.astrid.data.ABTestEvent; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.TagData; +import com.todoroo.astrid.data.TagMetadata; import com.todoroo.astrid.data.TagOutstanding; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskOutstanding; @@ -61,6 +62,7 @@ public class Database extends AbstractDatabase { Update.TABLE, User.TABLE, ABTestEvent.TABLE, + TagMetadata.TABLE, TaskOutstanding.TABLE, TagOutstanding.TABLE, @@ -358,6 +360,7 @@ public class Database extends AbstractDatabase { case 28: try { database.execSQL(createTableSql(visitor, TaskOutstanding.TABLE.name, TaskOutstanding.PROPERTIES)); database.execSQL(createTableSql(visitor, TagOutstanding.TABLE.name, TagOutstanding.PROPERTIES)); + database.execSQL(createTableSql(visitor, TagMetadata.TABLE.name, TagMetadata.PROPERTIES)); database.execSQL(addColumnSql(Task.TABLE, Task.PUSHED_AT, visitor, null)); database.execSQL(addColumnSql(Task.TABLE, Task.UUID, visitor, null)); diff --git a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java index dfea19ea5..f9d906f0b 100644 --- a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java @@ -28,7 +28,7 @@ import com.todoroo.astrid.data.TaskOutstanding; import com.todoroo.astrid.provider.Astrid2TaskProvider; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.utility.AstridPreferences; /** @@ -78,7 +78,7 @@ public class MetadataDao extends DatabaseDao { ContentValues cv = item.getSetValues(); return super.shouldRecordOutstanding(item) && cv != null && ((cv.containsKey(Metadata.KEY.name) && - TagMetadata.KEY.equals(item.getValue(Metadata.KEY))) || + TaskToTagMetadata.KEY.equals(item.getValue(Metadata.KEY))) || (cv.containsKey(Metadata.DELETION_DATE.name) && item.getValue(Metadata.DELETION_DATE) > 0)); } @@ -86,7 +86,7 @@ public class MetadataDao extends DatabaseDao { @Override protected boolean createOutstandingEntries(long modelId, ContentValues modelSetValues) { Long taskId = modelSetValues.getAsLong(Metadata.TASK.name); - String tagUuid = modelSetValues.getAsString(TagMetadata.TAG_UUID.name); + String tagUuid = modelSetValues.getAsString(TaskToTagMetadata.TAG_UUID.name); Long deletionDate = modelSetValues.getAsLong(Metadata.DELETION_DATE.name); if (taskId == null || taskId == AbstractModel.NO_ID || RemoteModel.isUuidEmpty(tagUuid)) return false; @@ -113,7 +113,7 @@ public class MetadataDao extends DatabaseDao { boolean state = super.persist(item); if(Preferences.getBoolean(AstridPreferences.P_FIRST_LIST, true)) { if (state && item.containsNonNullValue(Metadata.KEY) && - item.getValue(Metadata.KEY).equals(TagMetadata.KEY)) { + item.getValue(Metadata.KEY).equals(TaskToTagMetadata.KEY)) { StatisticsService.reportEvent(StatisticsConstants.USER_FIRST_LIST); Preferences.setBoolean(AstridPreferences.P_FIRST_LIST, false); } diff --git a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java index 33bd5366e..d3dc0b057 100644 --- a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java +++ b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java @@ -47,7 +47,7 @@ import com.todoroo.astrid.legacy.LegacyAlertModel; import com.todoroo.astrid.legacy.LegacyRepeatInfo; import com.todoroo.astrid.legacy.LegacyTaskModel; import com.todoroo.astrid.legacy.TransitionalAlarm; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; public class Astrid2To3UpgradeHelper { @@ -400,7 +400,7 @@ public class Astrid2To3UpgradeHelper { return; Metadata metadata = new Metadata(); - metadata.setValue(Metadata.KEY, TagMetadata.KEY); + metadata.setValue(Metadata.KEY, TaskToTagMetadata.KEY); long tagId = -1; String tag = null; for(mapCursor.moveToFirst(); !mapCursor.isAfterLast(); mapCursor.moveToNext()) { @@ -417,8 +417,8 @@ public class Astrid2To3UpgradeHelper { tag = tagCursor.getString(1); long task = mapCursor.getLong(1); metadata.setValue(Metadata.TASK, task); - metadata.setValue(Metadata.KEY, TagMetadata.KEY); - metadata.setValue(TagMetadata.TAG_NAME, tag); + metadata.setValue(Metadata.KEY, TaskToTagMetadata.KEY); + metadata.setValue(TaskToTagMetadata.TAG_NAME, tag); metadataDao.createNew(metadata); metadata.clearValue(Metadata.ID); } diff --git a/astrid/src/com/todoroo/astrid/service/StartupService.java b/astrid/src/com/todoroo/astrid/service/StartupService.java index 2ea5808c1..aff17b290 100644 --- a/astrid/src/com/todoroo/astrid/service/StartupService.java +++ b/astrid/src/com/todoroo/astrid/service/StartupService.java @@ -67,7 +67,7 @@ import com.todoroo.astrid.service.abtesting.ABChooser; import com.todoroo.astrid.service.abtesting.ABTestInvoker; import com.todoroo.astrid.service.abtesting.ABTests; import com.todoroo.astrid.subtasks.SubtasksMetadata; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.ui.TaskListFragmentPager; import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; @@ -274,9 +274,9 @@ public class StartupService { Metadata m = new Metadata(); if (values != null) { if (values.containsKey(TagData.NAME.name)) { - m.setValue(TagMetadata.TAG_NAME, model.getValue(TagData.NAME)); - PluginServices.getMetadataService().update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), - TagMetadata.TAG_UUID.eq(model.getValue(TagData.UUID))), m); + m.setValue(TaskToTagMetadata.TAG_NAME, model.getValue(TagData.NAME)); + PluginServices.getMetadataService().update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), + TaskToTagMetadata.TAG_UUID.eq(model.getValue(TagData.UUID))), m); } } } diff --git a/astrid/src/com/todoroo/astrid/service/TaskService.java b/astrid/src/com/todoroo/astrid/service/TaskService.java index a071c07e8..6326783b8 100644 --- a/astrid/src/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/com/todoroo/astrid/service/TaskService.java @@ -39,7 +39,7 @@ import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gtasks.GtasksMetadata; import com.todoroo.astrid.opencrx.OpencrxCoreUtils; import com.todoroo.astrid.producteev.sync.ProducteevTask; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.utility.TitleParser; @@ -550,13 +550,13 @@ public class TaskService { Metadata metadata = new Metadata(); metadata.setValue(Metadata.TASK, task.getId()); metadata.mergeWith(forMetadata); - if (TagMetadata.KEY.equals(metadata.getValue(Metadata.KEY))) { - if (metadata.containsNonNullValue(TagMetadata.TAG_UUID) && !RemoteModel.NO_UUID.equals(metadata.getValue(TagMetadata.TAG_UUID))) { + if (TaskToTagMetadata.KEY.equals(metadata.getValue(Metadata.KEY))) { + if (metadata.containsNonNullValue(TaskToTagMetadata.TAG_UUID) && !RemoteModel.NO_UUID.equals(metadata.getValue(TaskToTagMetadata.TAG_UUID))) { // This is more efficient - TagService.getInstance().createLink(task, metadata.getValue(TagMetadata.TAG_NAME), metadata.getValue(TagMetadata.TAG_UUID)); + TagService.getInstance().createLink(task, metadata.getValue(TaskToTagMetadata.TAG_NAME), metadata.getValue(TaskToTagMetadata.TAG_UUID)); } else { // This is necessary for backwards compatibility - TagService.getInstance().createLink(task, metadata.getValue(TagMetadata.TAG_NAME)); + TagService.getInstance().createLink(task, metadata.getValue(TaskToTagMetadata.TAG_NAME)); } } else { PluginServices.getMetadataService().save(metadata); diff --git a/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java b/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java index b83e9ca7c..0473d4eb4 100644 --- a/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java +++ b/tests-sync/src/com/todoroo/astrid/sync/AstridNewSyncMigrationTest.java @@ -18,7 +18,7 @@ import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.tags.TagMetadata; +import com.todoroo.astrid.tags.TaskToTagMetadata; public class AstridNewSyncMigrationTest extends NewSyncTestCase { @@ -47,44 +47,44 @@ public class AstridNewSyncMigrationTest extends NewSyncTestCase { } Metadata m = new Metadata(); - m.setValue(Metadata.KEY, TagMetadata.KEY); + m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 1L); - m.setValue(TagMetadata.TAG_NAME, "Tag 1"); + m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 1"); metadataDao.createNew(m); m.clear(); - m.setValue(Metadata.KEY, TagMetadata.KEY); + m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 2L); - m.setValue(TagMetadata.TAG_NAME, "New tag"); + m.setValue(TaskToTagMetadata.TAG_NAME, "New tag"); metadataDao.createNew(m); m.clear(); - m.setValue(Metadata.KEY, TagMetadata.KEY); + m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 3L); - m.setValue(TagMetadata.TAG_NAME, "Tag 3"); + m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 3"); metadataDao.createNew(m); m.clear(); - m.setValue(Metadata.KEY, TagMetadata.KEY); + m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 3L); - m.setValue(TagMetadata.TAG_NAME, "Tag 4"); + m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 4"); metadataDao.createNew(m); m.clear(); - m.setValue(Metadata.KEY, TagMetadata.KEY); + m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 5L); - m.setValue(TagMetadata.TAG_NAME, "Tag 1"); + m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 1"); metadataDao.createNew(m); m.clear(); - m.setValue(Metadata.KEY, TagMetadata.KEY); + m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 5L); - m.setValue(TagMetadata.TAG_NAME, "Tag 5"); + m.setValue(TaskToTagMetadata.TAG_NAME, "Tag 5"); metadataDao.createNew(m); - m.setValue(Metadata.KEY, TagMetadata.KEY); + m.setValue(Metadata.KEY, TaskToTagMetadata.KEY); m.setValue(Metadata.TASK, 5L); - m.setValue(TagMetadata.TAG_NAME, "New tag 2"); + m.setValue(TaskToTagMetadata.TAG_NAME, "New tag 2"); metadataDao.createNew(m); // State (task: tags) @@ -138,15 +138,15 @@ public class AstridNewSyncMigrationTest extends NewSyncTestCase { private void assertAllMetadataHasAllFields() { TodorooCursor tagMetadata = metadataDao.query(Query.select(Metadata.PROPERTIES) - .where(MetadataCriteria.withKey(TagMetadata.KEY))); + .where(MetadataCriteria.withKey(TaskToTagMetadata.KEY))); try { assertEquals(tagMetadata.getCount(), 7); Metadata m = new Metadata(); for (tagMetadata.moveToFirst(); !tagMetadata.isAfterLast(); tagMetadata.moveToNext()) { m.readFromCursor(tagMetadata); - assertTrue(!TextUtils.isEmpty(m.getValue(TagMetadata.TAG_NAME))); - assertTrue(!RemoteModel.NO_UUID.equals(m.getValue(TagMetadata.TASK_UUID))); - assertTrue(!RemoteModel.NO_UUID.equals(m.getValue(TagMetadata.TAG_UUID))); + assertTrue(!TextUtils.isEmpty(m.getValue(TaskToTagMetadata.TAG_NAME))); + assertTrue(!RemoteModel.NO_UUID.equals(m.getValue(TaskToTagMetadata.TASK_UUID))); + assertTrue(!RemoteModel.NO_UUID.equals(m.getValue(TaskToTagMetadata.TAG_UUID))); } } finally { tagMetadata.close();