Put in some basic recovery options for failed gtasks pushes. Hopefully this will reduce the number of failed syncs

pull/14/head
Sam Bosley 13 years ago
parent ed310f7e5f
commit a158192c7f

@ -24,6 +24,12 @@ public class CreateRequest extends PushRequest {
return service.createGtask(listId, toPush, parent, priorSiblingId);
}
@Override
protected void recover() {
parent = null;
priorSiblingId = null;
}
public String getParent() {
return parent;
}

@ -29,6 +29,11 @@ public class MoveListRequest extends PushRequest {
return service.createGtask(dstList, toPush);
}
@Override
protected void recover() {
//If there's a good way to recover, put it here
}
private void transferProperties(Task local) {
toPush.setCompleted(local.getCompleted());
toPush.setDeleted(local.getDeleted());

@ -34,6 +34,12 @@ public class MoveRequest extends PushRequest {
return service.moveGtask(super.listId, taskId, parentId, priorSiblingId);
}
@Override
protected void recover() {
parentId = null;
priorSiblingId = null;
}
public String getParentId() {
return parentId;
}

@ -41,5 +41,16 @@ public abstract class PushRequest {
this.service = service;
}
public abstract Task executePush() throws IOException;
public Task push() throws IOException {
try {
return executePush();
} catch (IOException e) {
recover();
return executePush();
}
}
protected abstract Task executePush() throws IOException;
protected abstract void recover();
}

@ -20,4 +20,9 @@ public class UpdateRequest extends PushRequest {
return service.updateGtask(listId, toPush);
}
@Override
protected void recover() {
//If there's a good way to recover, put it here
}
}

@ -292,7 +292,7 @@ public final class GtasksSyncOnSaveService {
}
MoveRequest move = new MoveRequest(gtasksService, taskId, listId, parent, priorSibling);
move.executePush();
move.push();
}
private boolean syncOnSaveEnabled() {

@ -294,7 +294,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
String remoteSibling = gtasksMetadataService.getRemoteSiblingId(listId, t.gtaskMetadata);
MoveRequest move = new MoveRequest(taskService, toMove, listId, remoteParent, remoteSibling);
move.executePush();
move.push();
}
}
@ -435,7 +435,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
CreateRequest createRequest = new CreateRequest(taskService, listId, createdTask, local.parentId, local.priorSiblingId);
//updateTaskHelper(local, null, createRequest);
localPropertiesToModel(local, null, createRequest.getToPush());
com.google.api.services.tasks.model.Task createResult = createRequest.executePush();
com.google.api.services.tasks.model.Task createResult = createRequest.push();
createdWithoutId.add(local);
createdWithoutOrder.add(local);
String newIdTask = createResult.getId();
@ -499,11 +499,11 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
Log.e("gtasks-debug", "ACTION: move(1) - " + newIdTask + ", " + local.parentId + ", " + local.priorSiblingId);
//This case basically defaults to whatever local settings are. Future versions could try and merge better
MoveRequest moveRequest = new MoveRequest(taskService, newIdTask, idList, local.parentId, local.priorSiblingId);
moveRequest.executePush();
moveRequest.push();
}
if (request instanceof UpdateRequest) {
request.executePush();
request.push();
}
//Strategy--delete, migrate properties, recreate, update local AND remote ids; happens in MoveListRequest
@ -513,7 +513,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
Log.e("gtasks-debug", "ACTION: moveTask(5), " + newIdTask + ", " + idList + " to " +
remote.gtaskMetadata.getValue(GtasksMetadata.LIST_ID));
MoveListRequest moveList = new MoveListRequest(taskService, newIdTask, remote.gtaskMetadata.getValue(GtasksMetadata.LIST_ID), idList, null);
com.google.api.services.tasks.model.Task result = moveList.executePush();
com.google.api.services.tasks.model.Task result = moveList.push();
local.gtaskMetadata.setValue(GtasksMetadata.ID, result.getId());
remote.gtaskMetadata.setValue(GtasksMetadata.ID, result.getId());
}

Loading…
Cancel
Save