Better handling of deleting tags--use uuids only instead of names

pull/14/head
Sam Bosley 11 years ago
parent 918e533ead
commit f10b3acc31

@ -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;

@ -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;

@ -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<? extends Activity> activity, Tag tag, String sql) {
private static Intent newTagIntent(Context context, Class<? extends Activity> 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);
}
}

@ -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) {

@ -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
}

Loading…
Cancel
Save