diff --git a/api/src/com/todoroo/astrid/data/History.java b/api/src/com/todoroo/astrid/data/History.java new file mode 100644 index 000000000..f752953b1 --- /dev/null +++ b/api/src/com/todoroo/astrid/data/History.java @@ -0,0 +1,108 @@ +package com.todoroo.astrid.data; + +import android.content.ContentValues; +import android.net.Uri; + +import com.todoroo.andlib.data.AbstractModel; +import com.todoroo.andlib.data.Property; +import com.todoroo.andlib.data.Property.LongProperty; +import com.todoroo.andlib.data.Property.StringProperty; +import com.todoroo.andlib.data.Table; +import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.astrid.api.AstridApiConstants; + +@SuppressWarnings("nls") +public class History extends RemoteModel { + + /** table for this model */ + public static final Table TABLE = new Table("history", History.class); + + /** content uri for this model */ + public static final Uri CONTENT_URI = Uri.parse("content://" + AstridApiConstants.API_PACKAGE + "/" + + TABLE.name); + + // --- properties + + /** ID */ + public static final LongProperty ID = new LongProperty( + TABLE, ID_PROPERTY_NAME); + + /** Remote ID */ + public static final StringProperty UUID = new StringProperty( + TABLE, UUID_PROPERTY_NAME); + + /** Created at */ + public static final LongProperty CREATED_AT = new LongProperty( + TABLE, "created_at", Property.PROP_FLAG_DATE); + + /** User id */ + public static final StringProperty USER_UUID = new StringProperty( + TABLE, "user_id", Property.PROP_FLAG_USER_ID); + + /** Column name */ + public static final StringProperty COLUMN = new StringProperty( + TABLE, "column"); + + /** Old value */ + public static final StringProperty OLD_VALUE = new StringProperty( + TABLE, "old_value"); + + /** New value */ + public static final StringProperty NEW_VALUE = new StringProperty( + TABLE, "new_value"); + + /** Table identifier */ + public static final StringProperty TABLE_ID = new StringProperty( + TABLE, "table_id"); + + /** Target identifier */ + public static final StringProperty TARGET_ID = new StringProperty( + TABLE, "target_id"); + + @Override + public String getUuid() { + return getUuidHelper(UUID); + } + + /** Default values container */ + private static final ContentValues defaultValues = new ContentValues(); + + @Override + public ContentValues getDefaultValues() { + return defaultValues; + } + + static { + defaultValues.put(UUID.name, NO_UUID); + defaultValues.put(CREATED_AT.name, 0L); + } + + @Override + public long getId() { + return getIdHelper(ID); + } + + public History() { + super(); + } + + public History(TodorooCursor cursor) { + this(); + readPropertiesFromCursor(cursor); + } + + public void readFromCursor(TodorooCursor cursor) { + super.readPropertiesFromCursor(cursor); + } + + /** List of all properties for this model */ + public static final Property[] PROPERTIES = generateProperties(History.class); + + private static final Creator CREATOR = new ModelCreator(History.class); + + @Override + protected Creator getCreator() { + return CREATOR; + } + +} diff --git a/astrid/src/com/todoroo/astrid/dao/Database.java b/astrid/src/com/todoroo/astrid/dao/Database.java index d4b498346..8cb7b3929 100644 --- a/astrid/src/com/todoroo/astrid/dao/Database.java +++ b/astrid/src/com/todoroo/astrid/dao/Database.java @@ -15,6 +15,7 @@ import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Table; import com.todoroo.andlib.service.ContextManager; import com.todoroo.astrid.data.ABTestEvent; +import com.todoroo.astrid.data.History; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.TagData; @@ -339,6 +340,7 @@ public class Database extends AbstractDatabase { 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)); + database.execSQL(createTableSql(visitor, History.TABLE.name, History.PROPERTIES)); database.execSQL(addColumnSql(Task.TABLE, Task.PUSHED_AT, visitor, null)); database.execSQL(addColumnSql(Task.TABLE, Task.IS_PUBLIC, visitor, "0")); diff --git a/astrid/src/com/todoroo/astrid/dao/HistoryDao.java b/astrid/src/com/todoroo/astrid/dao/HistoryDao.java new file mode 100644 index 000000000..49411f0de --- /dev/null +++ b/astrid/src/com/todoroo/astrid/dao/HistoryDao.java @@ -0,0 +1,35 @@ +package com.todoroo.astrid.dao; + +import android.content.ContentValues; + +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.astrid.data.History; + +public class HistoryDao extends RemoteModelDao { + + @Autowired + private Database database; + + public HistoryDao() { + super(History.class); + DependencyInjectionService.getInstance().inject(this); + setDatabase(database); + } + + @Override + public boolean createNew(History item) { + if (!item.containsValue(History.CREATED_AT)) + item.setValue(History.CREATED_AT, DateUtilities.now()); + return super.createNew(item); + } + + @Override + public boolean saveExisting(History item) { + ContentValues values = item.getSetValues(); + if(values == null || values.size() == 0) + return false; + return super.saveExisting(item); + } +}