Fetch local id if necessary when tag_added in make changes

pull/14/head
Sam Bosley 13 years ago
parent c6957b33e8
commit a8ac2dccde

@ -163,14 +163,21 @@ public class MakeChanges<TYPE extends RemoteModel> extends ServerToClientMessage
@Override
public void performChanges() {
JSONArray addTags = changes.optJSONArray("tag_added");
if (addTags != null) {
TagService tagService = TagService.getInstance();
for (int i = 0; i < addTags.length(); i++) {
try {
String tagUuid = addTags.getString(i);
tagService.createLink(model.getId(), uuid, tagUuid);
} catch (JSONException e) {
//
if (addTags != null && addTags.length() > 0) {
if (!model.isSaved()) { // We don't have the local task id
long localId = dao.localIdFromUuid(uuid);
model.setId(localId);
}
if (model.isSaved()) {
TagService tagService = TagService.getInstance();
for (int i = 0; i < addTags.length(); i++) {
try {
String tagUuid = addTags.getString(i);
tagService.createLink(model.getId(), uuid, tagUuid);
} catch (JSONException e) {
//
}
}
}
}

@ -1,5 +1,6 @@
package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.DatabaseDao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
@ -30,6 +31,12 @@ public class RemoteModelDao<RTYPE extends RemoteModel> extends DatabaseDao<RTYPE
return super.createNew(item);
};
/**
* Fetch a model object by UUID
* @param uuid
* @param properties
* @return
*/
public RTYPE fetch(String uuid, Property<?>... properties) {
TodorooCursor<RTYPE> cursor = fetchItem(uuid, properties);
return returnFetchResult(cursor);
@ -54,5 +61,22 @@ public class RemoteModelDao<RTYPE extends RemoteModel> extends DatabaseDao<RTYPE
return new TodorooCursor<RTYPE>(cursor, properties);
}
/**
* Get the local id
* @param uuid
* @return
*/
public long localIdFromUuid(String uuid) {
TodorooCursor<RTYPE> cursor = query(Query.select(AbstractModel.ID_PROPERTY).where(RemoteModel.UUID_PROPERTY.eq(uuid)));
try {
if (cursor.getCount() == 0)
return AbstractModel.NO_ID;
cursor.moveToFirst();
return cursor.get(AbstractModel.ID_PROPERTY);
} finally {
cursor.close();
}
}
}

Loading…
Cancel
Save