package org.dodgybits.shuffle.android.persistence.provider;
import android.content.ContentValues;
import android.net.Uri;
import android.provider.BaseColumns;
public class TaskProvider extends AbstractCollectionProvider {
public static final String TASK_TABLE_NAME = "task";
public static final String UPDATE_INTENT = "org.dodgybits.shuffle.android.TASK_UPDATE";
private static final String URL_COLLECTION_NAME = "tasks";
public TaskProvider() {
super(
AUTHORITY, // authority
URL_COLLECTION_NAME, // collectionNamePlural
TASK_TABLE_NAME, // tableName
UPDATE_INTENT, // update intent action
Tasks.DESCRIPTION, // primary key
BaseColumns._ID, // id field
Tasks.CONTENT_URI, // content URI
BaseColumns._ID, // fields...
Tasks.DESCRIPTION,
Tasks.DETAILS,
Tasks.CONTEXT_ID,
Tasks.PROJECT_ID,
Tasks.CREATED_DATE,
Tasks.START_DATE,
Tasks.DUE_DATE,
Tasks.TIMEZONE,
Tasks.CAL_EVENT_ID,
Tasks.DISPLAY_ORDER,
Tasks.COMPLETE,
Tasks.ALL_DAY,
Tasks.HAS_ALARM,
ShuffleTable.TRACKS_ID,
ShuffleTable.MODIFIED_DATE,
ShuffleTable.DELETED,
ShuffleTable.ACTIVE
);
makeSearchable(Tasks._ID,
Tasks.DESCRIPTION, Tasks.DETAILS,
Tasks.DESCRIPTION, Tasks.DETAILS);
elementInserters.put(COLLECTION_MATCH_ID, new TaskInserter());
setDefaultSortOrder(Tasks.DEFAULT_SORT_ORDER);
}
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 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";
/**
* Projection for all the columns of a task.
*/
public static final String[] FULL_PROJECTION = 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, DELETED, ACTIVE };
}
private class TaskInserter extends ElementInserterImpl {
public TaskInserter() {
super(Tasks.DESCRIPTION);
}
@Override
protected void addDefaultValues(ContentValues values) {
super.addDefaultValues(values);
// Make sure that the fields are all set
Long now = System.currentTimeMillis();
if (!values.containsKey(Tasks.CREATED_DATE)) {
values.put(Tasks.CREATED_DATE, now);
}
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);
}
}
}
}