allItemsWithMetadataUri instead of this one.
- */
- public static Uri allItemsUri() {
- return Uri.parse("content://" + PROVIDER + "/items");
- }
-
- /**
- * URI for:
- * allItemsUri.
- *
- * For queries, allItemsUri will be more efficient, but will
- * not work if your selection clause contains columns not mentioned in your
- * projection
- *
- * @param metadata
- * array of metadata columns you wish to select using
- *
- */
- public static Uri allItemsWithMetadataUri(String[] metadata) {
- if(metadata == null || metadata.length == 0)
- throw new IllegalArgumentException("You must provide metadata");
- StringBuilder builder = new StringBuilder();
- for(int i = 0; i < metadata.length; i++)
- builder.append(escapeUriSubComponent(metadata[i])).append(
- SUB_COMPONENT_SEPARATOR);
-
- return Uri.parse("content://" + PROVIDER + "/itemsWith/" +
- escapeUriComponent(builder.toString()));
- }
-
- /**
- * URI for:
- *
Task.URGENCY_*) */
- public static final String URGENCY = "urgency";
-
- /** int: Task Importance setting (see Task.IMPORTANCE_*) */
- public static final String IMPORTANCE = "importance";
-
- /** int: unixtime Task is due, 0 if not set */
- public static final String DUE_DATE = "dueDate";
-
- /** int: unixtime Task should be hidden until, 0 if not set */
- public static final String HIDDEN_UNTIL = "hiddenUntil";
-
- /** int: unixtime Task was created */
- public static final String CREATION_DATE = "creationDate";
-
- /** int: unixtime Task was completed, 0 if task not completed */
- public static final String COMPLETION_DATE = "completionDate";
-
- /** int: unixtime Task was deleted, 0 if task not deleted */
- public static final String DELETION_DATE = "deletionDate";
-
- /** int: unixtime Task was modified */
- public static final String MODIFICATION_DATE = "modificationDate";
-
- // --- urgency settings
-
- public static final int URGENCY_NONE = 0;
- public static final int URGENCY_TODAY = 1;
- public static final int URGENCY_THIS_WEEK = 2;
- public static final int URGENCY_THIS_MONTH = 3;
- public static final int URGENCY_WITHIN_THREE_MONTHS = 4;
- public static final int URGENCY_WITHIN_SIX_MONTHS = 5;
- public static final int URGENCY_WITHIN_A_YEAR = 6;
- public static final int URGENCY_SPECIFIC_DAY = 7;
- public static final int URGENCY_SPECIFIC_DAY_TIME = 8;
-
- // --- importance settings
-
- public static final int IMPORTANCE_DO_OR_DIE = 0;
- public static final int IMPORTANCE_MUST_DO = 1;
- public static final int IMPORTANCE_SHOULD_DO = 2;
- public static final int IMPORTANCE_NONE = 3;
-
-
- }
-
- // --- internal methods
-
- /**
- * Escapes a string for use in a URI. Used internally to pass extra data
- * to the content provider.
- * @param component
- * @return
- */
- private static String escapeUriComponent(String component) {
- return component.replace("%", "%o").replace("/", "%s");
- }
-
- private static final String SUB_COMPONENT_SEPARATOR = "|";
-
- /**
- * Escapes a string for use as part of a URI string. Used internally to pass extra data
- * to the content provider.
- * @param component
- * @return
- */
- private static String escapeUriSubComponent(String component) {
- return component.replace("$", "$o").replace(SUB_COMPONENT_SEPARATOR, "$s");
- }
-
-}
diff --git a/astrid/api-src/com/todoroo/astrid/api/EditOperation.java b/astrid/api-src/com/todoroo/astrid/api/EditOperation.java
index 779b40689..84af715dd 100644
--- a/astrid/api-src/com/todoroo/astrid/api/EditOperation.java
+++ b/astrid/api-src/com/todoroo/astrid/api/EditOperation.java
@@ -13,12 +13,12 @@ import android.os.Parcelable;
* @author Tim Su FilterListFilter allows users to display tasks that have
@@ -19,7 +20,12 @@ import com.todoroo.astrid.api.AstridContentProvider.AstridTask;
* @author Tim Su SELECT fields FROM table %s". Use
- * {@link AstridApiConstants.TASK_TABLE} and
- * {@link AstridApiConstants.METADATA_TABLE} as table names,
- * {@link AstridTask} for field names.
+ * statement after "SELECT fields FROM table %s". It is
+ * recommended that you use a {@link QueryTemplate} to construct your
+ * query.
* * Examples: *
" WHERE completionDate = 0"
- * " INNER JOIN " +
+ * "WHERE completionDate = 0"
+ * "INNER JOIN " +
* Constants.TABLE_METADATA + " ON metadata.task = tasks.id WHERE
* metadata.namespace = " + NAMESPACE + " AND metadata.key = 'a' AND
* metadata.value = 'b' GROUP BY tasks.id ORDER BY tasks.title"
@@ -48,25 +53,18 @@ public class Filter extends FilterListItem {
public String sqlQuery;
/**
- * SQL query to execute on a task when quick-creating a new task while viewing
- * this filter. For example, when a user views tasks tagged 'ABC', the
+ * Values to apply to a task when quick-adding a task from this filter.
+ * For example, when a user views tasks tagged 'ABC', the
* tasks they create should also be tagged 'ABC'. If set to null, no
- * query will be executed. In this string, $ID will be replaced with the
- * task id.
- *
- * Examples:
- *
- * "INSERT INTO " + Constants.TABLE_METADATA + " (task,
- * namespace, key, string) VALUES ($ID, " + ... + ")"
- * "UPDATE " + Constants.TABLE_TASK + " SET urgency = 0
- * WHERE _id = $ID"
- *
+ * additional values will be stored for a task.
*/
- public String sqlForNewTasks = null;
+ public ContentValues valuesForNewTasks = null;
/**
* Utility constructor for creating a TaskList object
*
+ * @param plugin
+ * {@link Plugin} identifier that encompasses object
* @param listingTitle
* Title of this item as displayed on the lists page, e.g. Inbox
* @param title
@@ -74,22 +72,26 @@ public class Filter extends FilterListItem {
* filter, e.g. Inbox (20 tasks)
* @param sqlQuery
* SQL query for this list (see {@link sqlQuery} for examples).
- * @param sqlForNewTasks
+ * @param valuesForNewTasks
* see {@link sqlForNewTasks}
*/
- public Filter(String listingTitle,
- String title, String sqlQuery, String sqlForNewTasks) {
+ public Filter(String plugin, String listingTitle,
+ String title, QueryTemplate sqlQuery, ContentValues valuesForNewTasks) {
+ this.plugin = plugin;
this.listingTitle = listingTitle;
this.title = title;
- this.sqlQuery = sqlQuery;
- this.sqlForNewTasks = sqlForNewTasks;
+ this.sqlQuery = sqlQuery.toString();
+ this.valuesForNewTasks = valuesForNewTasks;
}
/**
- * Blank constructor
+ * Utility constructor
+ *
+ * @param plugin
+ * {@link Plugin} identifier that encompasses object
*/
- public Filter() {
- //
+ protected Filter(String plugin) {
+ this.plugin = plugin;
}
// --- parcelable
@@ -106,10 +108,11 @@ public class Filter extends FilterListItem {
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(plugin);
super.writeToParcel(dest, flags);
dest.writeString(title);
dest.writeString(sqlQuery);
- dest.writeString(sqlForNewTasks);
+ dest.writeParcelable(valuesForNewTasks, 0);
}
/**
@@ -121,11 +124,11 @@ public class Filter extends FilterListItem {
* {@inheritDoc}
*/
public Filter createFromParcel(Parcel source) {
- Filter item = new Filter();
+ Filter item = new Filter(source.readString());
item.readFromParcel(source);
item.title = source.readString();
item.sqlQuery = source.readString();
- item.sqlForNewTasks = source.readString();
+ item.valuesForNewTasks = source.readParcelable(ContentValues.class.getClassLoader());
return item;
}
diff --git a/astrid/api-src/com/todoroo/astrid/api/FilterCategory.java b/astrid/api-src/com/todoroo/astrid/api/FilterCategory.java
index a95ffb802..ffaa9cb35 100644
--- a/astrid/api-src/com/todoroo/astrid/api/FilterCategory.java
+++ b/astrid/api-src/com/todoroo/astrid/api/FilterCategory.java
@@ -15,6 +15,11 @@ import android.os.Parcelable;
*/
public class FilterCategory extends FilterListItem {
+ /**
+ * Plug-in Identifier
+ */
+ public final String plugin;
+
/**
* {@link Filter}s contained by this category
*/
@@ -23,22 +28,28 @@ public class FilterCategory extends FilterListItem {
/**
* Constructor for creating a new FilterCategory
*
+ * @param plugin
+ * {@link Plugin} identifier that encompasses object
* @param listingTitle
* Title of this item as displayed on the lists page, e.g. Inbox
* @param children
* filters belonging to this category
*/
- public FilterCategory(String listingTitle,
+ public FilterCategory(String plugin, String listingTitle,
Filter[] children) {
+ this.plugin = plugin;
this.listingTitle = listingTitle;
this.children = children;
}
/**
- * Blank constructor
+ * Constructor for creating a new FilterCategory
+ *
+ * @param plugin
+ * {@link Plugin} identifier that encompasses object
*/
- public FilterCategory() {
- //
+ protected FilterCategory(String plugin) {
+ this.plugin = plugin;
}
// --- parcelable
@@ -55,6 +66,7 @@ public class FilterCategory extends FilterListItem {
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(plugin);
super.writeToParcel(dest, flags);
dest.writeParcelableArray(children, 0);
}
@@ -68,7 +80,7 @@ public class FilterCategory extends FilterListItem {
* {@inheritDoc}
*/
public FilterCategory createFromParcel(Parcel source) {
- FilterCategory item = new FilterCategory();
+ FilterCategory item = new FilterCategory(source.readString());
item.readFromParcel(source);
Parcelable[] parcelableChildren = source.readParcelableArray(
diff --git a/astrid/api-src/com/todoroo/astrid/api/FilterListHeader.java b/astrid/api-src/com/todoroo/astrid/api/FilterListHeader.java
index b980a49e8..e1d38b87b 100644
--- a/astrid/api-src/com/todoroo/astrid/api/FilterListHeader.java
+++ b/astrid/api-src/com/todoroo/astrid/api/FilterListHeader.java
@@ -8,44 +8,57 @@ import android.os.Parcelable;
/**
* Section Header for Filter List
- *
+ *
* @author Tim Su
*
*/
public class FilterListHeader extends FilterListItem {
+ /**
+ * Plug-in Identifier
+ */
+ public final String plugin;
+
/**
* Constructor for creating a new FilterListHeader
- *
+ *
+ * @param plugin
+ * {@link Plugin} identifier that encompasses object
* @param listingTitle
* @param listingIconResource
* @param priority
*/
- public FilterListHeader(String listingTitle) {
+ public FilterListHeader(String plugin, String listingTitle) {
+ this.plugin = plugin;
this.listingTitle = listingTitle;
}
-
+
/**
- * Empty constructor
+ * Constructor for creating a new FilterListHeader
+ *
+ * @param plugin
+ * {@link Plugin} identifier that encompasses object
*/
- public FilterListHeader() {
- //
+ protected FilterListHeader(String plugin) {
+ this.plugin = plugin;
}
-
+
// --- parcelable
-
+
public int describeContents() {
return 0;
}
+ @Override
public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(plugin);
super.writeToParcel(dest, flags);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public FilterListHeader createFromParcel(Parcel source) {
- FilterListHeader item = new FilterListHeader();
+ FilterListHeader item = new FilterListHeader(source.readString());
item.readFromParcel(source);
return item;
}
@@ -53,6 +66,6 @@ public class FilterListHeader extends FilterListItem {
public FilterListHeader[] newArray(int size) {
return new FilterListHeader[size];
}
-
+
};
}
diff --git a/astrid/api-src/com/todoroo/astrid/api/FilterListItem.java b/astrid/api-src/com/todoroo/astrid/api/FilterListItem.java
index f0eab9ec8..747a22cf3 100644
--- a/astrid/api-src/com/todoroo/astrid/api/FilterListItem.java
+++ b/astrid/api-src/com/todoroo/astrid/api/FilterListItem.java
@@ -57,6 +57,7 @@ abstract public class FilterListItem implements Parcelable {
/**
* Utility method to read FilterListItem properties from a parcel.
+ *
* @param source
*/
public void readFromParcel(Parcel source) {
diff --git a/astrid/api-src/com/todoroo/astrid/api/Plugin.java b/astrid/api-src/com/todoroo/astrid/api/Plugin.java
new file mode 100644
index 000000000..81f280ff7
--- /dev/null
+++ b/astrid/api-src/com/todoroo/astrid/api/Plugin.java
@@ -0,0 +1,93 @@
+/**
+ * See the file "LICENSE" for the full license governing this code.
+ */
+package com.todoroo.astrid.api;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Represents a plug-in for Astrid. Users can enable or disable plug-ins,
+ * which affect all other extension points that share the same identifier.
+ *
+ * @author Tim Su
+ *
+ */
+public class Plugin implements Parcelable {
+
+ /**
+ * Plug-in Identifier
+ */
+ public String plugin = null;
+
+ /**
+ * Plug-in Title
+ */
+ public String title = null;
+
+ /**
+ * Plug-in Author
+ */
+ public String author = null;
+
+ /**
+ * Plug-in Description
+ */
+ public String description = null;
+
+ /**
+ * Convenience constructor to generate a plug-in object
+ *
+ * @param plugin
+ * @param title
+ * @param author
+ * @param description
+ */
+ public Plugin(String plugin, String title, String author, String description) {
+ this.plugin = plugin;
+ this.title = title;
+ this.author = author;
+ this.description = description;
+ }
+
+ // --- parcelable helpers
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public int describeContents() {
+ return 0;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(plugin);
+ dest.writeString(title);
+ dest.writeString(author);
+ dest.writeString(description);
+ }
+
+ /**
+ * Parcelable creator
+ */
+ public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
+ /**
+ * {@inheritDoc}
+ */
+ public Plugin createFromParcel(Parcel source) {
+ return new Plugin(source.readString(), source.readString(),
+ source.readString(), source.readString());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Plugin[] newArray(int size) {
+ return new Plugin[size];
+ };
+ };
+
+}
diff --git a/astrid/api-src/com/todoroo/astrid/api/TaskDetail.java b/astrid/api-src/com/todoroo/astrid/api/TaskDetail.java
index 573a7b35c..2fe01fd66 100644
--- a/astrid/api-src/com/todoroo/astrid/api/TaskDetail.java
+++ b/astrid/api-src/com/todoroo/astrid/api/TaskDetail.java
@@ -12,7 +12,12 @@ import android.os.Parcelable;
* @author Tim Su
*
*/
-public class TaskDetail implements Parcelable {
+public final class TaskDetail implements Parcelable {
+
+ /**
+ * Plug-in Identifier
+ */
+ public final String plugin;
/**
* Text of detail
@@ -27,13 +32,15 @@ public class TaskDetail implements Parcelable {
/**
* Creates a TaskDetail object
*
+ * @param plugin
+ * {@link Plugin} identifier that encompasses object
* @param text
* text to display
* @param color
* color to use for text. Use 0 for default color
*/
- public TaskDetail(String text, int color) {
- super();
+ public TaskDetail(String plugin, String text, int color) {
+ this.plugin = plugin;
this.text = text;
this.color = color;
}
@@ -44,8 +51,8 @@ public class TaskDetail implements Parcelable {
* @param text
* text to display
*/
- public TaskDetail(String text) {
- this(text, 0);
+ public TaskDetail(String plugin, String text) {
+ this(plugin, text, 0);
}
@@ -63,6 +70,7 @@ public class TaskDetail implements Parcelable {
* {@inheritDoc}
*/
public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(plugin);
dest.writeString(text);
dest.writeInt(color);
}
@@ -75,7 +83,7 @@ public class TaskDetail implements Parcelable {
* {@inheritDoc}
*/
public TaskDetail createFromParcel(Parcel source) {
- return new TaskDetail(source.readString(), source.readInt());
+ return new TaskDetail(source.readString(), source.readString(), source.readInt());
}
/**
diff --git a/astrid/common-src/com/todoroo/andlib/data/GenericDao.java b/astrid/common-src/com/todoroo/andlib/data/GenericDao.java
index 7fe7b38f5..ab466dd3b 100644
--- a/astrid/common-src/com/todoroo/andlib/data/GenericDao.java
+++ b/astrid/common-src/com/todoroo/andlib/data/GenericDao.java
@@ -11,8 +11,8 @@ import java.lang.reflect.InvocationTargetException;
import android.content.ContentValues;
import android.database.Cursor;
-import com.todoroo.andlib.data.sql.Criterion;
-import com.todoroo.andlib.data.sql.Query;
+import com.todoroo.andlib.sql.Criterion;
+import com.todoroo.andlib.sql.Query;
diff --git a/astrid/common-src/com/todoroo/andlib/data/Property.java b/astrid/common-src/com/todoroo/andlib/data/Property.java
index ad51e5353..9a4665bf2 100644
--- a/astrid/common-src/com/todoroo/andlib/data/Property.java
+++ b/astrid/common-src/com/todoroo/andlib/data/Property.java
@@ -5,7 +5,7 @@
*/
package com.todoroo.andlib.data;
-import com.todoroo.andlib.data.sql.Field;
+import com.todoroo.andlib.sql.Field;
/**
* Property represents a typed column in a database.
diff --git a/astrid/common-src/com/todoroo/andlib/data/Table.java b/astrid/common-src/com/todoroo/andlib/data/Table.java
index ae8d59274..3d2cb8880 100644
--- a/astrid/common-src/com/todoroo/andlib/data/Table.java
+++ b/astrid/common-src/com/todoroo/andlib/data/Table.java
@@ -1,6 +1,7 @@
package com.todoroo.andlib.data;
-import com.todoroo.andlib.data.sql.Field;
+import com.todoroo.andlib.sql.Field;
+import com.todoroo.andlib.sql.SqlTable;
/**
* Table class. Most fields are final, so methods such as as will
@@ -9,7 +10,7 @@ import com.todoroo.andlib.data.sql.Field;
* @author Tim Su
*
*/
-public final class Table extends com.todoroo.andlib.data.sql.Table {
+public final class Table extends SqlTable {
public final String name;
public final Class extends AbstractModel> modelClass;
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/OrderType.java b/astrid/common-src/com/todoroo/andlib/data/sql/OrderType.java
deleted file mode 100644
index b3b8fa5af..000000000
--- a/astrid/common-src/com/todoroo/andlib/data/sql/OrderType.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.todoroo.andlib.data.sql;
-
-public enum OrderType {
- DESC, ASC
-}
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Constants.java b/astrid/common-src/com/todoroo/andlib/sql/Constants.java
similarity index 90%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Constants.java
rename to astrid/common-src/com/todoroo/andlib/sql/Constants.java
index 4596aa34b..4c59f6ead 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Constants.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/Constants.java
@@ -1,7 +1,7 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
@SuppressWarnings("nls")
-public class Constants {
+public final class Constants {
static final String SELECT = "SELECT";
static final String SPACE = " ";
static final String AS = "AS";
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Criterion.java b/astrid/common-src/com/todoroo/andlib/sql/Criterion.java
similarity index 78%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Criterion.java
rename to astrid/common-src/com/todoroo/andlib/sql/Criterion.java
index bae70f44d..fcd3be158 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Criterion.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/Criterion.java
@@ -1,12 +1,12 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
-import static com.todoroo.andlib.data.sql.Constants.AND;
-import static com.todoroo.andlib.data.sql.Constants.EXISTS;
-import static com.todoroo.andlib.data.sql.Constants.LEFT_PARENTHESIS;
-import static com.todoroo.andlib.data.sql.Constants.NOT;
-import static com.todoroo.andlib.data.sql.Constants.OR;
-import static com.todoroo.andlib.data.sql.Constants.RIGHT_PARENTHESIS;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.AND;
+import static com.todoroo.andlib.sql.Constants.EXISTS;
+import static com.todoroo.andlib.sql.Constants.LEFT_PARENTHESIS;
+import static com.todoroo.andlib.sql.Constants.NOT;
+import static com.todoroo.andlib.sql.Constants.OR;
+import static com.todoroo.andlib.sql.Constants.RIGHT_PARENTHESIS;
+import static com.todoroo.andlib.sql.Constants.SPACE;
public abstract class Criterion {
protected final Operator operator;
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/DBObject.java b/astrid/common-src/com/todoroo/andlib/sql/DBObject.java
similarity index 88%
rename from astrid/common-src/com/todoroo/andlib/data/sql/DBObject.java
rename to astrid/common-src/com/todoroo/andlib/sql/DBObject.java
index 7837eb77f..7d27d70a6 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/DBObject.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/DBObject.java
@@ -1,7 +1,7 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
-import static com.todoroo.andlib.data.sql.Constants.AS;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.AS;
+import static com.todoroo.andlib.sql.Constants.SPACE;
public abstract class DBObject> implements Cloneable {
protected String alias;
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/EqCriterion.java b/astrid/common-src/com/todoroo/andlib/sql/EqCriterion.java
similarity index 76%
rename from astrid/common-src/com/todoroo/andlib/data/sql/EqCriterion.java
rename to astrid/common-src/com/todoroo/andlib/sql/EqCriterion.java
index b2ec34cb8..99fc74ad2 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/EqCriterion.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/EqCriterion.java
@@ -1,4 +1,4 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
public class EqCriterion extends UnaryCriterion {
EqCriterion(Field field, Object value) {
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Field.java b/astrid/common-src/com/todoroo/andlib/sql/Field.java
similarity index 81%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Field.java
rename to astrid/common-src/com/todoroo/andlib/sql/Field.java
index 9111d9c25..99501e85d 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Field.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/Field.java
@@ -1,11 +1,11 @@
-package com.todoroo.andlib.data.sql;
-
-import static com.todoroo.andlib.data.sql.Constants.AND;
-import static com.todoroo.andlib.data.sql.Constants.BETWEEN;
-import static com.todoroo.andlib.data.sql.Constants.COMMA;
-import static com.todoroo.andlib.data.sql.Constants.LEFT_PARENTHESIS;
-import static com.todoroo.andlib.data.sql.Constants.RIGHT_PARENTHESIS;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
+package com.todoroo.andlib.sql;
+
+import static com.todoroo.andlib.sql.Constants.AND;
+import static com.todoroo.andlib.sql.Constants.BETWEEN;
+import static com.todoroo.andlib.sql.Constants.COMMA;
+import static com.todoroo.andlib.sql.Constants.LEFT_PARENTHESIS;
+import static com.todoroo.andlib.sql.Constants.RIGHT_PARENTHESIS;
+import static com.todoroo.andlib.sql.Constants.SPACE;
public class Field extends DBObject {
diff --git a/astrid/common-src/com/todoroo/andlib/sql/Functions.java b/astrid/common-src/com/todoroo/andlib/sql/Functions.java
new file mode 100644
index 000000000..ac994dad8
--- /dev/null
+++ b/astrid/common-src/com/todoroo/andlib/sql/Functions.java
@@ -0,0 +1,15 @@
+package com.todoroo.andlib.sql;
+
+@SuppressWarnings("nls")
+public final class Functions {
+
+ public static String caseStatement(Criterion when, Object ifTrue, Object ifFalse) {
+ return new StringBuilder("CASE WHEN ").
+ append(when.toString()).append(" THEN ").append(value(ifTrue)).
+ append(" ELSE ").append(value(ifFalse)).append(" END").toString();
+ }
+
+ private static String value(Object value) {
+ return value.toString();
+ }
+}
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/GroupBy.java b/astrid/common-src/com/todoroo/andlib/sql/GroupBy.java
similarity index 85%
rename from astrid/common-src/com/todoroo/andlib/data/sql/GroupBy.java
rename to astrid/common-src/com/todoroo/andlib/sql/GroupBy.java
index 103128411..c0d1c4290 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/GroupBy.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/GroupBy.java
@@ -1,4 +1,4 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
import java.util.List;
import java.util.ArrayList;
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Join.java b/astrid/common-src/com/todoroo/andlib/sql/Join.java
similarity index 56%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Join.java
rename to astrid/common-src/com/todoroo/andlib/sql/Join.java
index f3809dba9..382c1253f 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Join.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/Join.java
@@ -1,33 +1,33 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
-import static com.todoroo.andlib.data.sql.Constants.JOIN;
-import static com.todoroo.andlib.data.sql.Constants.ON;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.JOIN;
+import static com.todoroo.andlib.sql.Constants.ON;
+import static com.todoroo.andlib.sql.Constants.SPACE;
public class Join {
- private final Table joinTable;
+ private final SqlTable joinTable;
private final JoinType joinType;
private final Criterion[] criterions;
- private Join(Table table, JoinType joinType, Criterion... criterions) {
+ private Join(SqlTable table, JoinType joinType, Criterion... criterions) {
joinTable = table;
this.joinType = joinType;
this.criterions = criterions;
}
- public static Join inner(Table expression, Criterion... criterions) {
+ public static Join inner(SqlTable expression, Criterion... criterions) {
return new Join(expression, JoinType.INNER, criterions);
}
- public static Join left(Table table, Criterion... criterions) {
+ public static Join left(SqlTable table, Criterion... criterions) {
return new Join(table, JoinType.LEFT, criterions);
}
- public static Join right(Table table, Criterion... criterions) {
+ public static Join right(SqlTable table, Criterion... criterions) {
return new Join(table, JoinType.RIGHT, criterions);
}
- public static Join out(Table table, Criterion... criterions) {
+ public static Join out(SqlTable table, Criterion... criterions) {
return new Join(table, JoinType.OUT, criterions);
}
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/JoinType.java b/astrid/common-src/com/todoroo/andlib/sql/JoinType.java
similarity index 56%
rename from astrid/common-src/com/todoroo/andlib/data/sql/JoinType.java
rename to astrid/common-src/com/todoroo/andlib/sql/JoinType.java
index 86cd8f2d3..c1cb7389b 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/JoinType.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/JoinType.java
@@ -1,4 +1,4 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
public enum JoinType {
INNER, LEFT, RIGHT, OUT
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Operator.java b/astrid/common-src/com/todoroo/andlib/sql/Operator.java
similarity index 92%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Operator.java
rename to astrid/common-src/com/todoroo/andlib/sql/Operator.java
index 55981e71a..5f97301c0 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Operator.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/Operator.java
@@ -1,6 +1,6 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.SPACE;
import java.util.HashMap;
import java.util.Map;
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Order.java b/astrid/common-src/com/todoroo/andlib/sql/Order.java
similarity index 52%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Order.java
rename to astrid/common-src/com/todoroo/andlib/sql/Order.java
index 5bff6bf49..fc1049045 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Order.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/Order.java
@@ -1,25 +1,25 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.SPACE;
public class Order {
- private final Field expression;
+ private final Object expression;
private final OrderType orderType;
- private Order(Field expression) {
+ private Order(Object expression) {
this(expression, OrderType.ASC);
}
- private Order(Field expression, OrderType orderType) {
+ private Order(Object expression, OrderType orderType) {
this.expression = expression;
this.orderType = orderType;
}
- public static Order asc(Field expression) {
+ public static Order asc(Object expression) {
return new Order(expression);
}
- public static Order desc(Field expression) {
+ public static Order desc(Object expression) {
return new Order(expression, OrderType.DESC);
}
diff --git a/astrid/common-src/com/todoroo/andlib/sql/OrderType.java b/astrid/common-src/com/todoroo/andlib/sql/OrderType.java
new file mode 100644
index 000000000..299c670c0
--- /dev/null
+++ b/astrid/common-src/com/todoroo/andlib/sql/OrderType.java
@@ -0,0 +1,5 @@
+package com.todoroo.andlib.sql;
+
+public enum OrderType {
+ DESC, ASC
+}
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Query.java b/astrid/common-src/com/todoroo/andlib/sql/Query.java
similarity index 73%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Query.java
rename to astrid/common-src/com/todoroo/andlib/sql/Query.java
index 7a3d4f7e6..91bb608f4 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Query.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/Query.java
@@ -1,32 +1,31 @@
-package com.todoroo.andlib.data.sql;
-
-import static com.todoroo.andlib.data.sql.Constants.ALL;
-import static com.todoroo.andlib.data.sql.Constants.COMMA;
-import static com.todoroo.andlib.data.sql.Constants.FROM;
-import static com.todoroo.andlib.data.sql.Constants.GROUP_BY;
-import static com.todoroo.andlib.data.sql.Constants.LEFT_PARENTHESIS;
-import static com.todoroo.andlib.data.sql.Constants.ORDER_BY;
-import static com.todoroo.andlib.data.sql.Constants.RIGHT_PARENTHESIS;
-import static com.todoroo.andlib.data.sql.Constants.SELECT;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
-import static com.todoroo.andlib.data.sql.Constants.WHERE;
-import static com.todoroo.andlib.data.sql.Table.table;
+package com.todoroo.andlib.sql;
+
+import static com.todoroo.andlib.sql.Constants.ALL;
+import static com.todoroo.andlib.sql.Constants.COMMA;
+import static com.todoroo.andlib.sql.Constants.FROM;
+import static com.todoroo.andlib.sql.Constants.GROUP_BY;
+import static com.todoroo.andlib.sql.Constants.LEFT_PARENTHESIS;
+import static com.todoroo.andlib.sql.Constants.ORDER_BY;
+import static com.todoroo.andlib.sql.Constants.RIGHT_PARENTHESIS;
+import static com.todoroo.andlib.sql.Constants.SELECT;
+import static com.todoroo.andlib.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.WHERE;
+import static com.todoroo.andlib.sql.SqlTable.table;
import static java.util.Arrays.asList;
import java.util.ArrayList;
-import java.util.List;
import com.todoroo.andlib.data.Property;
-public class Query {
+public final class Query {
- private Table table;
- private List criterions = new ArrayList();
- private List fields = new ArrayList();
- private List joins = new ArrayList();
- private List groupBies = new ArrayList();
- private List orders = new ArrayList();
- private List havings = new ArrayList();
+ private SqlTable table;
+ private final ArrayList criterions = new ArrayList();
+ private final ArrayList fields = new ArrayList();
+ private final ArrayList joins = new ArrayList();
+ private final ArrayList groupBies = new ArrayList();
+ private final ArrayList orders = new ArrayList();
+ private final ArrayList havings = new ArrayList();
private Query(Field... fields) {
this.fields.addAll(asList(fields));
@@ -36,7 +35,7 @@ public class Query {
return new Query(fields);
}
- public Query from(Table fromTable) {
+ public Query from(SqlTable fromTable) {
this.table = fromTable;
return this;
}
@@ -154,7 +153,7 @@ public class Query {
sql.deleteCharAt(sql.length() - 1).append(SPACE);
}
- public Table as(String alias) {
+ public SqlTable as(String alias) {
return table(LEFT_PARENTHESIS + this.toString() + RIGHT_PARENTHESIS).as(alias);
}
diff --git a/astrid/common-src/com/todoroo/andlib/sql/QueryTemplate.java b/astrid/common-src/com/todoroo/andlib/sql/QueryTemplate.java
new file mode 100644
index 000000000..33bb0376c
--- /dev/null
+++ b/astrid/common-src/com/todoroo/andlib/sql/QueryTemplate.java
@@ -0,0 +1,108 @@
+package com.todoroo.andlib.sql;
+
+import static com.todoroo.andlib.sql.Constants.COMMA;
+import static com.todoroo.andlib.sql.Constants.GROUP_BY;
+import static com.todoroo.andlib.sql.Constants.ORDER_BY;
+import static com.todoroo.andlib.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.WHERE;
+import static java.util.Arrays.asList;
+
+import java.util.ArrayList;
+
+/**
+ * Query Template returns a bunch of criteria that allows a query to be
+ * constructed
+ *
+ * @author Tim Su
+ *
+ */
+public final class QueryTemplate {
+
+ private final ArrayList criterions = new ArrayList();
+ private final ArrayList joins = new ArrayList();
+ private final ArrayList groupBies = new ArrayList();
+ private final ArrayList orders = new ArrayList();
+ private final ArrayList havings = new ArrayList();
+
+ public QueryTemplate join(Join... join) {
+ joins.addAll(asList(join));
+ return this;
+ }
+
+ public QueryTemplate where(Criterion criterion) {
+ criterions.add(criterion);
+ return this;
+ }
+
+ public QueryTemplate groupBy(Field... groupBy) {
+ groupBies.addAll(asList(groupBy));
+ return this;
+ }
+
+ public QueryTemplate orderBy(Order... order) {
+ orders.addAll(asList(order));
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sql = new StringBuilder();
+ visitJoinClause(sql);
+ visitWhereClause(sql);
+ visitGroupByClause(sql);
+ visitOrderByClause(sql);
+ return sql.toString();
+ }
+
+ private void visitOrderByClause(StringBuilder sql) {
+ if (orders.isEmpty()) {
+ return;
+ }
+ sql.append(ORDER_BY);
+ for (Order order : orders) {
+ sql.append(SPACE).append(order).append(COMMA);
+ }
+ sql.deleteCharAt(sql.length() - 1).append(SPACE);
+ }
+
+ @SuppressWarnings("nls")
+ private void visitGroupByClause(StringBuilder sql) {
+ if (groupBies.isEmpty()) {
+ return;
+ }
+ sql.append(GROUP_BY);
+ for (Field groupBy : groupBies) {
+ sql.append(SPACE).append(groupBy).append(COMMA);
+ }
+ sql.deleteCharAt(sql.length() - 1).append(SPACE);
+ if (havings.isEmpty()) {
+ return;
+ }
+ sql.append("HAVING");
+ for (Criterion havingCriterion : havings) {
+ sql.append(SPACE).append(havingCriterion).append(COMMA);
+ }
+ sql.deleteCharAt(sql.length() - 1).append(SPACE);
+ }
+
+ private void visitWhereClause(StringBuilder sql) {
+ if (criterions.isEmpty()) {
+ return;
+ }
+ sql.append(WHERE);
+ for (Criterion criterion : criterions) {
+ sql.append(SPACE).append(criterion).append(SPACE);
+ }
+ }
+
+ private void visitJoinClause(StringBuilder sql) {
+ for (Join join : joins) {
+ sql.append(join).append(SPACE);
+ }
+ }
+
+ public QueryTemplate having(Criterion criterion) {
+ this.havings.add(criterion);
+ return this;
+ }
+}
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/Table.java b/astrid/common-src/com/todoroo/andlib/sql/SqlTable.java
similarity index 52%
rename from astrid/common-src/com/todoroo/andlib/data/sql/Table.java
rename to astrid/common-src/com/todoroo/andlib/sql/SqlTable.java
index ee04ae0df..07bc2e998 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/Table.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/SqlTable.java
@@ -1,13 +1,13 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
-public class Table extends DBObject {
+public class SqlTable extends DBObject {
- protected Table(String expression) {
+ protected SqlTable(String expression) {
super(expression);
}
- public static Table table(String table) {
- return new Table(table);
+ public static SqlTable table(String table) {
+ return new SqlTable(table);
}
@SuppressWarnings("nls")
diff --git a/astrid/common-src/com/todoroo/andlib/data/sql/UnaryCriterion.java b/astrid/common-src/com/todoroo/andlib/sql/UnaryCriterion.java
similarity index 93%
rename from astrid/common-src/com/todoroo/andlib/data/sql/UnaryCriterion.java
rename to astrid/common-src/com/todoroo/andlib/sql/UnaryCriterion.java
index 387c8f36d..e76f90d03 100644
--- a/astrid/common-src/com/todoroo/andlib/data/sql/UnaryCriterion.java
+++ b/astrid/common-src/com/todoroo/andlib/sql/UnaryCriterion.java
@@ -1,6 +1,6 @@
-package com.todoroo.andlib.data.sql;
+package com.todoroo.andlib.sql;
-import static com.todoroo.andlib.data.sql.Constants.SPACE;
+import static com.todoroo.andlib.sql.Constants.SPACE;
public class UnaryCriterion extends Criterion {
protected final Field expression;
diff --git a/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java b/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java
index c19380b5c..b6b7c8dec 100644
--- a/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java
+++ b/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java
@@ -7,14 +7,10 @@ import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
diff --git a/astrid/common-src/com/todoroo/andlib/utility/DateUtilities.java b/astrid/common-src/com/todoroo/andlib/utility/DateUtilities.java
index 39685bf13..bf14db575 100644
--- a/astrid/common-src/com/todoroo/andlib/utility/DateUtilities.java
+++ b/astrid/common-src/com/todoroo/andlib/utility/DateUtilities.java
@@ -54,24 +54,30 @@ public class DateUtilities {
* ====================================================================== */
/** Convert unixtime into date */
- public static final Date unixtimeToDate(int seconds) {
- if(seconds == 0)
+ public static final Date unixtimeToDate(long millis) {
+ if(millis == 0)
return null;
- return new Date(seconds * 1000L);
+ return new Date(millis);
}
/** Convert date into unixtime */
- public static final int dateToUnixtime(Date date) {
+ public static final long dateToUnixtime(Date date) {
if(date == null)
return 0;
- return (int)(date.getTime() / 1000);
+ return date.getTime();
}
/** Returns unixtime for current time */
- public static final int now() {
- return (int) (System.currentTimeMillis() / 1000L);
+ public static final long now() {
+ return System.currentTimeMillis();
}
+ /** Represents a single day */
+ public static long ONE_DAY = 3600000L;
+
+ /** Represents a single week */
+ public static long WEEK = 7 * 3600000L;
+
/* ======================================================================
* =========================================================== formatters
* ====================================================================== */
diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/FilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java
similarity index 54%
rename from astrid/plugin-src/com/todoroo/astrid/filters/FilterExposer.java
rename to astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java
index 937491f4c..17504eba0 100644
--- a/astrid/plugin-src/com/todoroo/astrid/filters/FilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/filters/CoreFilterExposer.java
@@ -9,10 +9,16 @@ import android.content.Intent;
import android.content.res.Resources;
import com.timsu.astrid.R;
+import com.todoroo.andlib.sql.Criterion;
+import com.todoroo.andlib.sql.Functions;
+import com.todoroo.andlib.sql.Order;
+import com.todoroo.andlib.sql.QueryTemplate;
+import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.FilterListActivity;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
+import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.model.Task;
/**
@@ -21,29 +27,26 @@ import com.todoroo.astrid.model.Task;
* @author Tim Su
*
*/
-public class FilterExposer extends BroadcastReceiver {
-
- public static Filter buildInboxFilter(Resources r) {
- return new Filter(r.getString(R.string.BFE_Inbox),
- r.getString(R.string.BFE_Inbox),
- /*String.format("WHERE %s AND %s ORDER BY CASE %s WHEN 0 THEN (%d + 1000 * %s) ELSE (%s + 1000 * %s) END ASC", //$NON-NLS-1$
- TaskSql.isActive(), TaskSql.isVisible(DateUtilities.now()),
- Task.DUE_DATE, DateUtilities.now() + 60 * 24 * 3600, Task.IMPORTANCE,
- Task.DUE_DATE, Task.IMPORTANCE)*/ "",
- null);
- }
+public final class CoreFilterExposer extends BroadcastReceiver {
+ @SuppressWarnings("nls")
@Override
public void onReceive(Context context, Intent intent) {
Resources r = context.getResources();
// build filters
- Filter inbox = buildInboxFilter(r);
+ Filter inbox = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_Inbox),
+ r.getString(R.string.BFE_Inbox),
+ new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
+ TaskCriteria.isVisible(DateUtilities.now()))).orderBy(
+ Order.asc(Functions.caseStatement(Task.DUE_DATE.eq(0),
+ String.format("(%d + 1000 * %s)", DateUtilities.now(), Task.IMPORTANCE),
+ String.format("(%s + 1000 * %s)", Task.DUE_DATE, Task.IMPORTANCE)))),
+ null);
- Filter all = new Filter(r.getString(R.string.BFE_All),
+ Filter all = new Filter(CorePlugin.pluginIdentifier, r.getString(R.string.BFE_All),
r.getString(R.string.BFE_All),
- String.format("ORDER BY %s DESC", //$NON-NLS-1$
- Task.ID.name),
+ new QueryTemplate().orderBy(Order.desc(Task.MODIFICATION_DATE)),
null);
// transmit filter list
diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java b/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java
new file mode 100644
index 000000000..e009f863b
--- /dev/null
+++ b/astrid/plugin-src/com/todoroo/astrid/filters/CorePlugin.java
@@ -0,0 +1,25 @@
+package com.todoroo.astrid.filters;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.todoroo.astrid.api.AstridApiConstants;
+import com.todoroo.astrid.api.Plugin;
+
+@SuppressWarnings("nls")
+public class CorePlugin extends BroadcastReceiver {
+
+ static final String pluginIdentifier = "core";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Plugin plugin = new Plugin(pluginIdentifier, "Core Filters", "Todoroo",
+ "Provides 'Inbox' and 'All Tasks' Filters");
+
+ Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_PLUGINS);
+ broadcastIntent.putExtra(AstridApiConstants.EXTRAS_PLUGIN, plugin);
+ context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
+ }
+
+}
diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java
new file mode 100644
index 000000000..024e605f1
--- /dev/null
+++ b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedFilterExposer.java
@@ -0,0 +1,61 @@
+/**
+ * See the file "LICENSE" for the full license governing this code.
+ */
+package com.todoroo.astrid.filters;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+
+import com.todoroo.andlib.sql.Criterion;
+import com.todoroo.andlib.sql.Order;
+import com.todoroo.andlib.sql.QueryTemplate;
+import com.todoroo.andlib.utility.DateUtilities;
+import com.todoroo.astrid.activity.FilterListActivity;
+import com.todoroo.astrid.api.AstridApiConstants;
+import com.todoroo.astrid.api.Filter;
+import com.todoroo.astrid.api.FilterListItem;
+import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
+import com.todoroo.astrid.model.Task;
+
+/**
+ * Exposes Astrid's built in filters to the {@link FilterListActivity}
+ *
+ * @author Tim Su
+ *
+ */
+public final class ExtendedFilterExposer extends BroadcastReceiver {
+
+ @SuppressWarnings("nls")
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Resources r = context.getResources();
+
+ // build filters
+ ContentValues hiddenValues = new ContentValues();
+ hiddenValues.put(Task.HIDE_UNTIL, DateUtilities.now() + DateUtilities.ONE_DAY);
+ Filter hidden = new Filter(ExtendedPlugin.pluginIdentifier, "Hidden Tasks",
+ "Hidden Tasks",
+ new QueryTemplate().where(Criterion.and(TaskCriteria.isActive(),
+ Criterion.not(TaskCriteria.isVisible(DateUtilities.now())))).
+ orderBy(Order.asc(Task.HIDE_UNTIL)),
+ hiddenValues);
+
+ Filter alphabetical = new Filter(ExtendedPlugin.pluginIdentifier,
+ "Inbox (sorted by name)",
+ "Inbox (sorted by name)",
+ new QueryTemplate().orderBy(Order.asc(Task.TITLE)),
+ null);
+
+ // transmit filter list
+ FilterListItem[] list = new FilterListItem[2];
+ list[0] = inbox;
+ list[1] = all;
+ Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
+ broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ITEMS, list);
+ context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
+ }
+
+}
diff --git a/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java
new file mode 100644
index 000000000..f6b5e6a82
--- /dev/null
+++ b/astrid/plugin-src/com/todoroo/astrid/filters/ExtendedPlugin.java
@@ -0,0 +1,25 @@
+package com.todoroo.astrid.filters;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.todoroo.astrid.api.AstridApiConstants;
+import com.todoroo.astrid.api.Plugin;
+
+@SuppressWarnings("nls")
+public class ExtendedPlugin extends BroadcastReceiver {
+
+ static final String pluginIdentifier = "extended";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Plugin plugin = new Plugin(pluginIdentifier, "Extended Filters", "Todoroo",
+ "Provides extended filters for viewing subsets of your tasks");
+
+ Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_PLUGINS);
+ broadcastIntent.putExtra(AstridApiConstants.EXTRAS_PLUGIN, plugin);
+ context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
+ }
+
+}
diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/FilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/FilterExposer.java
new file mode 100644
index 000000000..204c33bda
--- /dev/null
+++ b/astrid/plugin-src/com/todoroo/astrid/tags/FilterExposer.java
@@ -0,0 +1,81 @@
+/**
+ * See the file "LICENSE" for the full license governing this code.
+ */
+package com.todoroo.astrid.tags;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.todoroo.astrid.R;
+import com.todoroo.astrid.api.AstridApiConstants;
+import com.todoroo.astrid.api.Filter;
+import com.todoroo.astrid.api.FilterCategory;
+import com.todoroo.astrid.api.FilterListHeader;
+import com.todoroo.astrid.api.FilterListItem;
+import com.todoroo.astrid.tags.DataService.Tag;
+
+/**
+ * Exposes filters based on tags
+ *
+ * @author Tim Su
+ *
+ */
+public class FilterExposer extends BroadcastReceiver {
+
+
+ @SuppressWarnings("nls")
+ private Filter filterFromTag(Context context, Tag tag, DataService tagService) {
+ String listTitle = context.getString(R.string.tag_FEx_tag_w_size).
+ replace("$T", tag.tag).replace("$C", Integer.toString(tag.count));
+ String title = context.getString(R.string.tag_FEx_name, tag.tag);
+ Filter filter = new Filter(listTitle, title,
+ tagService.getQuery(tag.tag),
+ tagService.getNewTaskSql(tag.tag));
+
+// filters[0].contextMenuLabels = new String[] {
+// "Rename Tag",
+// "Delete Tag"
+// };
+// filters[0].contextMenuIntents = new Intent[] {
+// new Intent(),
+// new Intent()
+// };
+
+ return filter;
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ DataService tagService = new DataService(context);
+ Tag[] tagsByAlpha = tagService.getGroupedTags(DataService.GROUPED_TAGS_BY_ALPHA);
+
+ // If user does not have any tags, don't show this section at all
+ if(tagsByAlpha.length == 0)
+ return;
+
+ Tag[] tagsBySize = tagService.getGroupedTags(DataService.GROUPED_TAGS_BY_SIZE);
+ Filter[] filtersByAlpha = new Filter[tagsByAlpha.length];
+ for(int i = 0; i < tagsByAlpha.length; i++)
+ filtersByAlpha[i] = filterFromTag(context, tagsByAlpha[i], tagService);
+
+ Filter[] filtersBySize = new Filter[tagsBySize.length];
+ for(int i = 0; i < tagsBySize.length; i++)
+ filtersBySize[i] = filterFromTag(context, tagsBySize[i], tagService);
+
+ FilterListHeader tagsHeader = new FilterListHeader(context.getString(R.string.tag_FEx_header));
+ FilterCategory tagsCategoryBySize = new FilterCategory(
+ context.getString(R.string.tag_FEx_by_size), filtersBySize);
+ FilterCategory tagsCategoryByAlpha = new FilterCategory(context.getString(R.string.tag_FEx_alpha), filtersByAlpha);
+
+ // transmit filter list
+ FilterListItem[] list = new FilterListItem[3];
+ list[0] = tagsHeader;
+ list[1] = tagsCategoryBySize;
+ list[2] = tagsCategoryByAlpha;
+ Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
+ broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ITEMS, list);
+ context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
+ }
+
+}
diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java
index 5ec0969a3..bb8c113fa 100644
--- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java
+++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java
@@ -7,12 +7,12 @@ import android.content.Context;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.data.Property.CountProperty;
-import com.todoroo.andlib.data.sql.Criterion;
-import com.todoroo.andlib.data.sql.Join;
-import com.todoroo.andlib.data.sql.Order;
-import com.todoroo.andlib.data.sql.Query;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
+import com.todoroo.andlib.sql.Criterion;
+import com.todoroo.andlib.sql.Join;
+import com.todoroo.andlib.sql.Order;
+import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.model.Metadata;
diff --git a/astrid/res/values/colors-legacy.xml b/astrid/res/values/colors.xml
similarity index 100%
rename from astrid/res/values/colors-legacy.xml
rename to astrid/res/values/colors.xml
diff --git a/astrid/res/values/filter_strings.xml b/astrid/res/values/strings-filters.xml
similarity index 100%
rename from astrid/res/values/filter_strings.xml
rename to astrid/res/values/strings-filters.xml
diff --git a/astrid/res/values/strings.xml b/astrid/res/values/strings-legacy.xml
similarity index 100%
rename from astrid/res/values/strings.xml
rename to astrid/res/values/strings-legacy.xml
diff --git a/astrid/res/values/strings-tags.xml b/astrid/res/values/strings-tags.xml
new file mode 100644
index 000000000..cf7ba787b
--- /dev/null
+++ b/astrid/res/values/strings-tags.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+ Add Tags
+ Tags: %s
+
+ Tags: %s
+
+ Tags
+ By Size
+ Alphabetical
+
+
+ $T ($C)
+
+ Tagged \'%s\'
+
+ Type In a Tag
+ Edit Tags
+
+
diff --git a/astrid/res/values/styles.xml b/astrid/res/values/styles-3.0.xml
similarity index 100%
rename from astrid/res/values/styles.xml
rename to astrid/res/values/styles-3.0.xml
diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java
index 62d25ad35..f0e211f0f 100644
--- a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java
+++ b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java
@@ -279,7 +279,7 @@ public class FilterListActivity extends ExpandableListActivity {
shortcutIntent.setAction(Intent.ACTION_VIEW);
shortcutIntent.putExtra(TaskListActivity.TOKEN_SHORTCUT_TITLE, filter.title);
shortcutIntent.putExtra(TaskListActivity.TOKEN_SHORTCUT_SQL, filter.sqlQuery);
- shortcutIntent.putExtra(TaskListActivity.TOKEN_SHORTCUT_NEW_TASK_SQL, filter.sqlForNewTasks);
+ shortcutIntent.putExtra(TaskListActivity.TOKEN_SHORTCUT_NEW_TASK_SQL, filter.valuesForNewTasks);
menuItem.setIntent(shortcutIntent);
}
diff --git a/astrid/src/com/todoroo/astrid/activity/HomeActivity.java b/astrid/src/com/todoroo/astrid/activity/HomeActivity.java
index 5c0b5b390..299f534e3 100644
--- a/astrid/src/com/todoroo/astrid/activity/HomeActivity.java
+++ b/astrid/src/com/todoroo/astrid/activity/HomeActivity.java
@@ -24,7 +24,7 @@ import android.os.Bundle;
import com.timsu.astrid.utilities.StartupReceiver;
import com.todoroo.andlib.service.ExceptionService.TodorooUncaughtExceptionHandler;
-import com.todoroo.astrid.filters.FilterExposer;
+import com.todoroo.astrid.filters.CoreFilterExposer;
/**
* HomeActivity is the primary activity for Astrid and determines which activity
@@ -74,7 +74,7 @@ public class HomeActivity extends AstridActivity {
*/
private void performRedirection() {
Intent intent = new Intent(this, TaskListActivity.class);
- intent.putExtra(TaskListActivity.TOKEN_FILTER, FilterExposer.buildInboxFilter(getResources()));
+ intent.putExtra(TaskListActivity.TOKEN_FILTER, CoreFilterExposer.buildInboxFilter(getResources()));
startActivity(intent);
finish();
}
diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java
index 16b446d8d..7f63a0b7e 100644
--- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java
+++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java
@@ -46,7 +46,7 @@ import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.TaskDetail;
import com.todoroo.astrid.dao.Database;
-import com.todoroo.astrid.filters.FilterExposer;
+import com.todoroo.astrid.filters.CoreFilterExposer;
import com.todoroo.astrid.model.Task;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.TaskService;
@@ -134,9 +134,9 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
filter = new Filter();
filter.sqlQuery = extras.getString(TOKEN_SHORTCUT_SQL);
filter.title = extras.getString(TOKEN_SHORTCUT_TITLE);
- filter.sqlForNewTasks = extras.getString(TOKEN_SHORTCUT_NEW_TASK_SQL);
+ filter.valuesForNewTasks = extras.getString(TOKEN_SHORTCUT_NEW_TASK_SQL);
} else {
- filter = FilterExposer.buildInboxFilter(getResources());
+ filter = CoreFilterExposer.buildInboxFilter(getResources());
}
database.openForWriting();
diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java
index e20e6c992..c2c4d81e0 100644
--- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java
+++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java
@@ -59,7 +59,7 @@ public class TaskAdapter extends CursorAdapter {
Task.URGENCY,
Task.DUE_DATE,
Task.COMPLETION_DATE,
- Task.HIDDEN_UNTIL,
+ Task.HIDE_UNTIL,
};
private static int[] IMPORTANCE_COLORS = null;
@@ -201,7 +201,7 @@ public class TaskAdapter extends CursorAdapter {
// name
final TextView nameView = viewHolder.nameView; {
String nameValue = task.getValue(Task.TITLE);
- int hiddenUntil = task.getValue(Task.HIDDEN_UNTIL);
+ int hiddenUntil = task.getValue(Task.HIDE_UNTIL);
if(hiddenUntil > DateUtilities.now())
nameValue = r.getString(R.string.TAd_hiddenFormat, nameValue);
nameView.setText(nameValue);
diff --git a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java
index d685d2233..339af654c 100644
--- a/astrid/src/com/todoroo/astrid/dao/MetadataDao.java
+++ b/astrid/src/com/todoroo/astrid/dao/MetadataDao.java
@@ -10,11 +10,11 @@ import android.database.Cursor;
import com.todoroo.andlib.data.GenericDao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
-import com.todoroo.andlib.data.sql.Criterion;
-import com.todoroo.andlib.data.sql.Join;
-import com.todoroo.andlib.data.sql.Query;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
+import com.todoroo.andlib.sql.Criterion;
+import com.todoroo.andlib.sql.Join;
+import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task;
diff --git a/astrid/src/com/todoroo/astrid/dao/TaskDao.java b/astrid/src/com/todoroo/astrid/dao/TaskDao.java
index 527c5dd19..f44dfde87 100644
--- a/astrid/src/com/todoroo/astrid/dao/TaskDao.java
+++ b/astrid/src/com/todoroo/astrid/dao/TaskDao.java
@@ -11,10 +11,10 @@ import android.content.Intent;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.GenericDao;
-import com.todoroo.andlib.data.sql.Criterion;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
+import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
@@ -59,8 +59,8 @@ public class TaskDao extends GenericDao {
}
/** Return tasks that are not hidden at given unixtime */
- public static Criterion isVisible(int time) {
- return Task.HIDDEN_UNTIL.lt(time);
+ public static Criterion isVisible(long time) {
+ return Task.HIDE_UNTIL.lt(time);
}
/** Returns tasks that have a due date */
@@ -69,17 +69,17 @@ public class TaskDao extends GenericDao {
}
/** Returns tasks that are due before a certain unixtime */
- public static Criterion dueBefore(int time) {
+ public static Criterion dueBefore(long time) {
return Criterion.and(Task.DUE_DATE.gt(0), Task.DUE_DATE.lt(time));
}
/** Returns tasks that are due after a certain unixtime */
- public static Criterion dueAfter(int time) {
+ public static Criterion dueAfter(long time) {
return Task.DUE_DATE.gt(time);
}
/** Returns tasks completed before a given unixtime */
- public static Criterion completedBefore(int time) {
+ public static Criterion completedBefore(long time) {
return Criterion.and(Task.COMPLETION_DATE.gt(0), Task.COMPLETION_DATE.lt(time));
}
diff --git a/astrid/src/com/todoroo/astrid/model/Task.java b/astrid/src/com/todoroo/astrid/model/Task.java
index 61419a230..8a9e93527 100644
--- a/astrid/src/com/todoroo/astrid/model/Task.java
+++ b/astrid/src/com/todoroo/astrid/model/Task.java
@@ -18,7 +18,6 @@ import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.utility.DateUtilities;
-import com.todoroo.astrid.api.AstridContentProvider.AstridTask;
/**
* Data Model which represents a task users need to accomplish.
@@ -27,7 +26,7 @@ import com.todoroo.astrid.api.AstridContentProvider.AstridTask;
*
*/
@SuppressWarnings("nls")
-public class Task extends AbstractModel {
+public final class Task extends AbstractModel {
// --- table
@@ -37,43 +36,43 @@ public class Task extends AbstractModel {
/** ID */
public static final LongProperty ID = new LongProperty(
- TABLE, AstridTask.ID);
+ TABLE, ID_PROPERTY_NAME);
/** Name of Task */
public static final StringProperty TITLE = new StringProperty(
- TABLE, AstridTask.TITLE);
+ TABLE, "title");
/** Urgency of Task (see urgency flags) */
public static final IntegerProperty URGENCY = new IntegerProperty(
- TABLE, AstridTask.URGENCY);
+ TABLE, "urgency");
/** Importance of Task (see importance flags) */
public static final IntegerProperty IMPORTANCE = new IntegerProperty(
- TABLE, AstridTask.IMPORTANCE);
+ TABLE, "importance");
/** Unixtime Task is due, 0 if not set */
- public static final IntegerProperty DUE_DATE = new IntegerProperty(
- TABLE, AstridTask.DUE_DATE);
+ public static final LongProperty DUE_DATE = new LongProperty(
+ TABLE, "dyeDate");
/** Unixtime Task should be hidden until */
- public static final IntegerProperty HIDDEN_UNTIL = new IntegerProperty(
- TABLE, AstridTask.HIDDEN_UNTIL);
+ public static final LongProperty HIDE_UNTIL = new LongProperty(
+ TABLE, "hideUntil");
/** Unixtime Task was created */
- public static final IntegerProperty CREATION_DATE = new IntegerProperty(
- TABLE, AstridTask.CREATION_DATE);
+ public static final LongProperty CREATION_DATE = new LongProperty(
+ TABLE, "created");
/** Unixtime Task was last touched */
- public static final IntegerProperty MODIFICATION_DATE = new IntegerProperty(
- TABLE, AstridTask.MODIFICATION_DATE);
+ public static final LongProperty MODIFICATION_DATE = new LongProperty(
+ TABLE, "modified");
/** Unixtime Task was completed. 0 means active */
- public static final IntegerProperty COMPLETION_DATE = new IntegerProperty(
- TABLE, AstridTask.COMPLETION_DATE);
+ public static final LongProperty COMPLETION_DATE = new LongProperty(
+ TABLE, "completed");
- /** Unixtime Task was deleted. 0 means active */
- public static final IntegerProperty DELETION_DATE = new IntegerProperty(
- TABLE, AstridTask.DELETION_DATE);
+ /** Unixtime Task was deleted. 0 means not deleted */
+ public static final LongProperty DELETION_DATE = new LongProperty(
+ TABLE, "deleted");
// --- for migration purposes from astrid 2 (eventually we will want to
// move these into the metadata table and treat them as plug-ins
@@ -117,24 +116,24 @@ public class Task extends AbstractModel {
/** List of all properties for this model */
public static final Property>[] PROPERTIES = generateProperties(Task.class);
- // --- urgency flags
+ // --- urgency settings
- public static final int URGENCY_NONE = AstridTask.URGENCY_NONE;
- public static final int URGENCY_TODAY = AstridTask.URGENCY_TODAY;
- public static final int URGENCY_THIS_WEEK = AstridTask.URGENCY_THIS_WEEK;
- public static final int URGENCY_THIS_MONTH = AstridTask.URGENCY_THIS_MONTH;
- public static final int URGENCY_WITHIN_THREE_MONTHS = AstridTask.URGENCY_WITHIN_THREE_MONTHS;
- public static final int URGENCY_WITHIN_SIX_MONTHS = AstridTask.URGENCY_WITHIN_SIX_MONTHS;
- public static final int URGENCY_WITHIN_A_YEAR = AstridTask.URGENCY_WITHIN_A_YEAR;
- public static final int URGENCY_SPECIFIC_DAY = AstridTask.URGENCY_SPECIFIC_DAY;
- public static final int URGENCY_SPECIFIC_DAY_TIME = AstridTask.URGENCY_SPECIFIC_DAY_TIME;
+ public static final int URGENCY_NONE = 0;
+ public static final int URGENCY_TODAY = 1;
+ public static final int URGENCY_THIS_WEEK = 2;
+ public static final int URGENCY_THIS_MONTH = 3;
+ public static final int URGENCY_WITHIN_THREE_MONTHS = 4;
+ public static final int URGENCY_WITHIN_SIX_MONTHS = 5;
+ public static final int URGENCY_WITHIN_A_YEAR = 6;
+ public static final int URGENCY_SPECIFIC_DAY = 7;
+ public static final int URGENCY_SPECIFIC_DAY_TIME = 8;
- // --- importance flags
+ // --- importance settings
- public static final int IMPORTANCE_DO_OR_DIE = AstridTask.IMPORTANCE_DO_OR_DIE;
- public static final int IMPORTANCE_MUST_DO = AstridTask.IMPORTANCE_MUST_DO;
- public static final int IMPORTANCE_SHOULD_DO = AstridTask.IMPORTANCE_SHOULD_DO;
- public static final int IMPORTANCE_NONE = AstridTask.IMPORTANCE_NONE;
+ public static final int IMPORTANCE_DO_OR_DIE = 0;
+ public static final int IMPORTANCE_MUST_DO = 1;
+ public static final int IMPORTANCE_SHOULD_DO = 2;
+ public static final int IMPORTANCE_NONE = 3;
// --- defaults
@@ -144,7 +143,7 @@ public class Task extends AbstractModel {
static {
defaultValues.put(TITLE.name, "");
defaultValues.put(DUE_DATE.name, 0);
- defaultValues.put(HIDDEN_UNTIL.name, 0);
+ defaultValues.put(HIDE_UNTIL.name, 0);
defaultValues.put(COMPLETION_DATE.name, 0);
defaultValues.put(DELETION_DATE.name, 0);
defaultValues.put(URGENCY.name, URGENCY_NONE);
@@ -225,7 +224,7 @@ public class Task extends AbstractModel {
/** Checks whether task is hidden. Requires HIDDEN_UNTIL */
public boolean isHidden() {
- return getValue(HIDDEN_UNTIL) > DateUtilities.now();
+ return getValue(HIDE_UNTIL) > DateUtilities.now();
}
/** Checks whether task is done. Requires DUE_DATE */
diff --git a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java
index 53ea765b2..ddc4f03db 100644
--- a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java
+++ b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java
@@ -105,7 +105,7 @@ public class Astrid2To3UpgradeHelper {
propertyMap.put(AbstractTaskModel.TIMER_START, Task.TIMER_START);
propertyMap.put(AbstractTaskModel.DEFINITE_DUE_DATE, Task.DUE_DATE);
propertyMap.put(AbstractTaskModel.PREFERRED_DUE_DATE, Task.PREFERRED_DUE_DATE);
- propertyMap.put(AbstractTaskModel.HIDDEN_UNTIL, Task.HIDDEN_UNTIL);
+ propertyMap.put(AbstractTaskModel.HIDDEN_UNTIL, Task.HIDE_UNTIL);
propertyMap.put(AbstractTaskModel.POSTPONE_COUNT, Task.POSTPONE_COUNT);
propertyMap.put(AbstractTaskModel.NOTIFICATIONS, Task.NOTIFICATIONS);
propertyMap.put(AbstractTaskModel.NOTIFICATION_FLAGS, Task.NOTIFICATION_FLAGS);
@@ -172,7 +172,7 @@ public class Astrid2To3UpgradeHelper {
property == Task.CREATION_DATE ||
property == Task.DELETION_DATE ||
property == Task.DUE_DATE ||
- property == Task.HIDDEN_UNTIL ||
+ property == Task.HIDE_UNTIL ||
property == Task.LAST_NOTIFIED ||
property == Task.MODIFICATION_DATE ||
property == Task.PREFERRED_DUE_DATE ||
diff --git a/astrid/src/com/todoroo/astrid/service/MetadataService.java b/astrid/src/com/todoroo/astrid/service/MetadataService.java
index 3e1d6373f..5dd138d1d 100644
--- a/astrid/src/com/todoroo/astrid/service/MetadataService.java
+++ b/astrid/src/com/todoroo/astrid/service/MetadataService.java
@@ -3,11 +3,11 @@ package com.todoroo.astrid.service;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.data.Property.CountProperty;
-import com.todoroo.andlib.data.sql.Criterion;
-import com.todoroo.andlib.data.sql.Order;
-import com.todoroo.andlib.data.sql.Query;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
+import com.todoroo.andlib.sql.Criterion;
+import com.todoroo.andlib.sql.Order;
+import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.model.Metadata;
diff --git a/astrid/src/com/todoroo/astrid/service/TaskService.java b/astrid/src/com/todoroo/astrid/service/TaskService.java
index 253dd660b..4abfb486d 100644
--- a/astrid/src/com/todoroo/astrid/service/TaskService.java
+++ b/astrid/src/com/todoroo/astrid/service/TaskService.java
@@ -2,9 +2,9 @@ package com.todoroo.astrid.service;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
-import com.todoroo.andlib.data.sql.Query;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
+import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TaskDao;
diff --git a/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java b/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java
index 44c35fb69..00a9c37a1 100644
--- a/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java
+++ b/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java
@@ -2,8 +2,8 @@ package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
-import com.todoroo.andlib.data.sql.Query;
import com.todoroo.andlib.service.Autowired;
+import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task;
diff --git a/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java b/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java
index 4ed60d1f0..5cedb25b7 100644
--- a/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java
+++ b/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java
@@ -2,9 +2,9 @@ package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
-import com.todoroo.andlib.data.sql.Order;
-import com.todoroo.andlib.data.sql.Query;
import com.todoroo.andlib.service.Autowired;
+import com.todoroo.andlib.sql.Order;
+import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.model.Task;
@@ -85,7 +85,7 @@ public class TaskDaoTests extends DatabaseTestCase {
// create hidden task
task = new Task();
task.setValue(Task.TITLE, "hidden");
- task.setValue(Task.HIDDEN_UNTIL, DateUtilities.now() + 10000);
+ task.setValue(Task.HIDE_UNTIL, DateUtilities.now() + 10000);
assertTrue(taskDao.save(task, false));
// create task with deadlines
diff --git a/tests/src/com/todoroo/astrid/model/TaskTests.java b/tests/src/com/todoroo/astrid/model/TaskTests.java
index 0686ee4ad..6f21d5d2c 100644
--- a/tests/src/com/todoroo/astrid/model/TaskTests.java
+++ b/tests/src/com/todoroo/astrid/model/TaskTests.java
@@ -44,7 +44,7 @@ public class TaskTests extends DatabaseTestCase {
ContentValues defaults = new Task().getDefaultValues();
assertTrue(defaults.containsKey(Task.TITLE.name));
assertTrue(defaults.containsKey(Task.DUE_DATE.name));
- assertTrue(defaults.containsKey(Task.HIDDEN_UNTIL.name));
+ assertTrue(defaults.containsKey(Task.HIDE_UNTIL.name));
assertTrue(defaults.containsKey(Task.COMPLETION_DATE.name));
assertTrue(defaults.containsKey(Task.URGENCY.name));
assertTrue(defaults.containsKey(Task.IMPORTANCE.name));
@@ -68,7 +68,7 @@ public class TaskTests extends DatabaseTestCase {
task = new Task();
assertFalse(task.isHidden());
- task.setValue(Task.HIDDEN_UNTIL, DateUtilities.now() + 1000);
+ task.setValue(Task.HIDE_UNTIL, DateUtilities.now() + 1000);
assertTrue(task.isHidden());
task = new Task();
diff --git a/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java b/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java
index 68e75d152..d85f9fd69 100644
--- a/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java
+++ b/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java
@@ -3,8 +3,8 @@ package com.todoroo.astrid.upgrade;
import java.util.Date;
import com.todoroo.andlib.data.TodorooCursor;
-import com.todoroo.andlib.data.sql.Query;
import com.todoroo.andlib.service.Autowired;
+import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.alarms.Alarm;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.legacy.data.alerts.AlertController;
@@ -100,14 +100,14 @@ public class Astrid2To3UpgradeTests extends DatabaseTestCase {
assertEquals(griffey.getEstimatedSeconds(), task.getValue(Task.ESTIMATED_SECONDS));
assertEquals(griffey.getNotes(), task.getValue(Task.NOTES));
assertEquals((Integer)0, task.getValue(Task.LAST_NOTIFIED));
- assertEquals((Integer)0, task.getValue(Task.HIDDEN_UNTIL));
+ assertEquals((Integer)0, task.getValue(Task.HIDE_UNTIL));
tasks.moveToNext();
task = new Task(tasks);
assertEquals(guti.getName(), task.getValue(Task.TITLE));
assertDatesEqual(guti.getDefiniteDueDate(), task.getValue(Task.DUE_DATE));
assertDatesEqual(guti.getPreferredDueDate(), task.getValue(Task.PREFERRED_DUE_DATE));
- assertDatesEqual(guti.getHiddenUntil(), task.getValue(Task.HIDDEN_UNTIL));
+ assertDatesEqual(guti.getHiddenUntil(), task.getValue(Task.HIDE_UNTIL));
assertEquals((Integer)Task.IMPORTANCE_DO_OR_DIE, task.getValue(Task.IMPORTANCE));
assertEquals(guti.getRepeat().getValue(), task.getRepeatInfo().getValue());
assertEquals(guti.getRepeat().getInterval().ordinal(), task.getRepeatInfo().getInterval().ordinal());