diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksDetailExposer.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksDetailExposer.java index 27241cc0e..1d9908b7b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksDetailExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksDetailExposer.java @@ -14,10 +14,8 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.data.Metadata; /** - * Exposes Task Details for Remember the Milk: - * - RTM list - * - RTM repeat information - * - RTM notes + * Exposes Task Details for Google TAsks: + * - list * * @author Tim Su * diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java index d0c9598eb..897743ff5 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java @@ -3,8 +3,6 @@ */ package com.todoroo.astrid.gtasks; -import org.weloveastrid.rmilk.MilkUtilities; - import android.content.BroadcastReceiver; import android.content.ContentValues; import android.content.Context; @@ -32,7 +30,7 @@ import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria; import com.todoroo.astrid.data.TaskApiDao.TaskCriteria; /** - * Exposes filters based on RTM lists + * Exposes filters based on lists * * @author Tim Su * @@ -90,7 +88,7 @@ public class GtasksFilterExposer extends BroadcastReceiver { list[0] = header; list[1] = listsCategory; Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS); - broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, MilkUtilities.IDENTIFIER); + broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, GtasksPreferenceService.IDENTIFIER); broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list); context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); } diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java index 4a199cff6..ccf0df3c3 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java @@ -7,7 +7,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map.Entry; import org.json.JSONException; @@ -55,7 +54,6 @@ import com.todoroo.gtasks.GoogleTaskTask; import com.todoroo.gtasks.GoogleTaskView; import com.todoroo.gtasks.GoogleTasksException; import com.todoroo.gtasks.GoogleTaskService.ConvenientTaskCreator; -import com.todoroo.gtasks.actions.Action; import com.todoroo.gtasks.actions.Actions; import com.todoroo.gtasks.actions.ListAction; import com.todoroo.gtasks.actions.ListActions; @@ -75,11 +73,6 @@ public class GtasksSyncProvider extends SyncProvider { private static final Actions a = new Actions(); private static final ListActions l = new ListActions(); - /** batched actions to execute */ - private final ArrayList actions = new ArrayList(); - private final HashMap> listActions = - new HashMap>(); - static { AstridDependencyInjector.initialize(); } @@ -230,7 +223,6 @@ public class GtasksSyncProvider extends SyncProvider { for(StoreObject dashboard : gtasksListService.getLists()) { String listId = dashboard.getValue(GtasksList.REMOTE_ID); List list = taskService.getTasks(listId); - System.err.println("list " + listId + " read " + list.size() + " tasks"); readTasksIntoRemoteTasks(list, remoteTasks); } @@ -242,7 +234,6 @@ public class GtasksSyncProvider extends SyncProvider { syncData.localUpdated.close(); } - executeBatchedActions(); gtasksTaskListUpdater.updateAllMetadata(); gtasksPreferenceService.recordSuccessfulSync(); @@ -307,7 +298,6 @@ public class GtasksSyncProvider extends SyncProvider { private static final Property[] PROPERTIES = new Property[] { Task.ID, Task.TITLE, - Task.IMPORTANCE, Task.DUE_DATE, Task.CREATION_DATE, Task.COMPLETION_DATE, @@ -348,20 +338,14 @@ public class GtasksSyncProvider extends SyncProvider { throw new RuntimeException(e); } - updateTaskHelper(local, null, createdTask); - String remoteId; - try { - remoteId = createdTask.go(); - gtasksTaskListUpdater.addRemoteTaskMapping(local.task.getId(), remoteId); - } catch (JSONException e) { - throw new GoogleTasksException(e); - } + String remoteId = updateTaskHelper(local, null, createdTask); + gtasksTaskListUpdater.addRemoteTaskMapping(local.task.getId(), remoteId); local.gtaskMetadata.setValue(GtasksMetadata.LIST_ID, remoteId); return local; } - private void updateTaskHelper(GtasksTaskContainer local, + private String updateTaskHelper(GtasksTaskContainer local, GtasksTaskContainer remote, TaskBuilder builder) throws IOException { String idTask = local.gtaskMetadata.getValue(GtasksMetadata.ID); @@ -375,7 +359,7 @@ public class GtasksSyncProvider extends SyncProvider { // moving between lists if(remote != null && !idList.equals(remote.gtaskMetadata.getValue(GtasksMetadata.LIST_ID))) { - batch(a.moveTask(idTask, idList, remote.gtaskMetadata.getValue(GtasksMetadata.LIST_ID), null)); + taskService.executeActions(a.moveTask(idTask, idList, remote.gtaskMetadata.getValue(GtasksMetadata.LIST_ID), null)); } // other properties @@ -388,12 +372,22 @@ public class GtasksSyncProvider extends SyncProvider { if(shouldTransmit(local, Task.NOTES, remote)) builder.notes(local.task.getValue(Task.NOTES)); - // moving within a list - if(remote == null || local.parentId != remote.parentId || local.priorSiblingId != remote.priorSiblingId) { - batch(local.gtaskMetadata.getValue(GtasksMetadata.LIST_ID), - l.move(idTask, local.parentId, local.priorSiblingId)); + String id = idList; + ListAction moveAction = l.move(idTask, local.parentId, local.priorSiblingId); + + // write task + if(builder instanceof TaskModifier) { + ListAction action = ((TaskModifier) builder).done(); + if(remote == null || local.parentId != remote.parentId || local.priorSiblingId != remote.priorSiblingId) + taskService.executeListActions(idList, action, moveAction); + else + taskService.executeListActions(idList, action); + } else { + id = ((ConvenientTaskCreator)builder).go(); + taskService.executeListActions(idList, moveAction); } + return id; } catch (JSONException e) { throw new GoogleTasksException(e); } @@ -457,45 +451,15 @@ public class GtasksSyncProvider extends SyncProvider { String id = local.gtaskMetadata.getValue(GtasksMetadata.ID); TaskModifier modifyTask = l.modifyTask(id); - updateTaskHelper(local, remote, modifyTask); - if(shouldTransmit(local, Task.TITLE, remote)) modifyTask.name(local.task.getValue(Task.TITLE)); - ListAction action = modifyTask.done(); - batch(local.gtaskMetadata.getValue(GtasksMetadata.LIST_ID), action); + updateTaskHelper(local, remote, modifyTask); } catch (JSONException e) { throw new GoogleTasksException(e); } } - /** add action to batch */ - private void batch(String list, ListAction action) { - if(!listActions.containsKey(list)) - listActions.put(list, new ArrayList()); - listActions.get(list).add(action); - } - - /** add action to batch */ - private void batch(Action action) { - actions.add(action); - } - - /** execute all batched actions */ - private void executeBatchedActions() throws IOException, JSONException { - if(!actions.isEmpty()) { - taskService.executeActions(actions.toArray(new Action[actions.size()])); - System.err.println("executed " + actions); - } - if(!listActions.isEmpty()) { - for(Entry> entry : listActions.entrySet()) { - taskService.executeListActions(entry.getKey(), - entry.getValue().toArray(new ListAction[entry.getValue().size()])); - System.err.println("executed " + entry.getValue() + " on " + entry.getKey()); - } - } - } - // ---------------------------------------------------------------------- // --------------------------------------------------------- read / write // ---------------------------------------------------------------------- @@ -519,7 +483,8 @@ public class GtasksSyncProvider extends SyncProvider { int length = tasks.size(); for(int i = 0; i < length; i++) { GtasksTaskContainer task = tasks.get(i); - if(AndroidUtilities.equals(task.gtaskMetadata, target.gtaskMetadata)) + if(AndroidUtilities.equals(task.gtaskMetadata.getValue(GtasksMetadata.ID), + target.gtaskMetadata.getValue(GtasksMetadata.ID))) return i; } return -1; diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java index 6649ba13e..3450188bf 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java @@ -6,7 +6,6 @@ import java.util.Iterator; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gtasks.GtasksMetadata; -import com.todoroo.astrid.producteev.sync.ProducteevTask; import com.todoroo.astrid.sync.SyncContainer; /** @@ -38,7 +37,7 @@ public class GtasksTaskContainer extends SyncContainer { for(Iterator iterator = metadata.iterator(); iterator.hasNext(); ) { Metadata item = iterator.next(); - if(ProducteevTask.METADATA_KEY.equals(item.getValue(Metadata.KEY))) { + if(GtasksMetadata.METADATA_KEY.equals(item.getValue(Metadata.KEY))) { gtaskMetadata = item; iterator.remove(); // don't break, could be multiple