diff --git a/api/src/com/todoroo/andlib/data/Property.java b/api/src/com/todoroo/andlib/data/Property.java index b1526e629..40bfb08f7 100644 --- a/api/src/com/todoroo/andlib/data/Property.java +++ b/api/src/com/todoroo/andlib/data/Property.java @@ -5,7 +5,14 @@ */ package com.todoroo.andlib.data; +import static com.todoroo.andlib.sql.SqlConstants.COMMA; +import static com.todoroo.andlib.sql.SqlConstants.LEFT_PARENTHESIS; +import static com.todoroo.andlib.sql.SqlConstants.RIGHT_PARENTHESIS; +import static com.todoroo.andlib.sql.SqlConstants.SPACE; + +import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Field; +import com.todoroo.andlib.sql.Operator; /** * Property represents a typed column in a database. @@ -150,6 +157,21 @@ public abstract class Property extends Field implements Cloneable { PropertyVisitor visitor, PARAMETER data) { return visitor.visitString(this, data); } + + public Criterion in(final String[] value) { + final Field field = this; + return new Criterion(Operator.in) { + + @Override + protected void populate(StringBuilder sb) { + sb.append(field).append(SPACE).append(Operator.in).append(SPACE).append(LEFT_PARENTHESIS).append(SPACE); + for (String s : value) { + sb.append("\"").append(s.toString()).append("\"").append(COMMA); + } + sb.deleteCharAt(sb.length() - 1).append(RIGHT_PARENTHESIS); + } + }; + } } /** diff --git a/api/src/com/todoroo/andlib/sql/Criterion.java b/api/src/com/todoroo/andlib/sql/Criterion.java index 5acdc6535..9059bc8f1 100644 --- a/api/src/com/todoroo/andlib/sql/Criterion.java +++ b/api/src/com/todoroo/andlib/sql/Criterion.java @@ -11,7 +11,7 @@ import static com.todoroo.andlib.sql.SqlConstants.SPACE; public abstract class Criterion { protected final Operator operator; - Criterion(Operator operator) { + public Criterion(Operator operator) { this.operator = operator; } diff --git a/api/src/com/todoroo/andlib/sql/SqlConstants.java b/api/src/com/todoroo/andlib/sql/SqlConstants.java index fa9d647fc..4739acfeb 100644 --- a/api/src/com/todoroo/andlib/sql/SqlConstants.java +++ b/api/src/com/todoroo/andlib/sql/SqlConstants.java @@ -2,24 +2,24 @@ package com.todoroo.andlib.sql; @SuppressWarnings("nls") public final class SqlConstants { - static final String SELECT = "SELECT"; - static final String DISTINCT = "DISTINCT"; - static final String SPACE = " "; - static final String AS = "AS"; - static final String COMMA = ","; - static final String FROM = "FROM"; - static final String ON = "ON"; - static final String JOIN = "JOIN"; - static final String ALL = "*"; - static final String LEFT_PARENTHESIS = "("; - static final String RIGHT_PARENTHESIS = ")"; - static final String AND = "AND"; - static final String BETWEEN = "BETWEEN"; - static final String LIKE = "LIKE"; - static final String OR = "OR"; - static final String ORDER_BY = "ORDER BY"; - static final String GROUP_BY = "GROUP BY"; - static final String WHERE = "WHERE"; + public static final String SELECT = "SELECT"; + public static final String DISTINCT = "DISTINCT"; + public static final String SPACE = " "; + public static final String AS = "AS"; + public static final String COMMA = ","; + public static final String FROM = "FROM"; + public static final String ON = "ON"; + public static final String JOIN = "JOIN"; + public static final String ALL = "*"; + public static final String LEFT_PARENTHESIS = "("; + public static final String RIGHT_PARENTHESIS = ")"; + public static final String AND = "AND"; + public static final String BETWEEN = "BETWEEN"; + public static final String LIKE = "LIKE"; + public static final String OR = "OR"; + public static final String ORDER_BY = "ORDER BY"; + public static final String GROUP_BY = "GROUP BY"; + public static final String WHERE = "WHERE"; public static final String EXISTS = "EXISTS"; public static final String NOT = "NOT"; public static final String LIMIT = "LIMIT"; diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java index 45482efdd..12eb7339a 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java @@ -325,7 +325,7 @@ public final class TagService { tagData.readFromCursor(cursor); String tagName = tagData.getValue(TagData.NAME).trim(); Tag tag = new Tag(tagData); - if(tagData.getValue(TagData.DELETION_DATE) > 0) { + if(tagData.getValue(TagData.DELETION_DATE) > 0 || tagData.getFlag(TagData.FLAGS, TagData.FLAG_EMERGENT)) { tags.remove(tagName); continue; }