package com.nuscomputing.ivle.providers; import java.util.HashMap; import java.util.Map; import com.nuscomputing.ivle.Constants; import com.nuscomputing.ivle.DatabaseHelper; import android.annotation.TargetApi; import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.os.Build; import android.text.TextUtils; import android.util.Log; public class IVLEProvider extends ContentProvider { // {{{ properties /** TAG for logging */ public static final String TAG = "IVLEProvider"; /** Defines a handle to the database helper object */ private DatabaseHelper mDatabaseHelper; /** Holds the database object */ private SQLiteDatabase mDatabase; /** A UriMatcher object to match ContentProvider URIs */ private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); /** Possible content provider paths */ private static final int MODULES = 1; private static final int MODULES_ID = 2; private static final int MODULES_ANNOUNCEMENTS = 3; private static final int MODULES_ANNOUNCEMENTS_ID = 4; private static final int MODULES_GRADEBOOKS = 5; private static final int MODULES_GRADEBOOKS_ID = 6; private static final int MODULES_GRADEBOOK_ITEMS = 7; private static final int MODULES_GRADEBOOK_ITEMS_ID = 8; private static final int MODULES_WEBCASTS = 9; private static final int MODULES_WEBCASTS_ID = 10; private static final int MODULES_WEBCAST_FILES = 11; private static final int MODULES_WEBCAST_FILES_ID = 12; private static final int MODULES_WEBCAST_ITEM_GROUPS = 13; private static final int MODULES_WEBCAST_ITEM_GROUPS_ID = 14; private static final int MODULES_WEBLINKS = 15; private static final int MODULES_WEBLINKS_ID = 16; private static final int MODULES_WORKBINS = 17; private static final int MODULES_WORKBINS_ID = 18; private static final int MODULES_WORKBIN_FOLDERS = 19; private static final int MODULES_WORKBIN_FOLDERS_ID = 20; private static final int MODULES_WORKBIN_FILES = 21; private static final int MODULES_WORKBIN_FILES_ID = 22; private static final int ANNOUNCEMENTS = 23; private static final int ANNOUNCEMENTS_ID = 24; private static final int GRADEBOOKS = 25; private static final int GRADEBOOKS_ID = 26; private static final int GRADEBOOK_ITEMS = 27; private static final int GRADEBOOK_ITEMS_ID = 28; private static final int TIMETABLE_SLOTS = 29; private static final int TIMETABLE_SLOTS_ID = 30; private static final int USERS = 31; private static final int USERS_ID = 32; private static final int WEBCASTS = 33; private static final int WEBCASTS_ID = 34; private static final int WEBCAST_FILES = 35; private static final int WEBCAST_FILES_ID = 36; private static final int WEBCAST_ITEM_GROUPS = 37; private static final int WEBCAST_ITEM_GROUPS_ID = 38; private static final int WEBLINKS = 39; private static final int WEBLINKS_ID = 40; private static final int WORKBINS = 41; private static final int WORKBINS_ID = 42; private static final int WORKBIN_FOLDERS = 43; private static final int WORKBIN_FOLDERS_ID = 44; private static final int WORKBIN_FILES = 45; private static final int WORKBIN_FILES_ID = 46; // }}} // {{{ methods static { sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules", MODULES); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#", MODULES_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/announcements", MODULES_ANNOUNCEMENTS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/announcements/#", MODULES_ANNOUNCEMENTS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/gradebooks", MODULES_GRADEBOOKS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/gradebooks/#", MODULES_GRADEBOOKS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/gradebook_items", MODULES_GRADEBOOK_ITEMS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/gradebook_items/#", MODULES_GRADEBOOK_ITEMS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/webcasts", MODULES_WEBCASTS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/webcasts/#", MODULES_WEBCASTS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/webcast_files", MODULES_WEBCAST_FILES); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/webcast_files/#", MODULES_WEBCAST_FILES_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/webcast_item_groups", MODULES_WEBCAST_ITEM_GROUPS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/webcast_item_groups/#", MODULES_WEBCAST_ITEM_GROUPS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/weblinks", MODULES_WEBLINKS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/weblinks/#", MODULES_WEBLINKS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/workbins", MODULES_WORKBINS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/workbins/#", MODULES_WORKBINS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/workbin_folders", MODULES_WORKBIN_FOLDERS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/workbin_folders/#", MODULES_WORKBIN_FOLDERS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/workbin_files", MODULES_WORKBIN_FILES); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "modules/#/workbin_files/#", MODULES_WORKBIN_FILES_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "announcements", ANNOUNCEMENTS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "announcements/#", ANNOUNCEMENTS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "gradebooks", GRADEBOOKS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "gradebooks/#", GRADEBOOKS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "gradebook_items", GRADEBOOK_ITEMS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "gradebook_items/#", GRADEBOOK_ITEMS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "timetable_slots", TIMETABLE_SLOTS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "timetable_slots/#", TIMETABLE_SLOTS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "users", USERS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "users/#", USERS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "webcasts", WEBCASTS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "webcasts/#", WEBCASTS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "webcast_files", WEBCAST_FILES); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "webcast_files/#", WEBCAST_FILES_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "webcast_item_groups", WEBCAST_ITEM_GROUPS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "webcast_item_groups/#", WEBCAST_ITEM_GROUPS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "weblinks", WEBLINKS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "weblinks/#", WEBLINKS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "workbins", WORKBINS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "workbins/#", WORKBINS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "workbin_folders", WORKBIN_FOLDERS); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "workbin_folders/#", WORKBIN_FOLDERS_ID); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "workbin_files", WORKBIN_FILES); sUriMatcher.addURI(Constants.PROVIDER_AUTHORITY, "workbin_files/#", WORKBIN_FILES_ID); } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { // Obtain a writable database if it doesn't exist yet. if (mDatabase == null) { mDatabase = mDatabaseHelper.getWritableDatabase(); } // Build query based on URI. int ret = -1; String moduleId = null; String whereClause = null; switch (sUriMatcher.match(uri)) { case MODULES: ret = mDatabase.delete(DatabaseHelper.MODULES_TABLE_NAME, selection, selectionArgs); break; case MODULES_ID: moduleId = uri.getLastPathSegment(); whereClause = ModulesContract.ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.MODULES_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_ANNOUNCEMENTS: moduleId = uri.getPathSegments().get(2); whereClause = AnnouncementsContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_ANNOUNCEMENTS_ID: moduleId = uri.getPathSegments().get(2); whereClause = AnnouncementsContract.MODULE_ID + "=" + moduleId + " AND " + AnnouncementsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_GRADEBOOKS: moduleId = uri.getPathSegments().get(2); whereClause = GradebooksContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.GRADEBOOKS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_GRADEBOOKS_ID: moduleId = uri.getPathSegments().get(2); whereClause = GradebooksContract.MODULE_ID + "=" + moduleId + " AND " + GradebooksContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.GRADEBOOKS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_GRADEBOOK_ITEMS: moduleId = uri.getPathSegments().get(2); whereClause = GradebookItemsContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_GRADEBOOK_ITEMS_ID: moduleId = uri.getPathSegments().get(2); whereClause = GradebookItemsContract.MODULE_ID + "=" + moduleId + " AND " + GradebookItemsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBCASTS: moduleId = uri.getPathSegments().get(2); whereClause = WebcastsContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCASTS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBCASTS_ID: moduleId = uri.getPathSegments().get(2); whereClause = WebcastsContract.MODULE_ID + "=" + moduleId + " AND " + WebcastsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCASTS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBCAST_FILES: moduleId = uri.getPathSegments().get(2); whereClause = WebcastFilesContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCAST_FILES_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBCAST_FILES_ID: moduleId = uri.getPathSegments().get(2); whereClause = WebcastFilesContract.MODULE_ID + "=" + moduleId + " AND " + WebcastFilesContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCAST_FILES_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBCAST_ITEM_GROUPS: moduleId = uri.getPathSegments().get(2); whereClause = WebcastItemGroupsContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBCAST_ITEM_GROUPS_ID: moduleId = uri.getPathSegments().get(2); whereClause = WebcastItemGroupsContract.MODULE_ID + "=" + moduleId + " AND " + WebcastItemGroupsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBLINKS: moduleId = uri.getPathSegments().get(2); whereClause = WeblinksContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBLINKS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WEBLINKS_ID: moduleId = uri.getPathSegments().get(2); whereClause = WeblinksContract.MODULE_ID + "=" + moduleId + " AND " + WeblinksContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBLINKS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WORKBINS: moduleId = uri.getPathSegments().get(2); whereClause = WorkbinsContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBINS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WORKBINS_ID: moduleId = uri.getPathSegments().get(2); whereClause = WorkbinsContract.MODULE_ID + "=" + moduleId + " AND " + WorkbinsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBINS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WORKBIN_FOLDERS: moduleId = uri.getPathSegments().get(2); whereClause = WorkbinFoldersContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WORKBIN_FOLDERS_ID: moduleId = uri.getPathSegments().get(2); whereClause = WorkbinFoldersContract.MODULE_ID + "=" + moduleId + " AND " + WorkbinFoldersContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WORKBIN_FILES: moduleId = uri.getPathSegments().get(2); whereClause = WorkbinFilesContract.MODULE_ID + "=" + moduleId + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBIN_FILES_TABLE_NAME, whereClause, selectionArgs); break; case MODULES_WORKBIN_FILES_ID: moduleId = uri.getPathSegments().get(2); whereClause = WorkbinFilesContract.MODULE_ID + "=" + moduleId + " AND " + WorkbinFilesContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBIN_FILES_TABLE_NAME, whereClause, selectionArgs); break; case ANNOUNCEMENTS_ID: whereClause = AnnouncementsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME, whereClause, selectionArgs); break; case ANNOUNCEMENTS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all announcements"); } ret = mDatabase.delete(DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME, selection, selectionArgs); break; case GRADEBOOKS_ID: whereClause = GradebooksContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.GRADEBOOKS_TABLE_NAME, whereClause, selectionArgs); break; case GRADEBOOKS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all gradebooks"); } ret = mDatabase.delete(DatabaseHelper.GRADEBOOKS_TABLE_NAME, selection, selectionArgs); break; case GRADEBOOK_ITEMS_ID: whereClause = GradebookItemsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME, whereClause, selectionArgs); break; case GRADEBOOK_ITEMS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all gradebook items"); } ret = mDatabase.delete(DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME, selection, selectionArgs); break; case TIMETABLE_SLOTS_ID: whereClause = TimetableSlotsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.TIMETABLE_SLOTS_TABLE_NAME, whereClause, selectionArgs); break; case TIMETABLE_SLOTS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all timetable slots"); } ret = mDatabase.delete(DatabaseHelper.TIMETABLE_SLOTS_TABLE_NAME, selection, selectionArgs); break; case USERS_ID: whereClause = UsersContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.USERS_TABLE_NAME, whereClause, selectionArgs); break; case USERS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all users"); } ret = mDatabase.delete(DatabaseHelper.USERS_TABLE_NAME, selection, selectionArgs); break; case WEBCASTS_ID: whereClause = WebcastsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCASTS_TABLE_NAME, whereClause, selectionArgs); break; case WEBCASTS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all webcasts"); } ret = mDatabase.delete(DatabaseHelper.WEBCASTS_TABLE_NAME, selection, selectionArgs); break; case WEBCAST_FILES_ID: whereClause = WebcastFilesContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCAST_FILES_TABLE_NAME, whereClause, selectionArgs); break; case WEBCAST_FILES: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all webcast files"); } ret = mDatabase.delete(DatabaseHelper.WEBCAST_FILES_TABLE_NAME, selection, selectionArgs); break; case WEBCAST_ITEM_GROUPS_ID: whereClause = WebcastItemGroupsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME, whereClause, selectionArgs); break; case WEBCAST_ITEM_GROUPS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all webcast item groups"); } ret = mDatabase.delete(DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME, selection, selectionArgs); break; case WEBLINKS_ID: whereClause = WeblinksContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WEBLINKS_TABLE_NAME, whereClause, selectionArgs); break; case WEBLINKS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all weblinks"); } ret = mDatabase.delete(DatabaseHelper.WEBLINKS_TABLE_NAME, selection, selectionArgs); break; case WORKBINS_ID: whereClause = WorkbinsContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBINS_TABLE_NAME, whereClause, selectionArgs); break; case WORKBINS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all workbins"); } ret = mDatabase.delete(DatabaseHelper.WORKBINS_TABLE_NAME, selection, selectionArgs); break; case WORKBIN_FOLDERS_ID: whereClause = WorkbinFoldersContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME, whereClause, selectionArgs); break; case WORKBIN_FOLDERS: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all workbin folders"); } ret = mDatabase.delete(DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME, selection, selectionArgs); break; case WORKBIN_FILES_ID: whereClause = WorkbinFilesContract.ID + "=" + uri.getLastPathSegment() + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : ""); ret = mDatabase.delete(DatabaseHelper.WORKBIN_FILES_TABLE_NAME, whereClause, selectionArgs); break; case WORKBIN_FILES: if (selection == null && selectionArgs == null) { Log.d(TAG, "Removing all workbin files"); } ret = mDatabase.delete(DatabaseHelper.WORKBIN_FILES_TABLE_NAME, selection, selectionArgs); break; default: throw new IllegalArgumentException(); } return ret; } @Override public String getType(Uri uri) { // TODO Auto-generated method stub Log.d(TAG, "getType not implemented yet"); return null; } @Override public Uri insert(Uri uri, ContentValues values) { // Obtain a writable database if it doesn't exist yet. if (mDatabase == null) { mDatabase = mDatabaseHelper.getWritableDatabase(); } // Build query based on URI. String selection = null; String announcementId = null; String gradebookId = null; String gradebookItemId = null; String moduleId = null; String timetableSlotId = null; String userId = null; String webcastId = null; String webcastFileId = null; String webcastItemGroupId = null; String weblinkId = null; String workbinId = null; String workbinFolderId = null; String workbinFileId = null; long rowId = 0; switch (sUriMatcher.match(uri)) { case MODULES: rowId = mDatabase.insert(DatabaseHelper.MODULES_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case MODULES_ID: moduleId = uri.getLastPathSegment(); selection = ModulesContract.ID + " = " + moduleId; this.update(uri, values, selection, null); break; case MODULES_ANNOUNCEMENTS_ID: moduleId = uri.getPathSegments().get(2); announcementId = uri.getLastPathSegment(); selection = AnnouncementsContract.MODULE_ID + " = " + moduleId + " AND " + AnnouncementsContract.ID + " = " + announcementId; this.update(uri, values, selection, null); break; case MODULES_GRADEBOOKS_ID: moduleId = uri.getPathSegments().get(2); gradebookId = uri.getLastPathSegment(); selection = GradebooksContract.MODULE_ID + " = " + moduleId + " AND " + GradebooksContract.ID + " = " + gradebookId; this.update(uri, values, selection, null); break; case MODULES_GRADEBOOK_ITEMS_ID: moduleId = uri.getPathSegments().get(2); gradebookItemId = uri.getLastPathSegment(); selection = GradebookItemsContract.MODULE_ID + "=" + moduleId + " AND " + GradebookItemsContract.ID + " = " + gradebookItemId; this.update(uri, values, selection, null); case MODULES_WEBCASTS_ID: moduleId = uri.getPathSegments().get(2); webcastId = uri.getLastPathSegment(); selection = WebcastsContract.MODULE_ID + " = " + moduleId + " AND " + WebcastsContract.ID + " = " + webcastId; this.update(uri, values, selection, null); break; case MODULES_WEBCAST_FILES_ID: moduleId = uri.getPathSegments().get(2); webcastFileId = uri.getLastPathSegment(); selection = WebcastFilesContract.MODULE_ID + " = " + moduleId + " AND " + WebcastFilesContract.ID + " = " + webcastFileId; this.update(uri, values, selection, null); break; case MODULES_WEBCAST_ITEM_GROUPS_ID: moduleId = uri.getPathSegments().get(2); webcastItemGroupId = uri.getLastPathSegment(); selection = WebcastItemGroupsContract.MODULE_ID + "=" + moduleId + " AND " + WebcastItemGroupsContract.ID + " = " + webcastItemGroupId; this.update(uri, values, selection, null); case MODULES_WEBLINKS_ID: moduleId = uri.getPathSegments().get(2); weblinkId = uri.getLastPathSegment(); selection = WeblinksContract.MODULE_ID + " = " + moduleId + " AND " + WeblinksContract.ID + " = " + weblinkId; this.update(uri, values, selection, null); break; case MODULES_WORKBINS_ID: moduleId = uri.getPathSegments().get(2); workbinId = uri.getLastPathSegment(); selection = WorkbinsContract.MODULE_ID + " = " + moduleId + " AND " + WorkbinsContract.ID + " = " + workbinId; this.update(uri, values, selection, null); break; case MODULES_WORKBIN_FOLDERS_ID: moduleId = uri.getPathSegments().get(2); workbinFolderId = uri.getLastPathSegment(); selection = WorkbinFoldersContract.MODULE_ID + " = " + moduleId + " AND " + WorkbinFoldersContract.ID + " = " + workbinFolderId; this.update(uri, values, selection, null); break; case MODULES_WORKBIN_FILES_ID: moduleId = uri.getPathSegments().get(2); workbinFileId = uri.getLastPathSegment(); selection = WorkbinFilesContract.MODULE_ID + " = " + moduleId + " AND " + WorkbinFilesContract.ID + " = " + workbinFileId; this.update(uri, values, selection, null); break; case ANNOUNCEMENTS: rowId = mDatabase.insert(DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case ANNOUNCEMENTS_ID: announcementId = uri.getLastPathSegment(); selection = AnnouncementsContract.ID + " = " + announcementId; this.update(uri, values, selection, null); break; case GRADEBOOKS: rowId = mDatabase.insert(DatabaseHelper.GRADEBOOKS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case GRADEBOOKS_ID: gradebookId = uri.getLastPathSegment(); selection = GradebooksContract.ID + " = " + gradebookId; this.update(uri, values, selection, null); break; case GRADEBOOK_ITEMS: rowId = mDatabase.insert(DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case GRADEBOOK_ITEMS_ID: gradebookItemId = uri.getLastPathSegment(); selection = GradebookItemsContract.ID + "=" + gradebookItemId; this.update(uri, values, selection, null); break; case TIMETABLE_SLOTS: rowId = mDatabase.insert(DatabaseHelper.TIMETABLE_SLOTS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case TIMETABLE_SLOTS_ID: timetableSlotId = uri.getLastPathSegment(); selection = TimetableSlotsContract.ID + "=" + timetableSlotId; this.update(uri, values, selection, null); break; case USERS: rowId = mDatabase.insert(DatabaseHelper.USERS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case USERS_ID: userId = uri.getLastPathSegment(); selection = UsersContract.ID + " = " + userId; this.update(uri, values, selection, null); break; case WEBCASTS: rowId = mDatabase.insert(DatabaseHelper.WEBCASTS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case WEBCASTS_ID: webcastId = uri.getLastPathSegment(); selection = WebcastsContract.ID + " = " + webcastId; this.update(uri, values, selection, null); break; case WEBCAST_FILES: rowId = mDatabase.insert(DatabaseHelper.WEBCAST_FILES_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case WEBCAST_FILES_ID: webcastFileId = uri.getLastPathSegment(); selection = WebcastFilesContract.ID + " = " + webcastFileId; this.update(uri, values, selection, null); break; case WEBCAST_ITEM_GROUPS: rowId = mDatabase.insert(DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case WEBCAST_ITEM_GROUPS_ID: webcastItemGroupId = uri.getLastPathSegment(); selection = WebcastItemGroupsContract.ID + " = " + webcastItemGroupId; this.update(uri, values, selection, null); break; case WEBLINKS: rowId = mDatabase.insert(DatabaseHelper.WEBLINKS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case WEBLINKS_ID: weblinkId = uri.getLastPathSegment(); selection = WeblinksContract.ID + " = " + weblinkId; this.update(uri, values, selection, null); break; case WORKBINS: rowId = mDatabase.insert(DatabaseHelper.WORKBINS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case WORKBINS_ID: workbinId = uri.getLastPathSegment(); selection = WorkbinsContract.ID + " = " + workbinId; this.update(uri, values, selection, null); break; case WORKBIN_FOLDERS: rowId = mDatabase.insert(DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case WORKBIN_FOLDERS_ID: workbinFolderId = uri.getLastPathSegment(); selection = WorkbinFoldersContract.ID + " = " + workbinFolderId; this.update(uri, values, selection, null); break; case WORKBIN_FILES: rowId = mDatabase.insert(DatabaseHelper.WORKBIN_FILES_TABLE_NAME, null, values); uri = Uri.withAppendedPath(uri, Long.toString(rowId)); break; case WORKBIN_FILES_ID: workbinFileId = uri.getLastPathSegment(); selection = WorkbinFilesContract.ID + " = " + workbinFileId; this.update(uri, values, selection, null); break; default: throw new IllegalArgumentException(); } return uri; } @Override public boolean onCreate() { // Create a new helper object. This method always returns quickly. Log.v(TAG, "AnnouncementsProvider created"); mDatabaseHelper = new DatabaseHelper(getContext()); if (mDatabaseHelper == null) { return false; } return true; } @SuppressWarnings("deprecation") @TargetApi(11) @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // Obtain a writable database if it doesn't exist yet. if (mDatabase == null) { mDatabase = mDatabaseHelper.getWritableDatabase(); } // Use a query builder. SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); // Build query based on URI. Log.v(TAG, "query received, uri = " + uri); switch (sUriMatcher.match(uri)) { case MODULES_ID: queryBuilder.appendWhere( DatabaseHelper.MODULES_TABLE_NAME + "." + ModulesContract.ID + "=" + uri.getLastPathSegment() ); break; case MODULES_ANNOUNCEMENTS_ID: queryBuilder.appendWhere( DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_ANNOUNCEMENTS: // Fall through queryBuilder.appendWhere( DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_GRADEBOOKS_ID: queryBuilder.appendWhere( DatabaseHelper.GRADEBOOKS_TABLE_NAME + "." + GradebooksContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_GRADEBOOKS: // Fall through queryBuilder.appendWhere( DatabaseHelper.GRADEBOOKS_TABLE_NAME + "." + GradebooksContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_GRADEBOOK_ITEMS_ID: queryBuilder.appendWhere( DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME + "." + GradebookItemsContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_GRADEBOOK_ITEMS: // Fall through queryBuilder.appendWhere( DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME + "." + GradebookItemsContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_WEBCASTS_ID: queryBuilder.appendWhere( DatabaseHelper.WEBCASTS_TABLE_NAME + "." + WebcastsContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_WEBCASTS: // Fall through queryBuilder.appendWhere( DatabaseHelper.WEBCASTS_TABLE_NAME + "." + WebcastsContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_WEBCAST_FILES_ID: queryBuilder.appendWhere( DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_WEBCAST_FILES: // Fall through queryBuilder.appendWhere( DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_WEBCAST_ITEM_GROUPS_ID: queryBuilder.appendWhere( DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME + "." + WebcastItemGroupsContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_WEBCAST_ITEM_GROUPS: // Fall through queryBuilder.appendWhere( DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME + "." + WebcastItemGroupsContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_WEBLINKS_ID: queryBuilder.appendWhere( DatabaseHelper.WEBLINKS_TABLE_NAME + "." + WeblinksContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_WEBLINKS: // Fall through queryBuilder.appendWhere( DatabaseHelper.WEBLINKS_TABLE_NAME + "." + WeblinksContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_WORKBINS_ID: queryBuilder.appendWhere( DatabaseHelper.WORKBINS_TABLE_NAME + "." + WorkbinsContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_WORKBINS: // Fall through queryBuilder.appendWhere( DatabaseHelper.WORKBINS_TABLE_NAME + "." + WorkbinsContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_WORKBIN_FOLDERS_ID: queryBuilder.appendWhere( DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_WORKBIN_FOLDERS: // Fall through queryBuilder.appendWhere( DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case MODULES_WORKBIN_FILES_ID: queryBuilder.appendWhere( DatabaseHelper.WORKBIN_FILES_TABLE_NAME + "." + WorkbinFilesContract.ID + "=" + uri.getLastPathSegment() ); case MODULES_WORKBIN_FILES: // Fall through queryBuilder.appendWhere( DatabaseHelper.WORKBIN_FILES_TABLE_NAME + "." + WorkbinFilesContract.MODULE_ID + "=" + uri.getPathSegments().get(1) ); break; case ANNOUNCEMENTS_ID: queryBuilder.appendWhere( DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.ID + "=" + uri.getPathSegments().get(1) ); break; case GRADEBOOKS_ID: queryBuilder.appendWhere( DatabaseHelper.GRADEBOOKS_TABLE_NAME + "." + GradebooksContract.ID + "=" + uri.getPathSegments().get(1) ); break; case GRADEBOOK_ITEMS_ID: queryBuilder.appendWhere( DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME + "." + GradebookItemsContract.ID + "=" + uri.getPathSegments().get(1) ); break; case TIMETABLE_SLOTS_ID: queryBuilder.appendWhere( DatabaseHelper.TIMETABLE_SLOTS_TABLE_NAME + "." + TimetableSlotsContract.ID + "=" + uri.getPathSegments().get(1) ); break; case USERS_ID: queryBuilder.appendWhere( DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.ID + "=" + uri.getPathSegments().get(1) ); break; case WEBCASTS_ID: queryBuilder.appendWhere( DatabaseHelper.WEBCASTS_TABLE_NAME + "." + WebcastsContract.ID + "=" + uri.getPathSegments().get(1) ); break; case WEBCAST_FILES_ID: queryBuilder.appendWhere( DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.ID + "=" + uri.getPathSegments().get(1) ); break; case WEBCAST_ITEM_GROUPS_ID: queryBuilder.appendWhere( DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME + "." + WebcastItemGroupsContract.ID + "=" + uri.getPathSegments().get(1) ); break; case WEBLINKS_ID: queryBuilder.appendWhere( DatabaseHelper.WEBLINKS_TABLE_NAME + "." + WeblinksContract.ID + "=" + uri.getPathSegments().get(1) ); break; case WORKBINS_ID: queryBuilder.appendWhere( DatabaseHelper.WORKBINS_TABLE_NAME + "." + WorkbinsContract.ID + "=" + uri.getPathSegments().get(1) ); break; case WORKBIN_FOLDERS_ID: queryBuilder.appendWhere( DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.ID + "=" + uri.getPathSegments().get(1) ); break; case WORKBIN_FILES_ID: queryBuilder.appendWhere( DatabaseHelper.WORKBIN_FILES_TABLE_NAME + "." + WorkbinFilesContract.ID + "" + uri.getPathSegments().get(1) ); break; case MODULES: case ANNOUNCEMENTS: case GRADEBOOKS: case GRADEBOOK_ITEMS: case TIMETABLE_SLOTS: case USERS: case WEBCASTS: case WEBCAST_FILES: case WEBCAST_ITEM_GROUPS: case WEBLINKS: case WORKBINS: case WORKBIN_FOLDERS: case WORKBIN_FILES: break; default: throw new IllegalArgumentException(); } // Set table names and projection maps. Map<String, String> projectionMap = new HashMap<String, String>(); switch (sUriMatcher.match(uri)) { case MODULES_ID: case MODULES: // Set table names and joins. queryBuilder.setTables( DatabaseHelper.MODULES_TABLE_NAME + " JOIN " + DatabaseHelper.USERS_TABLE_NAME + " ON " + "(" + DatabaseHelper.MODULES_TABLE_NAME + "." + ModulesContract.CREATOR_ID + "=" + DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.ID + ")" ); // Set projection maps. projectionMap.put(ModulesContract.ID, DatabaseHelper.MODULES_TABLE_NAME + "." + ModulesContract.ID); projectionMap.putAll(new ModulesContract().getJoinProjectionMap("")); projectionMap.putAll(new UsersContract().getJoinProjectionMap("creator_")); queryBuilder.setProjectionMap(projectionMap); break; case MODULES_ANNOUNCEMENTS_ID: case MODULES_ANNOUNCEMENTS: case ANNOUNCEMENTS_ID: case ANNOUNCEMENTS: // Set table names and joins. queryBuilder.setTables( DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + " JOIN " + DatabaseHelper.MODULES_TABLE_NAME + " ON (" + DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.MODULE_ID + "=" + DatabaseHelper.MODULES_TABLE_NAME + "." + ModulesContract.ID + ") JOIN " + DatabaseHelper.USERS_TABLE_NAME + " ON (" + DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.CREATOR_ID + "=" + DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.ID + ")" ); // Set projection maps. projectionMap.put(AnnouncementsContract.ID, DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.ID); projectionMap.putAll(new AnnouncementsContract().getJoinProjectionMap("")); projectionMap.putAll(new ModulesContract().getJoinProjectionMap("module_")); projectionMap.putAll(new UsersContract().getJoinProjectionMap("creator_")); queryBuilder.setProjectionMap(projectionMap); break; case MODULES_GRADEBOOKS_ID: case MODULES_GRADEBOOKS: case GRADEBOOKS_ID: case GRADEBOOKS: queryBuilder.setTables(DatabaseHelper.GRADEBOOKS_TABLE_NAME); break; case MODULES_GRADEBOOK_ITEMS_ID: case MODULES_GRADEBOOK_ITEMS: case GRADEBOOK_ITEMS_ID: case GRADEBOOK_ITEMS: queryBuilder.setTables(DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME); break; case TIMETABLE_SLOTS_ID: case TIMETABLE_SLOTS: queryBuilder.setTables(DatabaseHelper.TIMETABLE_SLOTS_TABLE_NAME); break; case USERS_ID: case USERS: queryBuilder.setTables(DatabaseHelper.USERS_TABLE_NAME); break; case MODULES_WEBCASTS_ID: case MODULES_WEBCASTS: case WEBCASTS_ID: case WEBCASTS: queryBuilder.setTables(DatabaseHelper.WEBCASTS_TABLE_NAME); break; case MODULES_WEBCAST_FILES_ID: case MODULES_WEBCAST_FILES: case WEBCAST_FILES_ID: case WEBCAST_FILES: // IVLE webcast files is broken! They all have no creator IDs. // Set table names and joins. queryBuilder.setTables(DatabaseHelper.WEBCAST_FILES_TABLE_NAME); /* queryBuilder.setTables( DatabaseHelper.WEBCAST_FILES_TABLE_NAME + " JOIN " + DatabaseHelper.USERS_TABLE_NAME + " ON " + "(" + DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.CREATOR_ID + " = " + DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.ID + ")" ); */ // Set projection maps. /* projectionMap.put(WebcastFilesContract.ID, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.ID); projectionMap.put(WebcastFilesContract.IVLE_ID, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.IVLE_ID); projectionMap.put(WebcastFilesContract.MODULE_ID, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.MODULE_ID); projectionMap.put(WebcastFilesContract.ACCOUNT, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.ACCOUNT); projectionMap.put(WebcastFilesContract.CREATOR_ID, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.CREATOR_ID); projectionMap.put(WebcastFilesContract.WEBCAST_ITEM_GROUP_ID, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.WEBCAST_ITEM_GROUP_ID); projectionMap.put(WebcastFilesContract.BANK_ITEM_ID, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.BANK_ITEM_ID); projectionMap.put(WebcastFilesContract.CREATE_DATE, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.CREATE_DATE); projectionMap.put(WebcastFilesContract.FILE_DESCRIPTION, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.FILE_DESCRIPTION); projectionMap.put(WebcastFilesContract.FILE_NAME, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.FILE_NAME); projectionMap.put(WebcastFilesContract.FILE_TITLE, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.FILE_TITLE); projectionMap.put(WebcastFilesContract.MP3, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.MP3); projectionMap.put(WebcastFilesContract.MP4, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.MP4); projectionMap.put(WebcastFilesContract.MEDIA_FORMAT, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.MEDIA_FORMAT); projectionMap.put(WebcastFilesContract.IS_READ, DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.IS_READ); projectionMap.put("creator_" + UsersContract.IVLE_ID, DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.IVLE_ID); projectionMap.put("creator_" + UsersContract.ACCOUNT, DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.ACCOUNT); projectionMap.put("creator_" + UsersContract.ACCOUNT_TYPE, DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.ACCOUNT_TYPE); projectionMap.put("creator_" + UsersContract.EMAIL, DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.EMAIL); projectionMap.put("creator_" + UsersContract.NAME, DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.NAME); projectionMap.put("creator_" + UsersContract.TITLE, DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.TITLE); projectionMap.put("creator_" + UsersContract.USER_ID, DatabaseHelper.USERS_TABLE_NAME + "." + UsersContract.USER_ID); queryBuilder.setProjectionMap(projectionMap); */ break; case MODULES_WEBCAST_ITEM_GROUPS_ID: case MODULES_WEBCAST_ITEM_GROUPS: case WEBCAST_ITEM_GROUPS_ID: case WEBCAST_ITEM_GROUPS: queryBuilder.setTables(DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME); break; case MODULES_WEBLINKS_ID: case MODULES_WEBLINKS: case WEBLINKS_ID: case WEBLINKS: queryBuilder.setTables(DatabaseHelper.WEBLINKS_TABLE_NAME); break; case MODULES_WORKBINS_ID: case MODULES_WORKBINS: case WORKBINS_ID: case WORKBINS: queryBuilder.setTables(DatabaseHelper.WORKBINS_TABLE_NAME); break; case MODULES_WORKBIN_FOLDERS_ID: case MODULES_WORKBIN_FOLDERS: case WORKBIN_FOLDERS_ID: case WORKBIN_FOLDERS: queryBuilder.setTables(DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME); break; case MODULES_WORKBIN_FILES_ID: case MODULES_WORKBIN_FILES: case WORKBIN_FILES_ID: case WORKBIN_FILES: queryBuilder.setTables(DatabaseHelper.WORKBIN_FILES_TABLE_NAME); break; default: throw new IllegalArgumentException(); } // Projection map to include user information. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { Log.v(TAG, "query: " + queryBuilder.buildQuery(projection, selection, null, null, sortOrder, null)); } else { Log.v(TAG, "query: " + queryBuilder.buildQuery(projection, selection, null, null, null, sortOrder, null)); } Cursor cursor = queryBuilder.query(mDatabase, projection, selection, selectionArgs, null, null, sortOrder); cursor.setNotificationUri(getContext().getContentResolver(), uri); return cursor; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // Obtain a writable database if it doesn't exist yet. if (mDatabase == null) { mDatabase = mDatabaseHelper.getWritableDatabase(); } String tableName = null; switch (sUriMatcher.match(uri)) { case MODULES_ID: case MODULES: tableName = DatabaseHelper.MODULES_TABLE_NAME; break; case MODULES_ANNOUNCEMENTS_ID: case MODULES_ANNOUNCEMENTS: case ANNOUNCEMENTS_ID: case ANNOUNCEMENTS: tableName = DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME; break; case MODULES_GRADEBOOKS_ID: case MODULES_GRADEBOOKS: case GRADEBOOKS_ID: case GRADEBOOKS: tableName = DatabaseHelper.GRADEBOOKS_TABLE_NAME; break; case MODULES_GRADEBOOK_ITEMS_ID: case MODULES_GRADEBOOK_ITEMS: case GRADEBOOK_ITEMS_ID: case GRADEBOOK_ITEMS: tableName = DatabaseHelper.GRADEBOOK_ITEMS_TABLE_NAME; break; case TIMETABLE_SLOTS_ID: case TIMETABLE_SLOTS: tableName = DatabaseHelper.TIMETABLE_SLOTS_TABLE_NAME; break; case USERS_ID: case USERS: tableName = DatabaseHelper.USERS_TABLE_NAME; break; case MODULES_WEBCASTS_ID: case MODULES_WEBCASTS: case WEBCASTS_ID: case WEBCASTS: tableName = DatabaseHelper.WEBCASTS_TABLE_NAME; break; case MODULES_WEBCAST_FILES_ID: case MODULES_WEBCAST_FILES: case WEBCAST_FILES_ID: case WEBCAST_FILES: tableName = DatabaseHelper.WEBCAST_FILES_TABLE_NAME; break; case MODULES_WEBCAST_ITEM_GROUPS_ID: case MODULES_WEBCAST_ITEM_GROUPS: case WEBCAST_ITEM_GROUPS_ID: case WEBCAST_ITEM_GROUPS: tableName = DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME; break; case MODULES_WEBLINKS_ID: case MODULES_WEBLINKS: case WEBLINKS_ID: case WEBLINKS: tableName = DatabaseHelper.WEBLINKS_TABLE_NAME; break; case MODULES_WORKBINS_ID: case MODULES_WORKBINS: case WORKBINS_ID: case WORKBINS: tableName = DatabaseHelper.WORKBINS_TABLE_NAME; break; case MODULES_WORKBIN_FOLDERS_ID: case MODULES_WORKBIN_FOLDERS: case WORKBIN_FOLDERS_ID: case WORKBIN_FOLDERS: tableName = DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME; break; case MODULES_WORKBIN_FILES_ID: case MODULES_WORKBIN_FILES: case WORKBIN_FILES_ID: case WORKBIN_FILES: tableName = DatabaseHelper.WORKBIN_FILES_TABLE_NAME; break; default: throw new IllegalArgumentException(); } int ret = mDatabase.update(tableName, values, selection, selectionArgs); return ret; } // }}} }