package org.dodgybits.shuffle.android.persistence.provider;
import android.content.ContentValues;
import android.net.Uri;
public class TaskProvider extends AbstractCollectionProvider {
public static final String cTaskTableName = "task";
public static final String cUpdateIntent = "org.dodgybits.shuffle.android.TASK_UPDATE";
public TaskProvider() {
super(AUTHORITY,
"tasks",
cTaskTableName,
cUpdateIntent,
Tasks.DESCRIPTION,Tasks._ID,
Tasks.CONTENT_URI,
Tasks.DESCRIPTION,
Tasks.DETAILS,Tasks.CONTEXT_ID,Tasks.PROJECT_ID,Tasks.CREATED_DATE,
Tasks.MODIFIED_DATE,Tasks.START_DATE,Tasks.DUE_DATE,Tasks.TIMEZONE,
Tasks.CAL_EVENT_ID,Tasks.DISPLAY_ORDER,Tasks.COMPLETE,
Tasks.ALL_DAY,Tasks.HAS_ALARM,Tasks.TRACKS_ID, Tasks._ID);
makeSearchable(Tasks._ID, Tasks.DESCRIPTION, Tasks.DETAILS,Tasks.DESCRIPTION,Tasks.DETAILS);
elementInserters.put(COLLECTION_MATCH_ID, new TaskInserter());
setDefaultSortOrder(Tasks.DEFAULT_SORT_ORDER);
}
/* load task along with its optional project and context all in one query */
static final String cTaskJoinTableNames = "task left outer join project on task.projectId = project._id "
+ "left outer join context on task.contextId = context._id";
public static final String AUTHORITY = Shuffle.PACKAGE + ".taskprovider";
/**
* Tasks table
*/
public static final class Tasks implements ShuffleTable {
/**
* The content:// style URL for this table
*/
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY+"/tasks");
/**
* The default sort order for this table
*/
public static final String DEFAULT_SORT_ORDER = "start ASC, created ASC";
public static final String DESCRIPTION = "description";
public static final String DETAILS = "details";
public static final String CONTEXT_ID = "contextId";
public static final String PROJECT_ID = "projectId";
public static final String CREATED_DATE = "created";
public static final String MODIFIED_DATE = "modified";
public static final String START_DATE = "start";
public static final String DUE_DATE = "due";
public static final String TIMEZONE = "timezone";
public static final String CAL_EVENT_ID = "calEventId";
public static final String DISPLAY_ORDER = "displayOrder";
public static final String COMPLETE = "complete";
public static final String ALL_DAY = "allDay";
public static final String HAS_ALARM = "hasAlarm";
public static final String TRACKS_ID = "tracks_id";
/**
* Projection for all the columns of a task.
*/
public static final String[] cFullProjection = new String[] { _ID,
DESCRIPTION, DETAILS, PROJECT_ID, CONTEXT_ID, CREATED_DATE,
MODIFIED_DATE, START_DATE, DUE_DATE, TIMEZONE, CAL_EVENT_ID,
DISPLAY_ORDER, COMPLETE, ALL_DAY, HAS_ALARM, TRACKS_ID };
}
private class TaskInserter extends ElementInserterImpl {
public TaskInserter() {
super(Tasks.DESCRIPTION);
}
@Override
protected void addDefaultValues(ContentValues values) {
Long now = System.currentTimeMillis();
// Make sure that the fields are all set
if (!values.containsKey(Tasks.CREATED_DATE)) {
values.put(Tasks.CREATED_DATE, now);
}
if (!values.containsKey(Tasks.MODIFIED_DATE)) {
values.put(Tasks.MODIFIED_DATE, now);
}
if (!values.containsKey(Tasks.DESCRIPTION)) {
values.put(Tasks.DESCRIPTION, "");
}
if (!values.containsKey(Tasks.DETAILS)) {
values.put(Tasks.DETAILS, "");
}
if (!values.containsKey(Tasks.DISPLAY_ORDER)) {
values.put(Tasks.DISPLAY_ORDER, 0);
}
if (!values.containsKey(Tasks.COMPLETE)) {
values.put(Tasks.COMPLETE, 0);
}
}
}
}