/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.gtasks.api;
import java.io.IOException;
import com.google.api.services.tasks.model.Task;
/**
* Abstract class that encapsulates some push request to the server
* @author Sam Bosley
*
*/
public abstract class PushRequest {
protected String listId;
protected Task toPush;
protected GtasksInvoker service;
public PushRequest(GtasksInvoker service, String listId, Task toPush) {
this.service = service;
this.listId = listId;
this.toPush = toPush;
}
public String getListId() {
return listId;
}
public void setListId(String listId) {
this.listId = listId;
}
public Task getToPush() {
return toPush;
}
public void setToPush(Task toPush) {
this.toPush = toPush;
}
public GtasksInvoker getService() {
return service;
}
public void setService(GtasksInvoker service) {
this.service = service;
}
public Task push() throws IOException {
try {
return executePush();
} catch (IOException e) {
recover();
return executePush();
}
}
protected abstract Task executePush() throws IOException;
protected abstract void recover();
}