mirror of https://github.com/tasks/tasks
Deleted .svn files, renamed some stuff, worked on data layer until it was good.
parent
f78f2c3720
commit
288a7a4bdd
@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 29
|
||||
/svn/!svn/ver/9/trunk/src/com
|
||||
END
|
@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 42
|
||||
/svn/!svn/ver/9/trunk/src/com/thoughtworks
|
||||
END
|
@ -1,89 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 46
|
||||
/svn/!svn/ver/9/trunk/src/com/thoughtworks/sql
|
||||
END
|
||||
Join.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 56
|
||||
/svn/!svn/ver/2/trunk/src/com/thoughtworks/sql/Join.java
|
||||
END
|
||||
JoinType.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/!svn/ver/2/trunk/src/com/thoughtworks/sql/JoinType.java
|
||||
END
|
||||
Field.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/!svn/ver/9/trunk/src/com/thoughtworks/sql/Field.java
|
||||
END
|
||||
EqCriterion.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 63
|
||||
/svn/!svn/ver/6/trunk/src/com/thoughtworks/sql/EqCriterion.java
|
||||
END
|
||||
Query.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/!svn/ver/9/trunk/src/com/thoughtworks/sql/Query.java
|
||||
END
|
||||
GroupBy.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 59
|
||||
/svn/!svn/ver/8/trunk/src/com/thoughtworks/sql/GroupBy.java
|
||||
END
|
||||
Table.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/!svn/ver/2/trunk/src/com/thoughtworks/sql/Table.java
|
||||
END
|
||||
Operator.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/!svn/ver/6/trunk/src/com/thoughtworks/sql/Operator.java
|
||||
END
|
||||
Order.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 57
|
||||
/svn/!svn/ver/2/trunk/src/com/thoughtworks/sql/Order.java
|
||||
END
|
||||
DBObject.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/svn/!svn/ver/2/trunk/src/com/thoughtworks/sql/DBObject.java
|
||||
END
|
||||
Constants.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 61
|
||||
/svn/!svn/ver/6/trunk/src/com/thoughtworks/sql/Constants.java
|
||||
END
|
||||
UnaryCriterion.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 66
|
||||
/svn/!svn/ver/6/trunk/src/com/thoughtworks/sql/UnaryCriterion.java
|
||||
END
|
||||
OrderType.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 61
|
||||
/svn/!svn/ver/2/trunk/src/com/thoughtworks/sql/OrderType.java
|
||||
END
|
||||
Criterion.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 61
|
||||
/svn/!svn/ver/9/trunk/src/com/thoughtworks/sql/Criterion.java
|
||||
END
|
@ -1,22 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
public class Constants {
|
||||
static final String SELECT = "SELECT";
|
||||
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 EXISTS = "EXISTS";
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.AND;
|
||||
import static com.thoughtworks.sql.Constants.EXISTS;
|
||||
import static com.thoughtworks.sql.Constants.LEFT_PARENTHESIS;
|
||||
import static com.thoughtworks.sql.Constants.OR;
|
||||
import static com.thoughtworks.sql.Constants.RIGHT_PARENTHESIS;
|
||||
import static com.thoughtworks.sql.Constants.SPACE;
|
||||
|
||||
public abstract class Criterion {
|
||||
protected final Operator operator;
|
||||
|
||||
Criterion(Operator operator) {
|
||||
this.operator = operator;
|
||||
}
|
||||
|
||||
public static Criterion and(final Criterion criterion, final Criterion... criterions) {
|
||||
return new Criterion(Operator.and) {
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
sb.append(criterion);
|
||||
for (Criterion criterion : criterions) {
|
||||
sb.append(SPACE).append(AND).append(SPACE).append(criterion);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static Criterion or(final Criterion criterion, final Criterion... criterions) {
|
||||
return new Criterion(Operator.or) {
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
sb.append(criterion);
|
||||
for (Criterion criterion : criterions) {
|
||||
sb.append(SPACE).append(OR).append(SPACE).append(criterion.toString());
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static Criterion exists(final Query query) {
|
||||
return new Criterion(Operator.exists) {
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
sb.append(EXISTS).append(SPACE).append(LEFT_PARENTHESIS).append(query).append(RIGHT_PARENTHESIS);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static Criterion not(Criterion criterion) {
|
||||
return new Criterion(null) {
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
protected abstract void populate(StringBuilder sb);
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder(LEFT_PARENTHESIS);
|
||||
populate(builder);
|
||||
builder.append(RIGHT_PARENTHESIS);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.SPACE;
|
||||
import static com.thoughtworks.sql.Constants.AS;
|
||||
|
||||
public abstract class DBObject<T extends DBObject> {
|
||||
protected String alias;
|
||||
protected final String expression;
|
||||
|
||||
protected DBObject(String expression){
|
||||
this.expression = expression;
|
||||
}
|
||||
|
||||
public T as(String alias) {
|
||||
this.alias = alias;
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
public boolean hasAlias() {
|
||||
return alias != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
DBObject dbObject = (DBObject) o;
|
||||
|
||||
if (alias != null ? !alias.equals(dbObject.alias) : dbObject.alias != null) return false;
|
||||
if (expression != null ? !expression.equals(dbObject.expression) : dbObject.expression != null) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = alias != null ? alias.hashCode() : 0;
|
||||
result = 31 * result + (expression != null ? expression.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder(expression);
|
||||
if (hasAlias()) {
|
||||
sb.append(SPACE).append(AS).append(SPACE).append(alias);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
public class EqCriterion extends UnaryCriterion {
|
||||
private final Object value;
|
||||
|
||||
EqCriterion(Field field, Object value) {
|
||||
super(field, Operator.eq, value);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.AND;
|
||||
import static com.thoughtworks.sql.Constants.BETWEEN;
|
||||
import static com.thoughtworks.sql.Constants.COMMA;
|
||||
import static com.thoughtworks.sql.Constants.LEFT_PARENTHESIS;
|
||||
import static com.thoughtworks.sql.Constants.RIGHT_PARENTHESIS;
|
||||
import static com.thoughtworks.sql.Constants.SPACE;
|
||||
|
||||
public class Field extends DBObject<Field> {
|
||||
|
||||
protected Field(String expression) {
|
||||
super(expression);
|
||||
}
|
||||
|
||||
public static Field field(String expression) {
|
||||
return new Field(expression);
|
||||
}
|
||||
|
||||
public Criterion eq(Object value) {
|
||||
return UnaryCriterion.eq(this, value);
|
||||
}
|
||||
|
||||
public Criterion neq(Object value) {
|
||||
return UnaryCriterion.neq(this, value);
|
||||
}
|
||||
|
||||
public Criterion gt(Object value) {
|
||||
return UnaryCriterion.gt(this, value);
|
||||
}
|
||||
|
||||
public Criterion lt(final Object value) {
|
||||
return UnaryCriterion.lt(this, value);
|
||||
}
|
||||
|
||||
public Criterion isNull() {
|
||||
return UnaryCriterion.isNull(this);
|
||||
}
|
||||
|
||||
public Criterion isNotNull() {
|
||||
return UnaryCriterion.isNotNull(this);
|
||||
}
|
||||
|
||||
public Criterion between(final Object lower, final Object upper) {
|
||||
final Field field = this;
|
||||
return new Criterion(null) {
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
sb.append(field).append(SPACE).append(BETWEEN).append(SPACE).append(lower).append(SPACE).append(AND)
|
||||
.append(SPACE).append(upper);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public Criterion like(final String value) {
|
||||
return UnaryCriterion.like(this, value);
|
||||
}
|
||||
|
||||
public <T> Criterion in(final T... value) {
|
||||
final Field field = this;
|
||||
return new Criterion(Operator.in) {
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
sb.append(field).append(SPACE).append(Operator.in).append(SPACE).append(LEFT_PARENTHESIS);
|
||||
for (T t : value) {
|
||||
sb.append(t.toString()).append(COMMA);
|
||||
}
|
||||
sb.deleteCharAt(sb.length() - 1).append(RIGHT_PARENTHESIS);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public Criterion in(final Field expression, final Query query) {
|
||||
final Field field = this;
|
||||
return new Criterion(Operator.in) {
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
sb.append(field).append(SPACE).append(Operator.in).append(SPACE).append(LEFT_PARENTHESIS).append(query)
|
||||
.append(RIGHT_PARENTHESIS);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class GroupBy {
|
||||
private List<Field> fields = new ArrayList<Field>();
|
||||
|
||||
public static GroupBy groupBy(Field field) {
|
||||
GroupBy groupBy = new GroupBy();
|
||||
groupBy.fields.add(field);
|
||||
return groupBy;
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.SPACE;
|
||||
import static com.thoughtworks.sql.Constants.JOIN;
|
||||
import static com.thoughtworks.sql.Constants.ON;
|
||||
|
||||
public class Join {
|
||||
private final Table joinTable;
|
||||
private final JoinType joinType;
|
||||
private final Criterion[] criterions;
|
||||
|
||||
private Join(Table table, JoinType joinType, Criterion... criterions) {
|
||||
joinTable = table;
|
||||
this.joinType = joinType;
|
||||
this.criterions = criterions;
|
||||
}
|
||||
|
||||
public static Join inner(Table expression, Criterion... criterions) {
|
||||
return new Join(expression, JoinType.INNER, criterions);
|
||||
}
|
||||
|
||||
public static Join left(Table table, Criterion... criterions) {
|
||||
return new Join(table, JoinType.LEFT, criterions);
|
||||
}
|
||||
|
||||
public static Join right(Table table, Criterion... criterions) {
|
||||
return new Join(table, JoinType.RIGHT, criterions);
|
||||
}
|
||||
|
||||
public static Join out(Table table, Criterion... criterions) {
|
||||
return new Join(table, JoinType.OUT, criterions);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(joinType).append(SPACE).append(JOIN).append(SPACE).append(joinTable).append(SPACE).append(ON);
|
||||
for (Criterion criterion : criterions) {
|
||||
sb.append(SPACE).append(criterion);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
public enum JoinType {
|
||||
INNER, LEFT, RIGHT, OUT
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.SPACE;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class Operator {
|
||||
|
||||
private final String operator;
|
||||
private static final Operator ZERO = new Operator("");
|
||||
public static final Operator eq = new Operator("=");
|
||||
public static final Operator neq = new Operator("<>");
|
||||
public static final Operator isNull = new Operator("IS NULL");
|
||||
public static final Operator isNotNull = new Operator("IS NOT NULL");
|
||||
public static final Operator gt = new Operator(">");
|
||||
public static final Operator lt = new Operator("<");
|
||||
public static final Operator gte = new Operator(">=");
|
||||
public static final Operator lte = new Operator("<=");
|
||||
public static final Operator and = new Operator("AND");
|
||||
public static final Operator or = new Operator("OR");
|
||||
public static final Operator not = new Operator("NOT");
|
||||
public static final Operator exists = new Operator("EXISTS");
|
||||
public static final Operator like = new Operator("LIKE");
|
||||
public static final Operator in = new Operator("IN");
|
||||
|
||||
private static final Map<Operator, Operator> contraryRegistry = new HashMap<Operator, Operator>();
|
||||
|
||||
static {
|
||||
contraryRegistry.put(eq, neq);
|
||||
contraryRegistry.put(neq, eq);
|
||||
contraryRegistry.put(isNull, isNotNull);
|
||||
contraryRegistry.put(isNotNull, isNull);
|
||||
contraryRegistry.put(gt, lte);
|
||||
contraryRegistry.put(lte, gt);
|
||||
contraryRegistry.put(lt, gte);
|
||||
contraryRegistry.put(gte, lt);
|
||||
}
|
||||
|
||||
private Operator(String operator) {
|
||||
this.operator = operator;
|
||||
}
|
||||
|
||||
public Operator getContrary() {
|
||||
if(!contraryRegistry.containsKey(this)){
|
||||
Operator opposite = new Operator(not.toString() + SPACE + this.toString());
|
||||
contraryRegistry.put(this, opposite);
|
||||
contraryRegistry.put(opposite, this);
|
||||
}
|
||||
return contraryRegistry.get(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.operator.toString();
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.SPACE;
|
||||
|
||||
public class Order {
|
||||
private final Field expression;
|
||||
private final OrderType orderType;
|
||||
|
||||
private Order(Field expression) {
|
||||
this(expression, OrderType.ASC);
|
||||
}
|
||||
|
||||
private Order(Field expression, OrderType orderType) {
|
||||
this.expression = expression;
|
||||
this.orderType = orderType;
|
||||
}
|
||||
|
||||
public static Order asc(Field expression) {
|
||||
return new Order(expression);
|
||||
}
|
||||
|
||||
public static Order desc(Field expression) {
|
||||
return new Order(expression, OrderType.DESC);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return expression + SPACE + orderType;
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
public enum OrderType {
|
||||
DESC, ASC
|
||||
}
|
@ -1,153 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.*;
|
||||
import static com.thoughtworks.sql.Table.table;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import static java.util.Arrays.asList;
|
||||
import java.util.List;
|
||||
|
||||
public class Query {
|
||||
|
||||
private Table table;
|
||||
private List<Criterion> criterions = new ArrayList<Criterion>();
|
||||
private List<Field> fields = new ArrayList<Field>();
|
||||
private List<Join> joins = new ArrayList<Join>();
|
||||
private List<Field> groupBies = new ArrayList<Field>();
|
||||
private List<Order> orders = new ArrayList<Order>();
|
||||
private List<Criterion> havings = new ArrayList<Criterion>();
|
||||
|
||||
private Query(Field... fields) {
|
||||
this.fields.addAll(asList(fields));
|
||||
}
|
||||
|
||||
public static Query select(Field... fields) {
|
||||
return new Query(fields);
|
||||
}
|
||||
|
||||
public Query from(Table table) {
|
||||
this.table = table;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Query join(Join... join) {
|
||||
joins.addAll(asList(join));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Query where(Criterion criterion) {
|
||||
criterions.add(criterion);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Query groupBy(Field... groupBy) {
|
||||
groupBies.addAll(asList(groupBy));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Query orderBy(Order... order) {
|
||||
orders.addAll(asList(order));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Query appendSelectFields(Field... fields) {
|
||||
this.fields.addAll(asList(fields));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
return this == o || !(o == null || getClass() != o.getClass()) && this.toString().equals(o.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return toString().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
visitSelectClause(sql);
|
||||
visitFromClause(sql);
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
private void visitFromClause(StringBuilder sql) {
|
||||
if (table == null) {
|
||||
return;
|
||||
}
|
||||
sql.append(FROM).append(SPACE).append(table).append(SPACE);
|
||||
}
|
||||
|
||||
private void visitSelectClause(StringBuilder sql) {
|
||||
sql.append(SELECT).append(SPACE);
|
||||
if (fields.isEmpty()) {
|
||||
sql.append(ALL).append(SPACE);
|
||||
return;
|
||||
}
|
||||
for (Field field : fields) {
|
||||
sql.append(field).append(COMMA);
|
||||
}
|
||||
sql.deleteCharAt(sql.length() - 1).append(SPACE);
|
||||
}
|
||||
|
||||
public Table as(String alias) {
|
||||
return table(LEFT_PARENTHESIS + this.toString() + RIGHT_PARENTHESIS).as(alias);
|
||||
}
|
||||
|
||||
public Query having(Criterion criterion) {
|
||||
this.havings.add(criterion);
|
||||
return this;
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
public class Table extends DBObject<Table> {
|
||||
|
||||
protected Table(String expression) {
|
||||
super(expression);
|
||||
}
|
||||
|
||||
public static Table table(String table) {
|
||||
return new Table(table);
|
||||
}
|
||||
|
||||
public Field field(String fieldName) {
|
||||
if (hasAlias()) {
|
||||
return Field.field(alias + "." + fieldName);
|
||||
}
|
||||
return Field.field(expression+"."+fieldName);
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
package com.thoughtworks.sql;
|
||||
|
||||
import static com.thoughtworks.sql.Constants.SPACE;
|
||||
|
||||
public class UnaryCriterion extends Criterion {
|
||||
protected final Field expression;
|
||||
protected final Object value;
|
||||
|
||||
UnaryCriterion(Field expression, Operator operator, Object value) {
|
||||
super(operator);
|
||||
this.expression = expression;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
protected void populate(StringBuilder sb) {
|
||||
beforePopulateOperator(sb);
|
||||
populateOperator(sb);
|
||||
afterPopulateOperator(sb);
|
||||
}
|
||||
|
||||
public static Criterion eq(Field expression, Object value) {
|
||||
return new UnaryCriterion(expression, Operator.eq, value);
|
||||
}
|
||||
|
||||
protected void beforePopulateOperator(StringBuilder sb) {
|
||||
sb.append(expression);
|
||||
}
|
||||
|
||||
protected void populateOperator(StringBuilder sb) {
|
||||
sb.append(operator);
|
||||
}
|
||||
|
||||
protected void afterPopulateOperator(StringBuilder sb) {
|
||||
sb.append(value == null ? "" : value);
|
||||
}
|
||||
|
||||
public static Criterion neq(Field field, Object value) {
|
||||
return new UnaryCriterion(field, Operator.neq, value);
|
||||
}
|
||||
|
||||
public static Criterion gt(Field field, Object value) {
|
||||
return new UnaryCriterion(field, Operator.gt, value);
|
||||
}
|
||||
|
||||
public static Criterion lt(Field field, Object value) {
|
||||
return new UnaryCriterion(field, Operator.lt, value);
|
||||
}
|
||||
|
||||
public static Criterion isNull(Field field) {
|
||||
return new UnaryCriterion(field, Operator.isNull, null) {
|
||||
@Override
|
||||
protected void populateOperator(StringBuilder sb) {
|
||||
sb.append(SPACE).append(operator);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static Criterion isNotNull(Field field) {
|
||||
return new UnaryCriterion(field, Operator.isNotNull, null) {
|
||||
@Override
|
||||
protected void populateOperator(StringBuilder sb) {
|
||||
sb.append(SPACE).append(operator);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static Criterion like(Field field, String value) {
|
||||
return new UnaryCriterion(field, Operator.like, value) {
|
||||
@Override
|
||||
protected void populateOperator(StringBuilder sb) {
|
||||
sb.append(SPACE).append(operator).append(SPACE);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@ -0,0 +1,514 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
ASTRID: Android's Simple Task Recording Dashboard
|
||||
|
||||
Copyright (c) 2009 Tim Su
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
|
||||
<!-- General String Constants -->
|
||||
<skip />
|
||||
|
||||
<!-- Importance Labels -->
|
||||
<string name="importance_1">!!!!</string>
|
||||
<string name="importance_2">!!!</string>
|
||||
<string name="importance_3">!!</string>
|
||||
<string name="importance_4">!</string>
|
||||
|
||||
<!-- Repeat Interval Labels -->
|
||||
<string name="repeat_days">Day(s)</string>
|
||||
<string name="repeat_weeks">Week(s)</string>
|
||||
<string name="repeat_months">Month(s)</string>
|
||||
<string name="repeat_hours">Hour(s)</string>
|
||||
|
||||
<!-- Plurals -->
|
||||
|
||||
<plurals name="Ntasks">
|
||||
<!-- plurals: tasks -->
|
||||
<item quantity="one">1 Task</item>
|
||||
<item quantity="other">%d Tasks</item>
|
||||
</plurals>
|
||||
<plurals name="NactiveTasks">
|
||||
<!-- plurals: active tasks vs total tasks -->
|
||||
<item quantity="one">%d / %d Active</item>
|
||||
<item quantity="other">%d / %d Active</item>
|
||||
</plurals>
|
||||
<plurals name="Nalarms">
|
||||
<!-- plurals: alarms -->
|
||||
<item quantity="one">One Alarm</item>
|
||||
<item quantity="two">Two Alarms</item>
|
||||
<item quantity="other">%d Alarms</item>
|
||||
</plurals>
|
||||
<plurals name="Ntags">
|
||||
<!-- plurals: tags -->
|
||||
<item quantity="one">1 Tag</item>
|
||||
<item quantity="other">%d Tags</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Time Constants -->
|
||||
|
||||
<!-- used for long due dates. c.f. Java's SimpleDateFormat -->
|
||||
<string name="dateFormatter">MMM d</string>
|
||||
<!-- used for alarms -->
|
||||
<string name="alarmDateFormatter">M/dd HH:mm</string>
|
||||
<!-- vertical labels are used in dialog boxes -->
|
||||
<string name="daysVertical">D\na\ny\ns</string>
|
||||
<string name="hoursVertical">H\no\nu\nr\ns</string>
|
||||
|
||||
<plurals name="Ndays">
|
||||
<!-- plurals: days -->
|
||||
<item quantity="one">1 Day</item>
|
||||
<item quantity="other">%d Days</item>
|
||||
</plurals>
|
||||
<plurals name="NdaysPreposition">
|
||||
<!-- plurals: days (used after a preopsition, i.e. due in 5 days) -->
|
||||
<item quantity="one">1 Day</item>
|
||||
<item quantity="other">%d Days</item>
|
||||
</plurals>
|
||||
<plurals name="Nhours">
|
||||
<!-- plurals: hours -->
|
||||
<item quantity="one">1 Hour</item>
|
||||
<item quantity="other">%d Hours</item>
|
||||
</plurals>
|
||||
<plurals name="Nminutes">
|
||||
<!-- plurals: minutes -->
|
||||
<item quantity="one">1 Minute</item>
|
||||
<item quantity="other">%d Minutes</item>
|
||||
</plurals>
|
||||
<plurals name="Nseconds">
|
||||
<!-- plurals: seconds -->
|
||||
<item quantity="one">1 Second</item>
|
||||
<item quantity="other">%d Seconds</item>
|
||||
</plurals>
|
||||
<plurals name="NhoursShort">
|
||||
<!-- plurals: hours (abbreviated) -->
|
||||
<item quantity="one">1 Hr</item>
|
||||
<item quantity="other">%d Hrs</item>
|
||||
</plurals>
|
||||
<plurals name="NminutesShort">
|
||||
<!-- plurals: minutes (abbreviated) -->
|
||||
<item quantity="one">1 Min</item>
|
||||
<item quantity="other">%d Min</item>
|
||||
</plurals>
|
||||
<plurals name="NsecondsShort">
|
||||
<!-- plurals: seconds (abbreviated) -->
|
||||
<item quantity="one">1 Sec</item>
|
||||
<item quantity="other">%d Sec</item>
|
||||
</plurals>
|
||||
|
||||
<!-- indicates time in past. %s is replaced by time unit i.e. 1 minute -->
|
||||
<string name="ago_string">%s Ago</string>
|
||||
|
||||
<!-- TaskList -->
|
||||
<skip />
|
||||
<!-- title bar -->
|
||||
<string name="taskList_titlePrefix">Astrid: </string>
|
||||
<string name="taskList_titleTagPrefix">Tagged \"%s\":</string>
|
||||
<string name="taskList_titleUntagged">Untagged Tasks:</string>
|
||||
<string name="taskList_hiddenSuffix"> hidden</string>
|
||||
<string name="addtask_label">New Task</string>
|
||||
<string name="missing_tag">Could Not Find Requested Tag!</string>
|
||||
|
||||
<!-- text displayed in task list item -->
|
||||
|
||||
<!-- prefix to show that a task is hidden -->
|
||||
<string name="taskList_hiddenPrefix">H</string>
|
||||
<!-- i.e. Due in 4 days -->
|
||||
<string name="taskList_dueRelativeTime">Due in</string>
|
||||
<!-- i.e. Due on Jan 2 -->
|
||||
<string name="taskList_dueAbsoluteDate">Due on</string>
|
||||
<!-- prefix to deadline -->
|
||||
<string name="taskList_goalPrefix">Goal</string>
|
||||
<string name="taskList_overdueBy">Overdue by</string>
|
||||
<!-- i.e. Finished 4 days ago -->
|
||||
<string name="taskList_completedPrefix">Finished %s</string>
|
||||
<!-- i.e. Estimated: 4 hours -->
|
||||
<string name="taskList_estimatedTimePrefix">Estimated:</string>
|
||||
<!-- i.e. Spent: 88 minutes. used to indicate time spent on task -->
|
||||
<string name="taskList_elapsedTimePrefix">Spent:</string>
|
||||
<!-- time interval to set frequency to remind user -->
|
||||
<string name="taskList_periodicReminderPrefix">Poke Every</string>
|
||||
|
||||
<!-- time interval to set repeated tasks-->
|
||||
<string name="taskList_repeatPrefix">Repeats Every</string>
|
||||
<!-- displayed when repeat is on remote server-->
|
||||
<string name="taskList_repeatsRemotely">Repeats On Remote Server</string>
|
||||
<string name="taskList_alarmPrefix">Next Alarm:</string>
|
||||
<string name="taskList_tagsPrefix">Tags:</string>
|
||||
<string name="taskList_notesPrefix">Notes:</string>
|
||||
|
||||
<!-- i.e. Created: <create date> -->
|
||||
<string name="taskList_createdPrefix">Created:</string>
|
||||
|
||||
<!-- i.e. Deleted: <delete date> -->
|
||||
<string name="taskList_deleted">Deleted</string>
|
||||
|
||||
<string name="quick_add_hint">Add New Task</string>
|
||||
|
||||
<!-- menu items -->
|
||||
<string name="taskList_menu_insert">New Task</string>
|
||||
<string name="taskList_menu_tags">Tags</string>
|
||||
<string name="taskList_menu_filters">Sort/Filters</string>
|
||||
<string name="taskList_menu_syncshortcut">Sync</string>
|
||||
<string name="taskList_menu_more">More</string>
|
||||
<string name="taskList_menu_sync">Synchronization</string>
|
||||
<string name="taskList_menu_settings">Settings</string>
|
||||
<string name="taskList_menu_help">Help (opens in Browser)</string>
|
||||
<string name="taskList_menu_survey">Take Astrid\'s Survey!</string>
|
||||
<string name="taskList_menu_tips">Quick Tips</string>
|
||||
<string name="taskList_menu_cleanup">Clean Up Old Tasks</string>
|
||||
<string name="taskList_menu_export">Backup Tasks</string>
|
||||
<string name="taskList_menu_import">Restore Tasks</string>
|
||||
|
||||
<string name="taskList_context_edit">Edit Task</string>
|
||||
<string name="taskList_context_delete">Delete Task</string>
|
||||
<string name="taskList_context_startTimer">Start Timer</string>
|
||||
<string name="taskList_context_stopTimer">Stop Timer</string>
|
||||
<string name="taskList_context_postpone">Postpone</string>
|
||||
|
||||
<!-- filter menu items -->
|
||||
<string name="taskList_filter_title">Sort/Filters</string>
|
||||
<string name="taskList_filter_hidden">Hidden/Blocked Tasks</string>
|
||||
<string name="taskList_filter_done">Completed Tasks</string>
|
||||
<string name="taskList_filter_tagged">Tagged \'%s\'</string>
|
||||
<string name="taskList_sort_auto">Auto Sort</string>
|
||||
<string name="taskList_sort_alpha">Sort By Name</string>
|
||||
<string name="taskList_sort_duedate">Sort By Due Date</string>
|
||||
<string name="taskList_sort_reverse">Sort Reverse</string>
|
||||
|
||||
<string name="taskList_nonag_reminder">Select an Action:</string>
|
||||
<string name="taskList_postpone_count">Times You\'ve Postponed: %d</string>
|
||||
<string name="taskList_postpone_dialog">Postpone for how long?</string>
|
||||
<string name="taskList_cleanup_dialog">"Delete completed tasks older than # days:"</string>
|
||||
|
||||
<!-- TaskEdit -->
|
||||
<skip />
|
||||
<!-- title bar -->
|
||||
<string name="taskEdit_titleGeneric">Astrid: Editing Task</string>
|
||||
<string name="taskEdit_titlePrefix">Astrid: Editing </string>
|
||||
<string name="taskEdit_label">Astrid: New Task</string>
|
||||
|
||||
<!-- tabs -->
|
||||
<string name="taskEdit_tab_basic">Basic</string>
|
||||
<string name="taskEdit_tab_dates">Dates</string>
|
||||
<string name="taskEdit_tab_alerts">Alerts</string>
|
||||
|
||||
<!-- labels -->
|
||||
<string name="name_label">Summary</string>
|
||||
<string name="name_hint">Task Name</string>
|
||||
<string name="importance_label">How Important is it?</string>
|
||||
<string name="tags_label">Tags:</string>
|
||||
<string name="tag_hint">Tag Name</string>
|
||||
|
||||
<string name="estimatedDuration_label">How Long Will it Take?</string>
|
||||
<string name="elapsedDuration_label">Time Already Spent on Task</string>
|
||||
<string name="definiteDueDate_label">Absolute Deadline</string>
|
||||
<string name="preferredDueDate_label">Goal Deadline</string>
|
||||
<string name="addToCalendar_label">Add Task To Calendar</string>
|
||||
<string name="showCalendar_label">Open Calendar Event</string>
|
||||
<string name="hiddenUntil_label">Hide Until This Date</string>
|
||||
<string name="repeat_label">Repeat Every</string>
|
||||
<string name="repeat_value_unset">No Repeat Set</string>
|
||||
<string name="blockingOn_label">Hide Until This Task is Done</string>
|
||||
<string name="notes_label">Notes</string>
|
||||
<string name="notes_hint">Enter Task Notes</string>
|
||||
|
||||
<string name="notification_label">Periodic Reminders</string>
|
||||
<string name="notification_prefix">Every</string>
|
||||
<string name="flags_label">Notify me...</string>
|
||||
<string name="flag_before">As Deadlines Approach</string>
|
||||
<string name="flag_during">At Deadlines</string>
|
||||
<string name="flag_after">After Absolute Deadline Passes</string>
|
||||
<string name="flag_nonstop">Alarm Clock Mode</string>
|
||||
<string name="alerts_label">Fixed Reminders</string>
|
||||
<string name="add_alert">Add New Reminder</string>
|
||||
|
||||
<!-- dialog boxes -->
|
||||
<string name="hour_minutes_dialog">Time (hours : minutes)</string>
|
||||
<string name="notification_dialog">Remind Me Every</string>
|
||||
<string name="repeat_picker_title">Repeat Every (0 to disable)</string>
|
||||
<string name="repeat_help_dialog_title">Help: Astrid Repeats</string>
|
||||
<string name="repeat_help_dialog">
|
||||
To use repeats, set at least one of the deadlines above. When you complete this task, the deadline will be automatically advanced.
|
||||
\n\n
|
||||
If you don\'t want to see the new task right after you complete the old one, you should use the "Hide Until" field, which will also be advanced automatically.
|
||||
\n
|
||||
</string>
|
||||
<string name="repeat_help_hide">Don't Show Help Anymore</string>
|
||||
|
||||
<!-- buttons -->
|
||||
<string name="save_label">Save</string>
|
||||
<string name="discard_label">Discard</string>
|
||||
<string name="edit_label">Edit</string>
|
||||
<string name="delete_label">Delete</string>
|
||||
<string name="blank_button_title">Click to Set</string>
|
||||
<string name="startTimer_label">Start Timer</string>
|
||||
<string name="stopTimer_label">Stop Timer</string>
|
||||
|
||||
<string name="taskEdit_menu_save">Save</string>
|
||||
<string name="taskEdit_onTaskSave_Due">Task Saved: due in %s</string>
|
||||
<string name="taskEdit_onTaskSave_Overdue">Task Saved: due %s ago</string>
|
||||
<string name="taskEdit_onTaskSave_notDue">Task Saved</string>
|
||||
|
||||
<!-- TaskView -->
|
||||
<skip />
|
||||
|
||||
<string name="taskView_notifyTitle">Astrid says...</string>
|
||||
|
||||
<!-- Tag List -->
|
||||
<skip />
|
||||
<string name="tagList_titlePrefix">Astrid: Tag View: </string>
|
||||
<string name="tagList_context_create">Create Task With Tag</string>
|
||||
<string name="tagList_context_edit">Edit Tag</string>
|
||||
<string name="tagList_context_delete">Delete Tag</string>
|
||||
<string name="tagList_context_showTag">Show on Home Page</string>
|
||||
<string name="tagList_context_hideTag">Hide on Home Page</string>
|
||||
<string name="tagList_context_shortcut">Create Shortcut</string>
|
||||
<string name="tagList_shortcut_created">Shortcut created on your home screen!</string>
|
||||
<string name="tagList_shortcut_prefix">Tag:</string>
|
||||
<string name="tagList_untagged">[untagged]</string>
|
||||
|
||||
<string name="tagList_menu_sortAlpha">Sort A-Z</string>
|
||||
<string name="tagList_menu_sortSize">Sort by Size</string>
|
||||
|
||||
|
||||
<!-- Synchronization -->
|
||||
<skip />
|
||||
<string name="sync_pref_group">Synchronization Services</string>
|
||||
<string name="sync_pref_group_actions">Actions</string>
|
||||
<string name="sync_pref_group_options">Options</string>
|
||||
<!-- Proper noun - don't translate -->
|
||||
<string name="sync_rtm_title">Remember The Milk</string>
|
||||
<string name="sync_rtm_desc">http://www.rememberthemilk.com</string>
|
||||
<string name="sync_interval_title">Auto-Synchronize</string>
|
||||
<string name="sync_interval_desc">If set, synchronization occurs automatically given interval</string>
|
||||
<string name="sync_button_title">Main Menu Shortcut</string>
|
||||
<string name="sync_button_desc">Show \"Synchronize\" in Astrid\'s menu</string>
|
||||
<string name="sync_quiet_title">Hide Dialogs</string>
|
||||
<string name="sync_quiet_desc">Hide the Sync Results dialogs</string>
|
||||
<string name="sync_bgwifi_title">Auto-Sync Wifi Only</string>
|
||||
<string name="sync_bgwifi_desc">If set, auto-sync only happens when Wifi is active</string>
|
||||
<string name="sync_error">Sync Error! Sorry for the inconvenience! Error:</string>
|
||||
<string name="sync_upgrade_v99">
|
||||
Astrid 2.7 now performs synchronization with RTM in the background. You will
|
||||
be directed to the preferences page to configure how often you want this to
|
||||
occur (it is a minor drain on battery).
|
||||
</string>
|
||||
<string name="sync_now">Synchronize Now!</string>
|
||||
<string name="sync_forget">Clear Personal Data</string>
|
||||
<string name="sync_uptodate">Sync: Up to date!</string>
|
||||
<string name="sync_forget_confirm">Clear data for selected services?</string>
|
||||
<string name="sync_no_synchronizers">No Synchronizers Enabled!</string>
|
||||
<string name="sync_last_sync">Last Sync Date: %s</string>
|
||||
<string name="sync_last_auto_sync">Last AutoSync Attempt: %s</string>
|
||||
<string name="sync_date_never">never</string>
|
||||
<string name="sync_result_title">%s Results</string>
|
||||
<string name="sync_result_local">Summary - Astrid Tasks:</string>
|
||||
<string name="sync_result_remote">Summary - Remote Server:</string>
|
||||
<string name="sync_result_created">Created: %d</string>
|
||||
<string name="sync_result_updated">Updated: %d</string>
|
||||
<string name="sync_result_deleted">Deleted: %d</string>
|
||||
<string name="sync_result_merged">Merged: %d</string>
|
||||
|
||||
<string name="sync_progress_remote">Reading Remote Data</string>
|
||||
<string name="sync_progress_rxlist">Reading List: %s</string>
|
||||
<string name="sync_progress_repeating">Synchronizing Repeating Task</string>
|
||||
<string name="sync_progress_localtx">Transmitting: %s</string>
|
||||
<string name="sync_progress_localdel">Locally Deleted Tasks</string>
|
||||
<string name="sync_progress_remotetx">Receiving: %s</string>
|
||||
|
||||
<string name="rtm_login_label">Please Log In to RTM...</string>
|
||||
<string name="rtm_login_error">
|
||||
Sorry, there was an error verifying your login. Please try again.
|
||||
\n\n
|
||||
Error Message:
|
||||
</string>
|
||||
|
||||
|
||||
<!-- Dialog Boxes -->
|
||||
<skip />
|
||||
<string name="loading">Loading...</string>
|
||||
<string name="updating">Updating List...</string>
|
||||
<string name="information_title">Information</string>
|
||||
<string name="question_title">Question</string>
|
||||
<string name="done_label">Done</string>
|
||||
<string name="notify_yes">View This Task</string>
|
||||
<string name="notify_done">Already Done!</string>
|
||||
<string name="notify_snooze">Snooze...</string>
|
||||
<string name="notify_no">Go Away!</string>
|
||||
<string name="notify_snooze_title">Hours/minutes to snooze?</string>
|
||||
|
||||
<string name="delete_title">Delete</string>
|
||||
<string name="delete_this_task_title">Delete this task?</string>
|
||||
<string name="delete_this_tag_title">Remove this tag from all tasks?</string>
|
||||
|
||||
<string name="stop_timer_title">Stop the timer?</string>
|
||||
|
||||
<string name="quick_tips">
|
||||
Some things you may not know about Astrid:\n
|
||||
\n
|
||||
- To create a task, just start typing!\n
|
||||
- While editing a task, hit \'back\' to save it\n
|
||||
- Select a task & press 1-4 to quickly change it\'s priority\n
|
||||
- If a task has a deadline, long-press to postpone it\n
|
||||
\n
|
||||
Thanks for using Astrid!\n
|
||||
</string>
|
||||
|
||||
<!-- %s => name of the application -->
|
||||
<string name="task_killer_help">
|
||||
It looks like you are using an app that can kill processes (%s)! If you can,
|
||||
add Astrid to the exclusion list so it doesn\'t get killed. Otherwise,
|
||||
Astrid might not let you know when your tasks are due.\n
|
||||
</string>
|
||||
<string name="task_killer_help_ok">I Won\'t Kill Astrid!</string>
|
||||
|
||||
<!-- Restore/Backup -->
|
||||
<skip />
|
||||
|
||||
<string name="export_toast">Backed Up %s to %s.</string>
|
||||
<string name="import_summary_title">Restore Summary</string>
|
||||
<string name="import_summary_message">
|
||||
File %s contained %d tasks.\n
|
||||
Restored %d tasks.\n
|
||||
Skipped %d tasks.\n
|
||||
</string>
|
||||
<string name="import_progress_title">Restore</string>
|
||||
<string name="import_progress_open">Opening file...</string>
|
||||
<string name="import_progress_opened">File opened...</string>
|
||||
<string name="import_progress_read">Reading task %d...</string>
|
||||
<string name="import_progress_skip">Skipped task %d...</string>
|
||||
<string name="import_progress_add">Restored task %d...</string>
|
||||
<string name="import_file_prompt">Select a File to Restore</string>
|
||||
<!-- Locale Plugin -->
|
||||
<skip />
|
||||
|
||||
<string name="locale_edit_alerts_title">Astrid Tag Alert</string>
|
||||
<string name="locale_edit_intro">Astrid will send you a reminder
|
||||
when you have uncompleted tasks with the following criteria:</string>
|
||||
<string name="locale_pick_tag">Tagged with:</string>
|
||||
|
||||
<!-- Notification -->
|
||||
<skip />
|
||||
|
||||
<string name="notif_definiteDueDate">Absolute Deadline!</string>
|
||||
<string name="notif_preferredDueDate">Goal Deadline!</string>
|
||||
<string name="notif_timerStarted">Working on:</string>
|
||||
<!-- $NUM is replaced with # of tasks + units, i.e. "1 task", $TAG is replaced with tag name -->
|
||||
<string name="notif_tagNotification">You have $NUM tagged $TAG!</string>
|
||||
|
||||
<!-- Error Messages -->
|
||||
<skip />
|
||||
|
||||
<string name="error_opening">Could not find this item: </string>
|
||||
<string name="error_saving">Could not save:s</string>
|
||||
<string name="error_sdcard">Cannot access folder: %s</string>
|
||||
<string name="error_sdcard_general">Cannot access your SD card!</string>
|
||||
|
||||
<skip />
|
||||
|
||||
<string name="prefs_category_alerts">Notifications</string>
|
||||
|
||||
<string name="prefs_quietStart_title">Quiet Hours Start</string>
|
||||
<string name="prefs_quietStart_desc">Start time to silence notifications for periodic reminders</string>
|
||||
|
||||
<string name="prefs_quietEnd_title">Quiet Hours End</string>
|
||||
<string name="prefs_quietEnd_desc">End time to silence notifications</string>
|
||||
|
||||
<string name="prefs_defaultRemind_title">Default Reminders</string>
|
||||
<string name="prefs_defaultRemind_desc">For new tasks, default reminder in days (i.e. 7). Blank to disable</string>
|
||||
|
||||
<string name="prefs_annoy_title">Persistent Mode</string>
|
||||
<string name="prefs_annoy_desc">If checked, LED and notifications must be cleared one at a time</string>
|
||||
|
||||
<string name="prefs_notification_title">Notification Ringtone</string>
|
||||
<string name="prefs_notification_desc">Choose a ringtone for Astrid\'s alerts</string>
|
||||
|
||||
<string name="prefs_notificon_title">Notification Icons</string>
|
||||
<string name="prefs_notificon_desc">Choose Astrid\'s notification bar icon</string>
|
||||
|
||||
<string name="prefs_vibrate_title">Vibrate on Alert</string>
|
||||
<string name="prefs_vibrate_desc">If checked, Astrid will vibrate when sounding an alarm</string>
|
||||
|
||||
<string name="prefs_category_appearance">Appearance</string>
|
||||
|
||||
<string name="prefs_colorize_title">Colorize Task List</string>
|
||||
<string name="prefs_colorize_desc">Different colors for different priorities</string>
|
||||
|
||||
<string name="prefs_fontSize_title">Task List Size</string>
|
||||
<string name="prefs_fontSize_desc">Font size on the main listing page</string>
|
||||
|
||||
<string name="prefs_category_other">Other</string>
|
||||
|
||||
<string name="prefs_nagging_title">Nag Messages</string>
|
||||
<string name="prefs_nagging_desc">Show Astrid\'s comments when viewing reminders and postponing tasks?</string>
|
||||
|
||||
<string name="prefs_deadlineTime_title">Default Deadlines</string>
|
||||
<string name="prefs_deadlineTime_desc"># of days from now to set new deadlines</string>
|
||||
|
||||
<string name="prefs_backup_title">Automatic Backups</string>
|
||||
|
||||
<!-- backup summary when there is no backup message -->
|
||||
<string name="prefs_backup_desc">Perform daily backups to sdcard.</string>
|
||||
|
||||
<!-- backup failure message (%s -> error message) -->
|
||||
<string name="prefs_backup_desc_failure">Last backup failed: %s</string>
|
||||
|
||||
<!-- backup failure error when error message is null -->
|
||||
<string name="prefs_backup_desc_failure_null">Last backup failed, could not read SD card</string>
|
||||
|
||||
<!-- backup success message (%s -> date) -->
|
||||
<string name="prefs_backup_desc_success">Latest backup was on %s</string>
|
||||
|
||||
<string name="displayedFields_PrefScreen_Title">Displayed Fields</string>
|
||||
<string name="displayedFields_PrefScreen_Desc">Select the fields to show in task list</string>
|
||||
|
||||
<string name="prefs_titleVisible_title">Task Title</string>
|
||||
<string name="prefs_titleVisible_desc">Task description</string>
|
||||
<string name="prefs_deadlineVisible_title">Dates</string>
|
||||
<string name="prefs_deadlineVisible_desc">Upcoming deadlines / completed date</string>
|
||||
<string name="prefs_timeVisible_title">Times</string>
|
||||
<string name="prefs_timeVisible_desc">Estimated & Elapsed Times</string>
|
||||
<string name="prefs_importanceVisible_title">Importance</string>
|
||||
<string name="prefs_importanceVisible_desc">Task importance indicator</string>
|
||||
<string name="prefs_tagsVisible_title">Tags</string>
|
||||
<string name="prefs_tagsVisible_desc">Tags associated with this task</string>
|
||||
<string name="prefs_repeatVisible_title">Repeats</string>
|
||||
<string name="prefs_repeatVisible_desc">Task repeat information</string>
|
||||
<string name="prefs_reminderVisible_title">Reminders</string>
|
||||
<string name="prefs_reminderVisible_desc">Displayed if this task has reminders</string>
|
||||
<string name="prefs_notesVisible_title">Notes</string>
|
||||
<string name="prefs_notesVisible_desc">Notes associated with this task</string>
|
||||
|
||||
<!-- This string is Astrid's Android Marketplace title. It never appears in the app itself. -->
|
||||
<string name="marketplace_title">Astrid Task/Todo List</string>
|
||||
<!-- This string is Astrid's Android Marketplace description. It never appears in the app itself. -->
|
||||
<string name="marketplace_description">
|
||||
Astrid is the highly-acclaimed open-source task list that is simple enough to not get in your way, powerful enough to help you get stuff done! Tags, reminders, RememberTheMilk sync, Locale plug-in & more!
|
||||
</string>
|
||||
|
||||
<!-- Automatically filled in by Launchpad: -->
|
||||
<string name="about_translators">translator-credits</string>
|
||||
|
||||
<!-- Widget text when loading tasks -->
|
||||
<string name="widget_loading">Loading...</string>
|
||||
|
||||
<!-- Permissions -->
|
||||
<string name="read_tasks_permission">Read Astrid tasks</string>
|
||||
|
||||
</resources>
|
@ -1,517 +1,337 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
ASTRID: Android's Simple Task Recording Dashboard
|
||||
|
||||
Copyright (c) 2009 Tim Su
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<!-- See the file "LICENSE" for the full license governing this code. -->
|
||||
<resources>
|
||||
|
||||
<!-- application -->
|
||||
<string name="app_name">Astrid</string>
|
||||
<!-- ======================== AndroidManifest ========================== -->
|
||||
|
||||
<string name="app_name">Astrid Tasks</string>
|
||||
|
||||
<!-- General String Constants -->
|
||||
<skip />
|
||||
<!-- permission title for READ_TASKS -->
|
||||
<string name="read_permission_label">Astrid Permission</string>
|
||||
|
||||
<!-- Importance Labels -->
|
||||
<string name="importance_1">!!!!</string>
|
||||
<string name="importance_2">!!!</string>
|
||||
<string name="importance_3">!!</string>
|
||||
<string name="importance_4">!</string>
|
||||
|
||||
<!-- Repeat Interval Labels -->
|
||||
<string name="repeat_days">Day(s)</string>
|
||||
<string name="repeat_weeks">Week(s)</string>
|
||||
<string name="repeat_months">Month(s)</string>
|
||||
<string name="repeat_hours">Hour(s)</string>
|
||||
|
||||
<!-- Plurals -->
|
||||
|
||||
<plurals name="Ntasks">
|
||||
<!-- plurals: tasks -->
|
||||
<item quantity="one">1 Task</item>
|
||||
<item quantity="other">%d Tasks</item>
|
||||
</plurals>
|
||||
<plurals name="NactiveTasks">
|
||||
<!-- plurals: active tasks vs total tasks -->
|
||||
<item quantity="one">%d / %d Active</item>
|
||||
<item quantity="other">%d / %d Active</item>
|
||||
</plurals>
|
||||
<plurals name="Nalarms">
|
||||
<!-- plurals: alarms -->
|
||||
<item quantity="one">One Alarm</item>
|
||||
<item quantity="two">Two Alarms</item>
|
||||
<item quantity="other">%d Alarms</item>
|
||||
</plurals>
|
||||
<plurals name="Ntags">
|
||||
<!-- plurals: tags -->
|
||||
<item quantity="one">1 Tag</item>
|
||||
<item quantity="other">%d Tags</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Time Constants -->
|
||||
|
||||
<!-- used for long due dates. c.f. Java's SimpleDateFormat -->
|
||||
<string name="dateFormatter">MMM d</string>
|
||||
<!-- used for alarms -->
|
||||
<string name="alarmDateFormatter">M/dd HH:mm</string>
|
||||
<!-- vertical labels are used in dialog boxes -->
|
||||
<string name="daysVertical">D\na\ny\ns</string>
|
||||
<string name="hoursVertical">H\no\nu\nr\ns</string>
|
||||
|
||||
<plurals name="Ndays">
|
||||
<!-- plurals: days -->
|
||||
<item quantity="one">1 Day</item>
|
||||
<item quantity="other">%d Days</item>
|
||||
</plurals>
|
||||
<plurals name="NdaysPreposition">
|
||||
<!-- plurals: days (used after a preopsition, i.e. due in 5 days) -->
|
||||
<item quantity="one">1 Day</item>
|
||||
<item quantity="other">%d Days</item>
|
||||
</plurals>
|
||||
<plurals name="Nhours">
|
||||
<!-- plurals: hours -->
|
||||
<item quantity="one">1 Hour</item>
|
||||
<item quantity="other">%d Hours</item>
|
||||
</plurals>
|
||||
<plurals name="Nminutes">
|
||||
<!-- plurals: minutes -->
|
||||
<item quantity="one">1 Minute</item>
|
||||
<item quantity="other">%d Minutes</item>
|
||||
</plurals>
|
||||
<plurals name="Nseconds">
|
||||
<!-- plurals: seconds -->
|
||||
<item quantity="one">1 Second</item>
|
||||
<item quantity="other">%d Seconds</item>
|
||||
</plurals>
|
||||
<plurals name="NhoursShort">
|
||||
<!-- plurals: hours (abbreviated) -->
|
||||
<item quantity="one">1 Hr</item>
|
||||
<item quantity="other">%d Hrs</item>
|
||||
</plurals>
|
||||
<plurals name="NminutesShort">
|
||||
<!-- plurals: minutes (abbreviated) -->
|
||||
<item quantity="one">1 Min</item>
|
||||
<item quantity="other">%d Min</item>
|
||||
</plurals>
|
||||
<plurals name="NsecondsShort">
|
||||
<!-- plurals: seconds (abbreviated) -->
|
||||
<item quantity="one">1 Sec</item>
|
||||
<item quantity="other">%d Sec</item>
|
||||
</plurals>
|
||||
|
||||
<!-- indicates time in past. %s is replaced by time unit i.e. 1 minute -->
|
||||
<string name="ago_string">%s Ago</string>
|
||||
|
||||
<!-- TaskList -->
|
||||
<skip />
|
||||
<!-- title bar -->
|
||||
<string name="taskList_titlePrefix">Astrid: </string>
|
||||
<string name="taskList_titleTagPrefix">Tagged \"%s\":</string>
|
||||
<string name="taskList_titleUntagged">Untagged Tasks:</string>
|
||||
<string name="taskList_hiddenSuffix"> hidden</string>
|
||||
<string name="addtask_label">New Task</string>
|
||||
<string name="missing_tag">Could Not Find Requested Tag!</string>
|
||||
|
||||
<!-- text displayed in task list item -->
|
||||
|
||||
<!-- prefix to show that a task is hidden -->
|
||||
<string name="taskList_hiddenPrefix">H</string>
|
||||
<!-- i.e. Due in 4 days -->
|
||||
<string name="taskList_dueRelativeTime">Due in</string>
|
||||
<!-- i.e. Due on Jan 2 -->
|
||||
<string name="taskList_dueAbsoluteDate">Due on</string>
|
||||
<!-- prefix to deadline -->
|
||||
<string name="taskList_goalPrefix">Goal</string>
|
||||
<string name="taskList_overdueBy">Overdue by</string>
|
||||
<!-- i.e. Finished 4 days ago -->
|
||||
<string name="taskList_completedPrefix">Finished %s</string>
|
||||
<!-- i.e. Estimated: 4 hours -->
|
||||
<string name="taskList_estimatedTimePrefix">Estimated:</string>
|
||||
<!-- i.e. Spent: 88 minutes. used to indicate time spent on task -->
|
||||
<string name="taskList_elapsedTimePrefix">Spent:</string>
|
||||
<!-- time interval to set frequency to remind user -->
|
||||
<string name="taskList_periodicReminderPrefix">Poke Every</string>
|
||||
|
||||
<!-- time interval to set repeated tasks-->
|
||||
<string name="taskList_repeatPrefix">Repeats Every</string>
|
||||
<!-- displayed when repeat is on remote server-->
|
||||
<string name="taskList_repeatsRemotely">Repeats On Remote Server</string>
|
||||
<string name="taskList_alarmPrefix">Next Alarm:</string>
|
||||
<string name="taskList_tagsPrefix">Tags:</string>
|
||||
<string name="taskList_notesPrefix">Notes:</string>
|
||||
|
||||
<!-- i.e. Created: <create date> -->
|
||||
<string name="taskList_createdPrefix">Created:</string>
|
||||
|
||||
<!-- i.e. Deleted: <delete date> -->
|
||||
<string name="taskList_deleted">Deleted</string>
|
||||
|
||||
<string name="quick_add_hint">Add New Task</string>
|
||||
|
||||
<!-- menu items -->
|
||||
<string name="taskList_menu_insert">New Task</string>
|
||||
<string name="taskList_menu_tags">Tags</string>
|
||||
<string name="taskList_menu_filters">Sort/Filters</string>
|
||||
<string name="taskList_menu_syncshortcut">Sync</string>
|
||||
<string name="taskList_menu_more">More</string>
|
||||
<string name="taskList_menu_sync">Synchronization</string>
|
||||
<string name="taskList_menu_settings">Settings</string>
|
||||
<string name="taskList_menu_help">Help (opens in Browser)</string>
|
||||
<string name="taskList_menu_survey">Take Astrid\'s Survey!</string>
|
||||
<string name="taskList_menu_tips">Quick Tips</string>
|
||||
<string name="taskList_menu_cleanup">Clean Up Old Tasks</string>
|
||||
<string name="taskList_menu_export">Backup Tasks</string>
|
||||
<string name="taskList_menu_import">Restore Tasks</string>
|
||||
|
||||
<string name="taskList_context_edit">Edit Task</string>
|
||||
<string name="taskList_context_delete">Delete Task</string>
|
||||
<string name="taskList_context_startTimer">Start Timer</string>
|
||||
<string name="taskList_context_stopTimer">Stop Timer</string>
|
||||
<string name="taskList_context_postpone">Postpone</string>
|
||||
|
||||
<!-- filter menu items -->
|
||||
<string name="taskList_filter_title">Sort/Filters</string>
|
||||
<string name="taskList_filter_hidden">Hidden/Blocked Tasks</string>
|
||||
<string name="taskList_filter_done">Completed Tasks</string>
|
||||
<string name="taskList_filter_tagged">Tagged \'%s\'</string>
|
||||
<string name="taskList_sort_auto">Auto Sort</string>
|
||||
<string name="taskList_sort_alpha">Sort By Name</string>
|
||||
<string name="taskList_sort_duedate">Sort By Due Date</string>
|
||||
<string name="taskList_sort_reverse">Sort Reverse</string>
|
||||
|
||||
<string name="taskList_nonag_reminder">Select an Action:</string>
|
||||
<string name="taskList_postpone_count">Times You\'ve Postponed: %d</string>
|
||||
<string name="taskList_postpone_dialog">Postpone for how long?</string>
|
||||
<string name="taskList_cleanup_dialog">"Delete completed tasks older than # days:"</string>
|
||||
|
||||
<!-- TaskEdit -->
|
||||
<skip />
|
||||
<!-- title bar -->
|
||||
<string name="taskEdit_titleGeneric">Astrid: Editing Task</string>
|
||||
<string name="taskEdit_titlePrefix">Astrid: Editing </string>
|
||||
<string name="taskEdit_label">Astrid: New Task</string>
|
||||
|
||||
<!-- tabs -->
|
||||
<string name="taskEdit_tab_basic">Basic</string>
|
||||
<string name="taskEdit_tab_dates">Dates</string>
|
||||
<string name="taskEdit_tab_alerts">Alerts</string>
|
||||
|
||||
<!-- labels -->
|
||||
<string name="name_label">Summary</string>
|
||||
<string name="name_hint">Task Name</string>
|
||||
<string name="importance_label">How Important is it?</string>
|
||||
<string name="tags_label">Tags:</string>
|
||||
<string name="tag_hint">Tag Name</string>
|
||||
|
||||
<string name="estimatedDuration_label">How Long Will it Take?</string>
|
||||
<string name="elapsedDuration_label">Time Already Spent on Task</string>
|
||||
<string name="definiteDueDate_label">Absolute Deadline</string>
|
||||
<string name="preferredDueDate_label">Goal Deadline</string>
|
||||
<string name="addToCalendar_label">Add Task To Calendar</string>
|
||||
<string name="showCalendar_label">Open Calendar Event</string>
|
||||
<string name="hiddenUntil_label">Hide Until This Date</string>
|
||||
<string name="repeat_label">Repeat Every</string>
|
||||
<string name="repeat_value_unset">No Repeat Set</string>
|
||||
<string name="blockingOn_label">Hide Until This Task is Done</string>
|
||||
<string name="notes_label">Notes</string>
|
||||
<string name="notes_hint">Enter Task Notes</string>
|
||||
|
||||
<string name="notification_label">Periodic Reminders</string>
|
||||
<string name="notification_prefix">Every</string>
|
||||
<string name="flags_label">Notify me...</string>
|
||||
<string name="flag_before">As Deadlines Approach</string>
|
||||
<string name="flag_during">At Deadlines</string>
|
||||
<string name="flag_after">After Absolute Deadline Passes</string>
|
||||
<string name="flag_nonstop">Alarm Clock Mode</string>
|
||||
<string name="alerts_label">Fixed Reminders</string>
|
||||
<string name="add_alert">Add New Reminder</string>
|
||||
|
||||
<!-- dialog boxes -->
|
||||
<string name="hour_minutes_dialog">Time (hours : minutes)</string>
|
||||
<string name="notification_dialog">Remind Me Every</string>
|
||||
<string name="repeat_picker_title">Repeat Every (0 to disable)</string>
|
||||
<string name="repeat_help_dialog_title">Help: Astrid Repeats</string>
|
||||
<string name="repeat_help_dialog">
|
||||
To use repeats, set at least one of the deadlines above. When you complete this task, the deadline will be automatically advanced.
|
||||
\n\n
|
||||
If you don\'t want to see the new task right after you complete the old one, you should use the "Hide Until" field, which will also be advanced automatically.
|
||||
\n
|
||||
</string>
|
||||
<string name="repeat_help_hide">Don't Show Help Anymore</string>
|
||||
|
||||
<!-- buttons -->
|
||||
<string name="save_label">Save</string>
|
||||
<string name="discard_label">Discard</string>
|
||||
<string name="edit_label">Edit</string>
|
||||
<string name="delete_label">Delete</string>
|
||||
<string name="blank_button_title">Click to Set</string>
|
||||
<string name="startTimer_label">Start Timer</string>
|
||||
<string name="stopTimer_label">Stop Timer</string>
|
||||
|
||||
<string name="taskEdit_menu_save">Save</string>
|
||||
<string name="taskEdit_onTaskSave_Due">Task Saved: due in %s</string>
|
||||
<string name="taskEdit_onTaskSave_Overdue">Task Saved: due %s ago</string>
|
||||
<string name="taskEdit_onTaskSave_notDue">Task Saved</string>
|
||||
|
||||
<!-- TaskView -->
|
||||
<skip />
|
||||
|
||||
<string name="taskView_notifyTitle">Astrid says...</string>
|
||||
|
||||
<!-- Tag List -->
|
||||
<skip />
|
||||
<string name="tagList_titlePrefix">Astrid: Tag View: </string>
|
||||
<string name="tagList_context_create">Create Task With Tag</string>
|
||||
<string name="tagList_context_edit">Edit Tag</string>
|
||||
<string name="tagList_context_delete">Delete Tag</string>
|
||||
<string name="tagList_context_showTag">Show on Home Page</string>
|
||||
<string name="tagList_context_hideTag">Hide on Home Page</string>
|
||||
<string name="tagList_context_shortcut">Create Shortcut</string>
|
||||
<string name="tagList_shortcut_created">Shortcut created on your home screen!</string>
|
||||
<string name="tagList_shortcut_prefix">Tag:</string>
|
||||
<string name="tagList_untagged">[untagged]</string>
|
||||
|
||||
<string name="tagList_menu_sortAlpha">Sort A-Z</string>
|
||||
<string name="tagList_menu_sortSize">Sort by Size</string>
|
||||
|
||||
|
||||
<!-- Synchronization -->
|
||||
<skip />
|
||||
<string name="sync_pref_group">Synchronization Services</string>
|
||||
<string name="sync_pref_group_actions">Actions</string>
|
||||
<string name="sync_pref_group_options">Options</string>
|
||||
<!-- Proper noun - don't translate -->
|
||||
<string name="sync_rtm_title">Remember The Milk</string>
|
||||
<string name="sync_rtm_desc">http://www.rememberthemilk.com</string>
|
||||
<string name="sync_interval_title">Auto-Synchronize</string>
|
||||
<string name="sync_interval_desc">If set, synchronization occurs automatically given interval</string>
|
||||
<string name="sync_button_title">Main Menu Shortcut</string>
|
||||
<string name="sync_button_desc">Show \"Synchronize\" in Astrid\'s menu</string>
|
||||
<string name="sync_quiet_title">Hide Dialogs</string>
|
||||
<string name="sync_quiet_desc">Hide the Sync Results dialogs</string>
|
||||
<string name="sync_bgwifi_title">Auto-Sync Wifi Only</string>
|
||||
<string name="sync_bgwifi_desc">If set, auto-sync only happens when Wifi is active</string>
|
||||
<string name="sync_error">Sync Error! Sorry for the inconvenience! Error:</string>
|
||||
<string name="sync_upgrade_v99">
|
||||
Astrid 2.7 now performs synchronization with RTM in the background. You will
|
||||
be directed to the preferences page to configure how often you want this to
|
||||
occur (it is a minor drain on battery).
|
||||
</string>
|
||||
<string name="sync_now">Synchronize Now!</string>
|
||||
<string name="sync_forget">Clear Personal Data</string>
|
||||
<string name="sync_uptodate">Sync: Up to date!</string>
|
||||
<string name="sync_forget_confirm">Clear data for selected services?</string>
|
||||
<string name="sync_no_synchronizers">No Synchronizers Enabled!</string>
|
||||
<string name="sync_last_sync">Last Sync Date: %s</string>
|
||||
<string name="sync_last_auto_sync">Last AutoSync Attempt: %s</string>
|
||||
<string name="sync_date_never">never</string>
|
||||
<string name="sync_result_title">%s Results</string>
|
||||
<string name="sync_result_local">Summary - Astrid Tasks:</string>
|
||||
<string name="sync_result_remote">Summary - Remote Server:</string>
|
||||
<string name="sync_result_created">Created: %d</string>
|
||||
<string name="sync_result_updated">Updated: %d</string>
|
||||
<string name="sync_result_deleted">Deleted: %d</string>
|
||||
<string name="sync_result_merged">Merged: %d</string>
|
||||
|
||||
<string name="sync_progress_remote">Reading Remote Data</string>
|
||||
<string name="sync_progress_rxlist">Reading List: %s</string>
|
||||
<string name="sync_progress_repeating">Synchronizing Repeating Task</string>
|
||||
<string name="sync_progress_localtx">Transmitting: %s</string>
|
||||
<string name="sync_progress_localdel">Locally Deleted Tasks</string>
|
||||
<string name="sync_progress_remotetx">Receiving: %s</string>
|
||||
|
||||
<string name="rtm_login_label">Please Log In to RTM...</string>
|
||||
<string name="rtm_login_error">
|
||||
Sorry, there was an error verifying your login. Please try again.
|
||||
\n\n
|
||||
Error Message:
|
||||
</string>
|
||||
|
||||
|
||||
<!-- Dialog Boxes -->
|
||||
<skip />
|
||||
<string name="loading">Loading...</string>
|
||||
<string name="updating">Updating List...</string>
|
||||
<string name="information_title">Information</string>
|
||||
<string name="question_title">Question</string>
|
||||
<string name="done_label">Done</string>
|
||||
<string name="notify_yes">View This Task</string>
|
||||
<string name="notify_done">Already Done!</string>
|
||||
<string name="notify_snooze">Snooze...</string>
|
||||
<string name="notify_no">Go Away!</string>
|
||||
<string name="notify_snooze_title">Hours/minutes to snooze?</string>
|
||||
|
||||
<string name="delete_title">Delete</string>
|
||||
<string name="delete_this_task_title">Delete this task?</string>
|
||||
<string name="delete_this_tag_title">Remove this tag from all tasks?</string>
|
||||
|
||||
<string name="stop_timer_title">Stop the timer?</string>
|
||||
|
||||
<string name="quick_tips">
|
||||
Some things you may not know about Astrid:\n
|
||||
\n
|
||||
- To create a task, just start typing!\n
|
||||
- While editing a task, hit \'back\' to save it\n
|
||||
- Select a task & press 1-4 to quickly change it\'s priority\n
|
||||
- If a task has a deadline, long-press to postpone it\n
|
||||
\n
|
||||
Thanks for using Astrid!\n
|
||||
</string>
|
||||
|
||||
<!-- %s => name of the application -->
|
||||
<string name="task_killer_help">
|
||||
It looks like you are using an app that can kill processes (%s)! If you can,
|
||||
add Astrid to the exclusion list so it doesn\'t get killed. Otherwise,
|
||||
Astrid might not let you know when your tasks are due.\n
|
||||
</string>
|
||||
<string name="task_killer_help_ok">I Won\'t Kill Astrid!</string>
|
||||
|
||||
<!-- Restore/Backup -->
|
||||
<skip />
|
||||
|
||||
<string name="export_toast">Backed Up %s to %s.</string>
|
||||
<string name="import_summary_title">Restore Summary</string>
|
||||
<string name="import_summary_message">
|
||||
File %s contained %d tasks.\n
|
||||
Restored %d tasks.\n
|
||||
Skipped %d tasks.\n
|
||||
</string>
|
||||
<string name="import_progress_title">Restore</string>
|
||||
<string name="import_progress_open">Opening file...</string>
|
||||
<string name="import_progress_opened">File opened...</string>
|
||||
<string name="import_progress_read">Reading task %d...</string>
|
||||
<string name="import_progress_skip">Skipped task %d...</string>
|
||||
<string name="import_progress_add">Restored task %d...</string>
|
||||
<string name="import_file_prompt">Select a File to Restore</string>
|
||||
<!-- Locale Plugin -->
|
||||
<skip />
|
||||
|
||||
<string name="locale_edit_alerts_title">Astrid Tag Alert</string>
|
||||
<string name="locale_edit_intro">Astrid will send you a reminder
|
||||
when you have uncompleted tasks with the following criteria:</string>
|
||||
<string name="locale_pick_tag">Tagged with:</string>
|
||||
|
||||
<!-- Notification -->
|
||||
<skip />
|
||||
|
||||
<string name="notif_definiteDueDate">Absolute Deadline!</string>
|
||||
<string name="notif_preferredDueDate">Goal Deadline!</string>
|
||||
<string name="notif_timerStarted">Working on:</string>
|
||||
<!-- $NUM is replaced with # of tasks + units, i.e. "1 task", $TAG is replaced with tag name -->
|
||||
<string name="notif_tagNotification">You have $NUM tagged $TAG!</string>
|
||||
|
||||
<!-- Error Messages -->
|
||||
<skip />
|
||||
<!-- permission description for READ_TASKS -->
|
||||
<string name="read_permission_desc">read tasks, display task filters</string>
|
||||
|
||||
<string name="error_opening">Could not find this item: </string>
|
||||
<string name="error_saving">Could not save:s</string>
|
||||
<string name="error_sdcard">Cannot access folder: %s</string>
|
||||
<string name="error_sdcard_general">Cannot access your SD card!</string>
|
||||
|
||||
<skip />
|
||||
<!-- permission title for READ_TASKS -->
|
||||
<string name="write_permission_label">Astrid Permission</string>
|
||||
|
||||
<!-- permission description for READ_TASKS -->
|
||||
<string name="write_permission_desc">create new tasks, edit existing tasks</string>
|
||||
|
||||
<!-- ======================== Generic Plurals ========================== -->
|
||||
|
||||
<plurals name="DUt_years">
|
||||
<!-- plurals: years -->
|
||||
<item quantity="one">1 Year</item>
|
||||
<item quantity="other">%d Years</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_months">
|
||||
<!-- plurals: months -->
|
||||
<item quantity="one">1 Month</item>
|
||||
<item quantity="other">%d Months</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_days">
|
||||
<!-- plurals: days -->
|
||||
<item quantity="one">1 Day</item>
|
||||
<item quantity="other">%d Days</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_hours">
|
||||
<!-- plurals: hours -->
|
||||
<item quantity="one">1 Hour</item>
|
||||
<item quantity="other">%d Hours</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_minutes">
|
||||
<!-- plurals: minutes -->
|
||||
<item quantity="one">1 Minute</item>
|
||||
<item quantity="other">%d Minutes</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_seconds">
|
||||
<!-- plurals: seconds -->
|
||||
<item quantity="one">1 Second</item>
|
||||
<item quantity="other">%d Seconds</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_hoursShort">
|
||||
<!-- plurals: hours (abbreviated) -->
|
||||
<item quantity="one">1 Hr</item>
|
||||
<item quantity="other">%d Hrs</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_minutesShort">
|
||||
<!-- plurals: minutes (abbreviated) -->
|
||||
<item quantity="one">1 Min</item>
|
||||
<item quantity="other">%d Min</item>
|
||||
</plurals>
|
||||
<plurals name="DUt_secondsShort">
|
||||
<!-- plurals: seconds (abbreviated) -->
|
||||
<item quantity="one">1 Sec</item>
|
||||
<item quantity="other">%d Sec</item>
|
||||
</plurals>
|
||||
|
||||
<!-- ========================= Generic Dialogs ========================= -->
|
||||
|
||||
<!-- confirmation dialog title -->
|
||||
<string name="DLG_confirm_title">Confirm?</string>
|
||||
|
||||
<!-- question dialog title -->
|
||||
<string name="DLG_question_title">Question:</string>
|
||||
|
||||
<!-- information dialog title -->
|
||||
<string name="DLG_information_title">Information</string>
|
||||
|
||||
<!-- Dialog yes-->
|
||||
<string name="DLG_yes">Yes</string>
|
||||
|
||||
<!-- Dialog no-->
|
||||
<string name="DLG_no">No</string>
|
||||
|
||||
<!-- Dialog close-->
|
||||
<string name="DLG_close">Close</string>
|
||||
|
||||
<!-- communicating with servers ext -->
|
||||
<string name="DLG_communicating_text">Communicating with Server...</string>
|
||||
|
||||
<!-- error dialog -->
|
||||
<string name="DLG_error">Oops, looks like some trouble occurred! Here\'s what happened:\n\n%s</string>
|
||||
|
||||
<!-- question for deleting tasks -->
|
||||
<string name="DLG_delete_this_task_question">Delete this task?</string>
|
||||
|
||||
<!-- Button for advancing to next page/message -->
|
||||
<string name="DLG_next">Next</string>
|
||||
|
||||
<!-- Button for retreating to previous page/message -->
|
||||
<string name="DLG_prev">Previous</string>
|
||||
|
||||
<!-- Button for being done -->
|
||||
<string name="DLG_done">Done</string>
|
||||
|
||||
<!-- Button for canceling out of this page -->
|
||||
<string name="DLG_cancel">Cancel</string>
|
||||
|
||||
<!-- ============================= Widgets ============================= -->
|
||||
|
||||
<!-- Label for DateButtons with no value -->
|
||||
<string name="WID_dateButtonUnset">Click To Set</string>
|
||||
|
||||
<!-- String formatter for DateButtons ($D => date, $T => time) -->
|
||||
<string name="WID_dateButtonLabel">$D $T</string>
|
||||
|
||||
<!-- String formatter for Disable button -->
|
||||
<string name="WID_disableButton">Disable</string>
|
||||
|
||||
<!-- ======================== TaskListActivity ======================== -->
|
||||
|
||||
<!-- Title (%s => name of filter) -->
|
||||
<string name="TLA_title">Astrid: %s</string>
|
||||
|
||||
<!-- Displayed instead of list when no items present -->
|
||||
<string name="TLA_no_items">You Have No Tasks!</string>
|
||||
|
||||
<!-- Menu: Add Task -->
|
||||
<string name="TLA_menu_add">Add Task</string>
|
||||
|
||||
<!-- Menu: Plugins -->
|
||||
<string name="TLA_menu_plugins">Plugins</string>
|
||||
|
||||
<!-- Menu: Settings -->
|
||||
<string name="TLA_menu_settings">Settings</string>
|
||||
|
||||
<!-- Menu: Help -->
|
||||
<string name="TLA_menu_help">Help</string>
|
||||
|
||||
<!-- Search Label-->
|
||||
<string name="TLA_search_label">Search Within This Filter</string>
|
||||
|
||||
<!-- Search Hint-->
|
||||
<string name="TLA_search_hint">Search Within This Filter</string>
|
||||
|
||||
<!-- Quick Add Hint-->
|
||||
<string name="TLA_quick_add_hint">Add to this list</string>
|
||||
|
||||
<!-- Help (HTML)-->
|
||||
<string name="TLA_help"><![CDATA[
|
||||
<center><h1>Help: Tasks Page</h1></center>
|
||||
This page displays all of your tasks belonging to the filter you have chosen.
|
||||
The back button at the top of the screen lets you pick a different filter
|
||||
to display.
|
||||
<br />
|
||||
You can use the quick-add widget at the bottom of the screen to add tasks
|
||||
without going to the edit page.
|
||||
<br />
|
||||
uh... that's it for help for today.
|
||||
]]></string>
|
||||
|
||||
<!-- =========================== TaskAdapter =========================== -->
|
||||
|
||||
<!-- Format string to indicate task is hidden (%s => task name) -->
|
||||
<string name="TAd_hiddenFormat">%s [hidden]</string>
|
||||
|
||||
<!-- Displayed when adapter is flung (scrolled quickly) -->
|
||||
<string name="TAd_isFling">loading</string>
|
||||
|
||||
<!-- due date for tasks ($D => date) -->
|
||||
<string name="TAd_dueDate">$D</string>
|
||||
|
||||
<string name="prefs_category_alerts">Notifications</string>
|
||||
|
||||
<string name="prefs_quietStart_title">Quiet Hours Start</string>
|
||||
<string name="prefs_quietStart_desc">Start time to silence notifications for periodic reminders</string>
|
||||
|
||||
<string name="prefs_quietEnd_title">Quiet Hours End</string>
|
||||
<string name="prefs_quietEnd_desc">End time to silence notifications</string>
|
||||
|
||||
<string name="prefs_defaultRemind_title">Default Reminders</string>
|
||||
<string name="prefs_defaultRemind_desc">For new tasks, default reminder in days (i.e. 7). Blank to disable</string>
|
||||
|
||||
<string name="prefs_annoy_title">Persistent Mode</string>
|
||||
<string name="prefs_annoy_desc">If checked, LED and notifications must be cleared one at a time</string>
|
||||
|
||||
<string name="prefs_notification_title">Notification Ringtone</string>
|
||||
<string name="prefs_notification_desc">Choose a ringtone for Astrid\'s alerts</string>
|
||||
<!-- due date for tasks with date and time ($D => date, $T => time) -->
|
||||
<string name="TAd_dueDateTime">$D at $T</string>
|
||||
|
||||
<!-- indicates task was completed. %s => date or time ago -->
|
||||
<string name="TAd_completed">Finished %s</string>
|
||||
|
||||
<!-- textview indicating details are being loaded -->
|
||||
<string name="TAd_loading">... loading ...</string>
|
||||
|
||||
<!-- Context Item: edit task -->
|
||||
<string name="TAd_contextEditTask">Edit Task</string>
|
||||
|
||||
<string name="prefs_notificon_title">Notification Icons</string>
|
||||
<string name="prefs_notificon_desc">Choose Astrid\'s notification bar icon</string>
|
||||
|
||||
<string name="prefs_vibrate_title">Vibrate on Alert</string>
|
||||
<string name="prefs_vibrate_desc">If checked, Astrid will vibrate when sounding an alarm</string>
|
||||
|
||||
<string name="prefs_category_appearance">Appearance</string>
|
||||
|
||||
<string name="prefs_colorize_title">Colorize Task List</string>
|
||||
<string name="prefs_colorize_desc">Different colors for different priorities</string>
|
||||
|
||||
<string name="prefs_fontSize_title">Task List Size</string>
|
||||
<string name="prefs_fontSize_desc">Font size on the main listing page</string>
|
||||
<!-- Context Item: delete task -->
|
||||
<string name="TAd_contextDeleteTask">Delete Task</string>
|
||||
|
||||
<!-- ======================= FilterListActivity ======================== -->
|
||||
|
||||
<string name="prefs_category_other">Other</string>
|
||||
|
||||
<string name="prefs_nagging_title">Nag Messages</string>
|
||||
<string name="prefs_nagging_desc">Show Astrid\'s comments when viewing reminders and postponing tasks?</string>
|
||||
<!-- Title -->
|
||||
<string name="FLA_title">Astrid: Filters</string>
|
||||
|
||||
<!-- Loading -->
|
||||
<string name="FLA_loading">Please Wait...</string>
|
||||
|
||||
<!-- Context Menu: Shortcut -->
|
||||
<string name="FLA_context_shortcut">Create Shortcut On Desktop</string>
|
||||
|
||||
<!-- Menu: Search -->
|
||||
<string name="FLA_menu_search">Search...</string>
|
||||
|
||||
<!-- Menu: Help -->
|
||||
<string name="FLA_menu_help">Help</string>
|
||||
|
||||
<!-- Create Shortcut Dialog -->
|
||||
<string name="FLA_shortcut_dialog">Create Shortcut:</string>
|
||||
|
||||
<!-- Search Label-->
|
||||
<string name="FLA_search_label">Search For Tasks</string>
|
||||
|
||||
<!-- Search Hint-->
|
||||
<string name="FLA_search_hint">Search For Tasks</string>
|
||||
|
||||
<!-- Help (HTML)-->
|
||||
<string name="FLA_help"><![CDATA[
|
||||
<center><h1>Help: Filters Page</h1></center>
|
||||
<p>On the Filters page you can see all of the filters that you can use to
|
||||
organize your tasks. Some Astrid Plugins will add new filters to this
|
||||
list.
|
||||
</p><p>
|
||||
You can turn any filter into a shortcut on your desktop by long-pressing
|
||||
to bring up the context menu, then selecting "Create Shortcut". Other options
|
||||
that are displayed will depend on the particular plugins that you
|
||||
are using.
|
||||
</p><p>
|
||||
If you are having trouble with a particular plugin, please report errors
|
||||
to the plugin creator for fastest service.
|
||||
</p>
|
||||
]]></string>
|
||||
|
||||
<!-- Toast: created shortcut (%s => label) -->
|
||||
<string name="FLA_toast_onCreateShortcut">Created Shortcut: %s</string>
|
||||
|
||||
<!-- ======================== TaskEditActivity ========================= -->
|
||||
|
||||
<!-- Title when editing a task (%s => task title) -->
|
||||
<string name="TEA_title">Astrid: Editing </string>
|
||||
|
||||
<!-- Title when creating a new task -->
|
||||
<string name="TEA_titleNew">Astrid: New Task</string>
|
||||
|
||||
<!-- Task title label -->
|
||||
<string name="TEA_name_label">Summary</string>
|
||||
|
||||
<!-- Task title hint (displayed when edit box is empty) -->
|
||||
<string name="TEA_name_hint">Task Name</string>
|
||||
|
||||
<!-- Task importance label -->
|
||||
<string name="TEA_importance_label">How important is it?</string>
|
||||
|
||||
<!-- Task urgency label -->
|
||||
<string name="TEA_urgency_label">When must you finish it?</string>
|
||||
|
||||
<!-- Task hidden until label -->
|
||||
<string name="TEA_hiddenUntil_label">Hide Until This Date</string>
|
||||
|
||||
<!-- Task plugins label -->
|
||||
<string name="TEA_plugins_label">Plugins</string>
|
||||
|
||||
<!-- Save button -->
|
||||
<string name="TEA_save_label">Save</string>
|
||||
|
||||
<!-- Don't Save button -->
|
||||
<string name="TEA_discard_label">Don\'t Save</string>
|
||||
|
||||
<string name="prefs_deadlineTime_title">Default Deadlines</string>
|
||||
<string name="prefs_deadlineTime_desc"># of days from now to set new deadlines</string>
|
||||
<!-- Menu: Save -->
|
||||
<string name="TEA_menu_save">Save Changes</string>
|
||||
|
||||
<!-- Menu: Don't Save -->
|
||||
<string name="TEA_menu_discard">Don\'t Save</string>
|
||||
|
||||
<!-- Menu: Delete Task -->
|
||||
<string name="TEA_menu_delete">Delete Task</string>
|
||||
|
||||
<!-- Toast: task saved with deadline (%s => time units) -->
|
||||
<string name="TEA_onTaskSave_due">Task Saved: due in %s</string>
|
||||
|
||||
<!-- Toast: task saved with deadline in past (%s => time units) -->
|
||||
<string name="TEA_onTaskSave_overdue">Task Saved: due %s ago</string>
|
||||
|
||||
<!-- Toast: task saved without deadlines -->
|
||||
<string name="TEA_onTaskSave_notDue">Task Saved</string>
|
||||
|
||||
<!-- Toast: task was not saved -->
|
||||
<string name="TEA_onTaskDiscard">Task Editing Was Abandoned</string>
|
||||
|
||||
<!-- ========================== Notifications ========================== -->
|
||||
|
||||
<string name="prefs_backup_title">Automatic Backups</string>
|
||||
|
||||
<!-- backup summary when there is no backup message -->
|
||||
<string name="prefs_backup_desc">Perform daily backups to sdcard.</string>
|
||||
|
||||
<!-- backup failure message (%s -> error message) -->
|
||||
<string name="prefs_backup_desc_failure">Last backup failed: %s</string>
|
||||
|
||||
<!-- backup failure error when error message is null -->
|
||||
<string name="prefs_backup_desc_failure_null">Last backup failed, could not read SD card</string>
|
||||
|
||||
<!-- backup success message (%s -> date) -->
|
||||
<string name="prefs_backup_desc_success">Latest backup was on %s</string>
|
||||
|
||||
<string name="displayedFields_PrefScreen_Title">Displayed Fields</string>
|
||||
<string name="displayedFields_PrefScreen_Desc">Select the fields to show in task list</string>
|
||||
<!-- Notification title for tasks -->
|
||||
<string name="Ntf_task_title">Astrid: New Reminder</string>
|
||||
|
||||
<!-- ===================== IntroductionActivity ======================== -->
|
||||
|
||||
<!-- Window title -->
|
||||
<string name="InA_title">Welcome to Astrid!</string>
|
||||
|
||||
<!-- Button to agree to EULA -->
|
||||
<string name="InA_agree">I Agree</string>
|
||||
|
||||
<!-- Button to disagree with EULA -->
|
||||
<string name="InA_disagree">I Disagree</string>
|
||||
|
||||
<!-- Button to show legal -->
|
||||
<string name="InA_show_eula">Start Using Todoroo</string>
|
||||
|
||||
<!-- =========================== HelpActivity ========================== -->
|
||||
|
||||
<!-- Button to send e-mail to Todoroo -->
|
||||
<string name="HlA_email_us">E-mail Todoroo</string>
|
||||
|
||||
<!-- Window title -->
|
||||
<string name="HlA_title">Todoroo Help</string>
|
||||
|
||||
<!-- ========================= EditPreferences ========================= -->
|
||||
|
||||
<string name="prefs_titleVisible_title">Task Title</string>
|
||||
<string name="prefs_titleVisible_desc">Task description</string>
|
||||
<string name="prefs_deadlineVisible_title">Dates</string>
|
||||
<string name="prefs_deadlineVisible_desc">Upcoming deadlines / completed date</string>
|
||||
<string name="prefs_timeVisible_title">Times</string>
|
||||
<string name="prefs_timeVisible_desc">Estimated & Elapsed Times</string>
|
||||
<string name="prefs_importanceVisible_title">Importance</string>
|
||||
<string name="prefs_importanceVisible_desc">Task importance indicator</string>
|
||||
<string name="prefs_tagsVisible_title">Tags</string>
|
||||
<string name="prefs_tagsVisible_desc">Tags associated with this task</string>
|
||||
<string name="prefs_repeatVisible_title">Repeats</string>
|
||||
<string name="prefs_repeatVisible_desc">Task repeat information</string>
|
||||
<string name="prefs_reminderVisible_title">Reminders</string>
|
||||
<string name="prefs_reminderVisible_desc">Displayed if this task has reminders</string>
|
||||
<string name="prefs_notesVisible_title">Notes</string>
|
||||
<string name="prefs_notesVisible_desc">Notes associated with this task</string>
|
||||
<!-- Window Title -->
|
||||
<string name="EPr_title">Astrid: Preferences</string>
|
||||
|
||||
<!-- This string is Astrid's Android Marketplace title. It never appears in the app itself. -->
|
||||
<string name="marketplace_title">Astrid Task/Todo List</string>
|
||||
<!-- This string is Astrid's Android Marketplace description. It never appears in the app itself. -->
|
||||
<string name="marketplace_description">
|
||||
Astrid is the highly-acclaimed open-source task list that is simple enough to not get in your way, powerful enough to help you get stuff done! Tags, reminders, RememberTheMilk sync, Locale plug-in & more!
|
||||
</string>
|
||||
|
||||
<!-- Automatically filled in by Launchpad: -->
|
||||
<string name="about_translators">translator-credits</string>
|
||||
|
||||
<!-- Widget text when loading tasks -->
|
||||
<string name="widget_loading">Loading...</string>
|
||||
<!-- Defaults Title -->
|
||||
<string name="EPr_defaults_header">New Task Defaults</string>
|
||||
|
||||
<!-- Permissions -->
|
||||
<string name="read_tasks_permission">Read Astrid tasks</string>
|
||||
<!-- Default Urgency Title -->
|
||||
<string name="EPr_default_urgency_title">Default Urgency</string>
|
||||
<!-- Default Urgency Description (%s => setting) -->
|
||||
<string name="EPr_default_urgency_desc">Currently Set To: %s</string>
|
||||
<!-- Preference Key (do not translate) -->
|
||||
<string name="EPr_default_urgency_key">p_durg</string>
|
||||
|
||||
<!-- Default Importance Title -->
|
||||
<string name="EPr_default_importance_title">Default Importance</string>
|
||||
<!-- Default Importance Description (%s => setting) -->
|
||||
<string name="EPr_default_importance_desc">Currently Set To: %s</string>
|
||||
<!-- Preference Key (do not translate) -->
|
||||
<string name="EPr_default_importance_key">p_dimp</string>
|
||||
|
||||
</resources>
|
||||
|
@ -0,0 +1,48 @@
|
||||
/**
|
||||
* See the file "LICENSE" for the full license governing this code.
|
||||
*/
|
||||
|
||||
package com.todoroo.astrid.service;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
||||
import android.database.sqlite.SQLiteException;
|
||||
|
||||
import com.flurry.android.FlurryAgent;
|
||||
import com.todoroo.andlib.service.ExceptionService.ErrorReporter;
|
||||
|
||||
public class FlurryReporter implements ErrorReporter {
|
||||
|
||||
@SuppressWarnings("nls")
|
||||
public void handleError(String name, Throwable error) {
|
||||
String message = error.toString();
|
||||
|
||||
StringWriter writer = new StringWriter();
|
||||
PrintWriter writerPrinter = new PrintWriter(writer);
|
||||
error.printStackTrace(writerPrinter);
|
||||
writerPrinter.flush();
|
||||
writerPrinter.close();
|
||||
|
||||
String trace = writer.toString();
|
||||
|
||||
// shorten the string
|
||||
trace = trace.substring(message.length());
|
||||
trace = trace.replaceAll("com.todoroo.bente", "!ctb");
|
||||
trace = trace.replaceAll("com.todoroo.astrid", "!cta");
|
||||
trace = trace.replaceAll("com.todoroo.android", "!ctc");
|
||||
trace = trace.replaceAll("com.mdt.rtm", "!rtm");
|
||||
trace = trace.replaceAll("android.database.sqlite", "!sqlite");
|
||||
trace = trace.replaceAll("android", "!A");
|
||||
trace = trace.replaceAll("database", "!db");
|
||||
trace = trace.replaceAll("org.apache.harmony.xml.parsers", "!xmlp");
|
||||
trace = trace.replaceAll(IllegalStateException.class.getName(), "IlStEx");
|
||||
trace = trace.replaceAll(ClassCastException.class.getName(), "ClCaEx");
|
||||
trace = trace.replaceAll(NullPointerException.class.getName(), "NPEx");
|
||||
trace = trace.replaceAll(SQLiteException.class.getName(), "SqLiEx");
|
||||
trace = trace.replaceAll(".java:", ":");
|
||||
|
||||
FlurryAgent.onError(name, message, trace);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue