From f3d7b1958c9ebe05c5701cf1081b745ada460c3a Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Fri, 8 Feb 2013 17:59:37 -0800 Subject: [PATCH] Added all the boilerplate for task attachments--outstanding daos, integration with messages, etc. --- .../todoroo/astrid/data/TaskAttachment.java | 6 +- .../sync/messages/AcknowledgeChange.java | 2 + .../astrid/actfm/sync/messages/NameMaps.java | 80 +++++++++++-------- .../sync/messages/ServerToClientMessage.java | 5 ++ .../todoroo/astrid/core/PluginServices.java | 16 ++++ .../src/com/todoroo/astrid/dao/Database.java | 3 + 6 files changed, 77 insertions(+), 35 deletions(-) diff --git a/api/src/com/todoroo/astrid/data/TaskAttachment.java b/api/src/com/todoroo/astrid/data/TaskAttachment.java index 51acc2f3a..593f1c880 100644 --- a/api/src/com/todoroo/astrid/data/TaskAttachment.java +++ b/api/src/com/todoroo/astrid/data/TaskAttachment.java @@ -75,8 +75,8 @@ public final class TaskAttachment extends RemoteModel { TABLE, "size"); /** File mimetype */ - public static final StringProperty FILETYPE = new StringProperty( - TABLE, "filetype"); + public static final StringProperty CONTENT_TYPE = new StringProperty( + TABLE, "content_type"); /** Attachment creation date */ public static final LongProperty CREATED_AT = new LongProperty( @@ -103,7 +103,7 @@ public final class TaskAttachment extends RemoteModel { defaultValues.put(URL.name, ""); defaultValues.put(FILE_PATH.name, ""); defaultValues.put(SIZE.name, 0); - defaultValues.put(FILETYPE.name, ""); + defaultValues.put(CONTENT_TYPE.name, ""); defaultValues.put(CREATED_AT.name, 0); defaultValues.put(DELETED_AT.name, 0); } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/AcknowledgeChange.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/AcknowledgeChange.java index 9f51567f8..f57d0340a 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/AcknowledgeChange.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/AcknowledgeChange.java @@ -27,6 +27,8 @@ public class AcknowledgeChange extends ServerToClientMessage { dao = PluginServices.getTagOutstandingDao(); else if (NameMaps.TABLE_ID_USER_ACTIVITY.equals(table)) dao = PluginServices.getUserActivityOutstandingDao(); + else if (NameMaps.TABLE_ID_ATTACHMENTS.equals(table)) + dao = PluginServices.getTaskAttachmentOutstandingDao(); else dao = null; } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java index 348ae579b..ccd635afc 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java @@ -8,8 +8,10 @@ import java.util.Set; import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Table; import com.todoroo.andlib.utility.AndroidUtilities; +import com.todoroo.astrid.data.History; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.User; import com.todoroo.astrid.data.UserActivity; @@ -28,6 +30,7 @@ public class NameMaps { public static final String TABLE_ID_USERS = "users"; public static final String TABLE_ID_USER_ACTIVITY = "user_activities"; public static final String TABLE_ID_HISTORY = "history"; + public static final String TABLE_ID_ATTACHMENTS = "task_attachments"; private static final String PUSHED_AT_PREFIX = "pushed_at"; public static final String PUSHED_AT_TASKS = PUSHED_AT_PREFIX + "_" + TABLE_ID_TASKS; @@ -41,7 +44,9 @@ public class NameMaps { TABLE_LOCAL_TO_SERVER.put(Task.TABLE, TABLE_ID_TASKS); TABLE_LOCAL_TO_SERVER.put(TagData.TABLE, TABLE_ID_TAGS); TABLE_LOCAL_TO_SERVER.put(User.TABLE, TABLE_ID_USERS); + TABLE_LOCAL_TO_SERVER.put(History.TABLE, TABLE_ID_HISTORY); TABLE_LOCAL_TO_SERVER.put(UserActivity.TABLE, TABLE_ID_USER_ACTIVITY); + TABLE_LOCAL_TO_SERVER.put(TaskAttachment.TABLE, TABLE_ID_ATTACHMENTS); // Reverse the mapping to construct the server to local map TABLE_SERVER_TO_LOCAL = AndroidUtilities.reverseMap(TABLE_LOCAL_TO_SERVER); @@ -76,6 +81,8 @@ public class NameMaps { return computeSyncableProperties(TAG_DATA_PROPERTIES_LOCAL_TO_SERVER.keySet(), TAG_PROPERTIES_EXCLUDED); else if (TABLE_ID_USER_ACTIVITY.equals(table)) return computeSyncableProperties(USER_ACTIVITY_PROPERTIES_LOCAL_TO_SERVER.keySet(), USER_ACTIVITY_PROPERTIES_EXCLUDED); + else if (TABLE_ID_ATTACHMENTS.equals(table)) + return computeSyncableProperties(TASK_ATTACHMENT_PROPERTIES_LOCAL_TO_SERVER.keySet(), TASK_ATTACHMENT_PROPERTIES_EXCLUDED); return null; } @@ -240,42 +247,46 @@ public class NameMaps { } // ---------- - // History + // TaskAttachment // ---------- -// private static final Map, String> HISTORY_PROPERTIES_LOCAL_TO_SERVER; -// private static final Map> HISTORY_COLUMN_NAMES_TO_PROPERTIES; -// private static final Map HISTORY_COLUMNS_LOCAL_TO_SERVER; -// private static final Map> HISTORY_PROPERTIES_SERVER_TO_LOCAL; -// private static final Set HISTORY_PROPERTIES_EXCLUDED; -// -// private static void putHistoryPropertyToServerName(Property property, String serverName, boolean writeable) { -// putPropertyToServerName(property, serverName, HISTORY_PROPERTIES_LOCAL_TO_SERVER, HISTORY_COLUMN_NAMES_TO_PROPERTIES, -// HISTORY_COLUMNS_LOCAL_TO_SERVER, HISTORY_PROPERTIES_EXCLUDED, writeable); -// } -// -// static { -// HISTORY_PROPERTIES_LOCAL_TO_SERVER = new HashMap, String>(); -// HISTORY_COLUMN_NAMES_TO_PROPERTIES = new HashMap>(); -// HISTORY_COLUMNS_LOCAL_TO_SERVER = new HashMap(); -// HISTORY_PROPERTIES_EXCLUDED = new HashSet(); -// -// putHistoryPropertyToServerName(History.UUID, "id", false); -// putHistoryPropertyToServerName(History.CREATED_AT, "created_at", false); -// putHistoryPropertyToServerName(History.USER_UUID, "user_id", false); -// putHistoryPropertyToServerName(History.COLUMN, "column", false); -// putHistoryPropertyToServerName(History.OLD_VALUE, "prev", false); -// putHistoryPropertyToServerName(History.NEW_VALUE, "value", false); -// -// // Reverse the mapping to construct the server to local map -// HISTORY_PROPERTIES_SERVER_TO_LOCAL = AndroidUtilities.reverseMap(USER_ACTIVITY_PROPERTIES_LOCAL_TO_SERVER); -// } + private static final Map, String> TASK_ATTACHMENT_PROPERTIES_LOCAL_TO_SERVER; + private static final Map> TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES; + private static final Map TASK_ATTACHMENT_COLUMNS_LOCAL_TO_SERVER; + private static final Map> TASK_ATTACHMENT_PROPERTIES_SERVER_TO_LOCAL; + private static final Set TASK_ATTACHMENT_PROPERTIES_EXCLUDED; + + private static void putTaskAttachmentPropertyToServerName(Property property, String serverName, boolean writeable) { + putPropertyToServerName(property, serverName, TASK_ATTACHMENT_PROPERTIES_LOCAL_TO_SERVER, TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES, + TASK_ATTACHMENT_COLUMNS_LOCAL_TO_SERVER, TASK_ATTACHMENT_PROPERTIES_EXCLUDED, writeable); + } + + static { + TASK_ATTACHMENT_PROPERTIES_LOCAL_TO_SERVER = new HashMap, String>(); + TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES = new HashMap>(); + TASK_ATTACHMENT_COLUMNS_LOCAL_TO_SERVER = new HashMap(); + TASK_ATTACHMENT_PROPERTIES_EXCLUDED = new HashSet(); + + putTaskAttachmentPropertyToServerName(TaskAttachment.UUID, "uuid", false); + putTaskAttachmentPropertyToServerName(TaskAttachment.USER_UUID, "user_id", true); + putTaskAttachmentPropertyToServerName(TaskAttachment.TASK_UUID, "task_id", true); + putTaskAttachmentPropertyToServerName(TaskAttachment.NAME, "name", false); + putTaskAttachmentPropertyToServerName(TaskAttachment.URL, "url", false); + putTaskAttachmentPropertyToServerName(TaskAttachment.SIZE, "size", false); + putTaskAttachmentPropertyToServerName(TaskAttachment.CONTENT_TYPE, "content_type", false); + putTaskAttachmentPropertyToServerName(TaskAttachment.CREATED_AT, "created_at", true); + putTaskAttachmentPropertyToServerName(TaskAttachment.DELETED_AT, "deleted_at", true); + + + // Reverse the mapping to construct the server to local map + TASK_ATTACHMENT_PROPERTIES_SERVER_TO_LOCAL = AndroidUtilities.reverseMap(TASK_ATTACHMENT_PROPERTIES_LOCAL_TO_SERVER); + } // ---------- // Mapping helpers // ---------- - private static B mapColumnName(String table, String col, Map taskMap, Map tagMap, Map userMap, Map userActivityMap) { + private static B mapColumnName(String table, String col, Map taskMap, Map tagMap, Map userMap, Map userActivityMap, Map taskAttachmentMap) { Map map = null; if (TABLE_ID_TASKS.equals(table)) map = taskMap; @@ -285,6 +296,8 @@ public class NameMaps { map = userMap; else if (TABLE_ID_USER_ACTIVITY.equals(table)) map = userActivityMap; + else if (TABLE_ID_ATTACHMENTS.equals(table)) + map = taskAttachmentMap; if (map == null) return null; @@ -302,20 +315,23 @@ public class NameMaps { } else if (TABLE_ID_USER_ACTIVITY.equals(table)) { if (USER_ACTIVITY_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) return !USER_ACTIVITY_PROPERTIES_EXCLUDED.contains(column); + } else if (TABLE_ID_ATTACHMENTS.equals(table)) { + if (TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES.containsKey(column)) + return !TASK_ATTACHMENT_PROPERTIES_EXCLUDED.contains(column); } return false; } public static String localColumnNameToServerColumnName(String table, String localColumn) { - return mapColumnName(table, localColumn, TASK_COLUMNS_LOCAL_TO_SERVER, TAG_DATA_COLUMNS_LOCAL_TO_SERVER, USER_COLUMNS_LOCAL_TO_SERVER, USER_ACTIVITY_COLUMNS_LOCAL_TO_SERVER); + return mapColumnName(table, localColumn, TASK_COLUMNS_LOCAL_TO_SERVER, TAG_DATA_COLUMNS_LOCAL_TO_SERVER, USER_COLUMNS_LOCAL_TO_SERVER, USER_ACTIVITY_COLUMNS_LOCAL_TO_SERVER, TASK_ATTACHMENT_COLUMNS_LOCAL_TO_SERVER); } public static Property localColumnNameToProperty(String table, String localColumn) { - return mapColumnName(table, localColumn, TASK_COLUMN_NAMES_TO_PROPERTIES, TAG_DATA_COLUMN_NAMES_TO_PROPERTIES, USER_COLUMN_NAMES_TO_PROPERTIES, USER_ACTIVITY_COLUMN_NAMES_TO_PROPERTIES); + return mapColumnName(table, localColumn, TASK_COLUMN_NAMES_TO_PROPERTIES, TAG_DATA_COLUMN_NAMES_TO_PROPERTIES, USER_COLUMN_NAMES_TO_PROPERTIES, USER_ACTIVITY_COLUMN_NAMES_TO_PROPERTIES, TASK_ATTACHMENT_COLUMN_NAMES_TO_PROPERTIES); } public static Property serverColumnNameToLocalProperty(String table, String serverColumn) { - return mapColumnName(table, serverColumn, TASK_PROPERTIES_SERVER_TO_LOCAL, TAG_DATA_PROPERTIES_SERVER_TO_LOCAL, USER_PROPERTIES_SERVER_TO_LOCAL, USER_ACTIVITY_PROPERTIES_SERVER_TO_LOCAL); + return mapColumnName(table, serverColumn, TASK_PROPERTIES_SERVER_TO_LOCAL, TAG_DATA_PROPERTIES_SERVER_TO_LOCAL, USER_PROPERTIES_SERVER_TO_LOCAL, USER_ACTIVITY_PROPERTIES_SERVER_TO_LOCAL, TASK_ATTACHMENT_PROPERTIES_SERVER_TO_LOCAL); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ServerToClientMessage.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ServerToClientMessage.java index 20f026f4e..11ec35986 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ServerToClientMessage.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/ServerToClientMessage.java @@ -5,6 +5,7 @@ import org.json.JSONObject; import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.User; import com.todoroo.astrid.data.UserActivity; @@ -54,6 +55,8 @@ public abstract class ServerToClientMessage { return new MakeChanges(json, PluginServices.getUserDao()); else if (NameMaps.TABLE_ID_USER_ACTIVITY.equals(table)) return new MakeChanges(json, PluginServices.getUserActivityDao()); + else if (NameMaps.TABLE_ID_ATTACHMENTS.equals(table)) + return new MakeChanges(json, PluginServices.getTaskAttachmentDao()); else return null; } @@ -68,6 +71,8 @@ public abstract class ServerToClientMessage { return new NowBriefed(json, PluginServices.getUserActivityDao()); else if (NameMaps.TABLE_ID_USERS.equals(table)) return new NowBriefed(json, PluginServices.getUserDao()); + else if (NameMaps.TABLE_ID_ATTACHMENTS.equals(table)) + return new NowBriefed(json, PluginServices.getTaskAttachmentDao()); else return null; } diff --git a/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java b/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java index 327e00488..c26421249 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java @@ -17,6 +17,8 @@ import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagMetadataDao; import com.todoroo.astrid.dao.TagOutstandingDao; +import com.todoroo.astrid.dao.TaskAttachmentDao; +import com.todoroo.astrid.dao.TaskAttachmentOutstandingDao; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskOutstandingDao; import com.todoroo.astrid.dao.UserActivityDao; @@ -85,6 +87,12 @@ public final class PluginServices { @Autowired HistoryDao historyDao; + @Autowired + TaskAttachmentDao taskAttachmentDao; + + @Autowired + TaskAttachmentOutstandingDao taskAttachmentOutstandingDao; + private static volatile PluginServices instance; static { @@ -172,6 +180,14 @@ public final class PluginServices { return getInstance().historyDao; } + public static TaskAttachmentDao getTaskAttachmentDao() { + return getInstance().taskAttachmentDao; + } + + public static TaskAttachmentOutstandingDao getTaskAttachmentOutstandingDao() { + return getInstance().taskAttachmentOutstandingDao; + } + // -- helpers /** diff --git a/astrid/src/com/todoroo/astrid/dao/Database.java b/astrid/src/com/todoroo/astrid/dao/Database.java index 9dee69beb..8c46a3410 100644 --- a/astrid/src/com/todoroo/astrid/dao/Database.java +++ b/astrid/src/com/todoroo/astrid/dao/Database.java @@ -23,6 +23,7 @@ import com.todoroo.astrid.data.TagMetadata; import com.todoroo.astrid.data.TagOutstanding; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskAttachment; +import com.todoroo.astrid.data.TaskAttachmentOutstanding; import com.todoroo.astrid.data.TaskOutstanding; import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.User; @@ -74,6 +75,7 @@ public class Database extends AbstractDatabase { TaskOutstanding.TABLE, TagOutstanding.TABLE, UserActivityOutstanding.TABLE, + TaskAttachmentOutstanding.TABLE }; // --- listeners @@ -340,6 +342,7 @@ public class Database extends AbstractDatabase { case 28: try { database.execSQL(createTableSql(visitor, TaskOutstanding.TABLE.name, TaskOutstanding.PROPERTIES)); database.execSQL(createTableSql(visitor, TagOutstanding.TABLE.name, TagOutstanding.PROPERTIES)); + database.execSQL(createTableSql(visitor, TaskAttachmentOutstanding.TABLE.name, TagOutstanding.PROPERTIES)); database.execSQL(createTableSql(visitor, TagMetadata.TABLE.name, TagMetadata.PROPERTIES)); database.execSQL(createTableSql(visitor, UserActivity.TABLE.name, UserActivity.PROPERTIES)); database.execSQL(createTableSql(visitor, UserActivityOutstanding.TABLE.name, UserActivityOutstanding.PROPERTIES));