Added tag name change after save hook

pull/14/head
Sam Bosley 12 years ago
parent 538b38ef37
commit a752747f0a

@ -14,11 +14,16 @@ import android.util.Log;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.RemoteModelDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.tags.TagMetadata;
import com.todoroo.astrid.tags.TagService;
@SuppressWarnings("nls")
@ -118,6 +123,8 @@ public class MakeChanges<TYPE extends RemoteModel> extends ServerToClientMessage
ChangeHooks afterSaveChanges = null;
if (NameMaps.TABLE_ID_TASKS.equals(table))
afterSaveChanges = new AfterSaveTaskChanges(model, changes, uuid);
else if (NameMaps.TABLE_ID_TAGS.equals(table))
afterSaveChanges = new AfterSaveTagChanges(model, changes, uuid);
if (afterSaveChanges != null)
afterSaveChanges.performChanges();
@ -187,6 +194,24 @@ public class MakeChanges<TYPE extends RemoteModel> extends ServerToClientMessage
}
private class AfterSaveTagChanges extends ChangeHooks {
public AfterSaveTagChanges(TYPE model, JSONObject changes, String uuid) {
super(model, changes, uuid);
}
@Override
public void performChanges() {
if (changes.has("name")) {
Metadata template = new Metadata();
template.setValue(TagMetadata.TAG_NAME, changes.optString("name"));
PluginServices.getMetadataService().update(
Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY),
TagMetadata.TAG_UUID.eq(uuid)), template);
}
}
}
}

@ -267,15 +267,14 @@ public final class TagService {
TodorooCursor<TagData> existingTag = tagDataService.query(Query.select(TagData.NAME, TagData.UUID).where(TagData.UUID.eq(tagUuid)));
try {
TagData tagData;
if (existingTag.getCount() == 0) {
tagData = new TagData();
tagData.setValue(TagData.UUID, tagUuid);
tagDataService.save(tagData);
} else {
String name = "";
if (existingTag.getCount() > 0) {
existingTag.moveToFirst();
tagData = new TagData(existingTag);
name = tagData.getValue(TagData.NAME);
}
Metadata link = TagMetadata.newTagMetadata(taskId, taskUuid, tagData.getValue(TagData.NAME), tagUuid);
Metadata link = TagMetadata.newTagMetadata(taskId, taskUuid, name, tagUuid);
if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(taskId, TagMetadata.KEY),
TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) {
metadataDao.createNew(link);

Loading…
Cancel
Save