Fetch local id if necessary when tag_added in make changes

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

@ -163,7 +163,13 @@ public class MakeChanges<TYPE extends RemoteModel> extends ServerToClientMessage
@Override @Override
public void performChanges() { public void performChanges() {
JSONArray addTags = changes.optJSONArray("tag_added"); JSONArray addTags = changes.optJSONArray("tag_added");
if (addTags != null) { 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(); TagService tagService = TagService.getInstance();
for (int i = 0; i < addTags.length(); i++) { for (int i = 0; i < addTags.length(); i++) {
try { try {
@ -174,6 +180,7 @@ public class MakeChanges<TYPE extends RemoteModel> extends ServerToClientMessage
} }
} }
} }
}
JSONArray removeTags = changes.optJSONArray("tag_removed"); JSONArray removeTags = changes.optJSONArray("tag_removed");
if (removeTags != null) { if (removeTags != null) {

@ -1,5 +1,6 @@
package com.todoroo.astrid.dao; package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.DatabaseDao; import com.todoroo.andlib.data.DatabaseDao;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
@ -30,6 +31,12 @@ public class RemoteModelDao<RTYPE extends RemoteModel> extends DatabaseDao<RTYPE
return super.createNew(item); return super.createNew(item);
}; };
/**
* Fetch a model object by UUID
* @param uuid
* @param properties
* @return
*/
public RTYPE fetch(String uuid, Property<?>... properties) { public RTYPE fetch(String uuid, Property<?>... properties) {
TodorooCursor<RTYPE> cursor = fetchItem(uuid, properties); TodorooCursor<RTYPE> cursor = fetchItem(uuid, properties);
return returnFetchResult(cursor); return returnFetchResult(cursor);
@ -54,5 +61,22 @@ public class RemoteModelDao<RTYPE extends RemoteModel> extends DatabaseDao<RTYPE
return new TodorooCursor<RTYPE>(cursor, properties); 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