diff --git a/api/src/com/todoroo/andlib/data/AbstractModel.java b/api/src/com/todoroo/andlib/data/AbstractModel.java index 0989dd6c5..4a572d750 100644 --- a/api/src/com/todoroo/andlib/data/AbstractModel.java +++ b/api/src/com/todoroo/andlib/data/AbstractModel.java @@ -139,6 +139,18 @@ public abstract class AbstractModel implements Parcelable, Cloneable { return getMergedValues().hashCode() ^ getClass().hashCode(); } + @Override + @SuppressWarnings("nls") + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(getClass().getSimpleName()).append("\n") + .append("set values:\n") + .append(setValues).append("\n") + .append("values:\n") + .append(values).append("\n"); + return builder.toString(); + } + @Override public AbstractModel clone() { AbstractModel clone; diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java index 274757207..e70224378 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -589,7 +589,7 @@ public class TagSettingsActivity extends FragmentActivity { } protected boolean deleteTag() { - boolean result = tagService.deleteOrLeaveTag(this, tagData.getValue(TagData.NAME), TagService.SHOW_ACTIVE_TASKS); + boolean result = tagService.deleteOrLeaveTag(this, tagData.getValue(TagData.NAME), tagData.getUuid()); setResult(Activity.RESULT_OK); finish(); return result; diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java index 05508e551..af67a8e43 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java @@ -74,7 +74,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE ContentValues contentValues = new ContentValues(); contentValues.put(Metadata.KEY.name, TaskToTagMetadata.KEY); contentValues.put(TaskToTagMetadata.TAG_NAME.name, tag.tag); - contentValues.put(TaskToTagMetadata.TAG_UUID.name, tag.uuid.toString()); + contentValues.put(TaskToTagMetadata.TAG_UUID.name, tag.uuid); FilterWithUpdate filter = new FilterWithUpdate(tag.tag, title, tagTemplate, @@ -94,8 +94,8 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE context.getString(deleteIntentLabel) }; filter.contextMenuIntents = new Intent[] { - newTagIntent(context, RenameTagActivity.class, tag, tagTemplate.toString()), - newTagIntent(context, DeleteTagActivity.class, tag, tagTemplate.toString()) + newTagIntent(context, RenameTagActivity.class, tag, tag.uuid), + newTagIntent(context, DeleteTagActivity.class, tag, tag.uuid) }; filter.customTaskList = new ComponentName(ContextManager.getContext(), TagViewFragment.class); @@ -115,10 +115,10 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE return filterFromTag(context, tag, TaskCriteria.activeAndVisible()); } - private static Intent newTagIntent(Context context, Class activity, Tag tag, String sql) { + private static Intent newTagIntent(Context context, Class activity, Tag tag, String uuid) { Intent ret = new Intent(context, activity); ret.putExtra(TAG, tag.tag); - ret.putExtra(TagService.TOKEN_TAG_SQL, sql); + ret.putExtra(TagViewFragment.EXTRA_TAG_UUID, uuid); return ret; } @@ -197,7 +197,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE public abstract static class TagActivity extends Activity { protected String tag; - protected String sql; + protected String uuid; @Autowired public TagService tagService; @Autowired public TagDataService tagDataService; @@ -211,8 +211,9 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE super.onCreate(savedInstanceState); tag = getIntent().getStringExtra(TAG); - sql = getIntent().getStringExtra(TagService.TOKEN_TAG_SQL); - if(tag == null) { + uuid = getIntent().getStringExtra(TagViewFragment.EXTRA_TAG_UUID); + + if(tag == null || RemoteModel.isUuidEmpty(uuid)) { finish(); return; } @@ -284,7 +285,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE @Override protected boolean ok() { - return tagService.deleteOrLeaveTag(this, tag, sql); + return tagService.deleteOrLeaveTag(this, tag, uuid); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java index 9c2c64213..9948869de 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java @@ -36,6 +36,7 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; +import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.RemoteModel; @@ -85,6 +86,8 @@ public final class TagService { @Autowired TagDataService tagDataService; + @Autowired TagDataDao tagDataDao; + public TagService() { DependencyInjectionService.getInstance().inject(this); } @@ -373,9 +376,9 @@ public final class TagService { return tagBuilder.toString(); } - public boolean deleteOrLeaveTag(Context context, String tag, String sql) { - int deleted = deleteTagMetadata(tag); - TagData tagData = PluginServices.getTagDataService().getTag(tag, TagData.ID, TagData.UUID, TagData.DELETION_DATE, TagData.MEMBER_COUNT, TagData.USER_ID); + public boolean deleteOrLeaveTag(Context context, String tag, String uuid) { + int deleted = deleteTagMetadata(uuid); + TagData tagData = tagDataDao.fetch(uuid, TagData.ID, TagData.UUID, TagData.DELETION_DATE, TagData.MEMBER_COUNT, TagData.USER_ID); boolean shared = false; Intent tagDeleted = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED); if(tagData != null) { @@ -387,7 +390,6 @@ public final class TagService { Toast.makeText(context, context.getString(shared ? R.string.TEA_tags_left : R.string.TEA_tags_deleted, tag, deleted), Toast.LENGTH_SHORT).show(); - tagDeleted.putExtra(TOKEN_TAG_SQL, sql); context.sendBroadcast(tagDeleted); return true; } @@ -532,12 +534,11 @@ public final class TagService { return null; } - private int deleteTagMetadata(String tag) { - invalidateTaskCache(tag); + private int deleteTagMetadata(String uuid) { Metadata deleted = new Metadata(); deleted.setValue(Metadata.DELETION_DATE, DateUtilities.now()); - return metadataDao.update(tagEqIgnoreCase(tag, Criterion.all), deleted); + return metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid)), deleted); } public int rename(String oldTag, String newTag) { diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index ce0f20ea3..cbcb48654 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -61,7 +61,6 @@ import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.abtesting.ABTestEventReportingService; -import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagsPlugin; import com.todoroo.astrid.tags.reusable.FeaturedListFilterMode; import com.todoroo.astrid.ui.DateChangedAlerts; @@ -918,7 +917,6 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener private class TagDeletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - String deletedTagSql = intent.getStringExtra(TagService.TOKEN_TAG_SQL); String uuid = intent.getStringExtra(TagViewFragment.EXTRA_TAG_UUID); TaskListFragment tlf = getTaskListFragment(); FilterListFragment fl = getFilterListFragment(); @@ -928,7 +926,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener if (tagData != null) activeUuid = tagData.getUuid(); - if (deletedTagSql.equals(TagService.SHOW_ACTIVE_TASKS) || activeUuid.equals(uuid)) { + if (activeUuid.equals(uuid)) { fl.switchToActiveTasks(); fl.clear(); // Should auto refresh }