/*
* Copyright (c) 2013 Allogy Interactive.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.allogy.app.provider;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
/**
*
* @author Jamie Huson
*
*/
public class AcademicProvider extends ContentProvider {
private static final String LOG_TAG = "AcademicProvider";
private static final String DATABASE_NAME = "AcademicProvider.db";
private static final int DATABASE_VERSION = 7;
// uri constants
private static final int PUBLISHER = 0;
private static final int PUBLISHER_ID = 1;
private static final int INSTRUCTOR = 2;
private static final int INSTRUCTOR_ID = 3;
private static final int USERS = 4;
private static final int USERS_ID = 5;
private static final int COURSE = 6;
private static final int COURSE_ID = 7;
private static final int LESSON = 8;
private static final int LESSON_ID = 9;
private static final int LESSON_FILES = 10;
private static final int LESSON_FILES_ID = 11;
private static final int BOOK = 12;
private static final int BOOK_ID = 13;
private static final int LIST = 14;
private static final int LIST_ID = 15;
private static final int BOOK_LIST = 16;
private static final int BOOK_LIST_ID = 17;
private static final int DEADLINE = 18;
private static final int DEADLINE_ID = 19;
private static final int ACHIEVEMENT = 20;
private static final int ACHIEVEMENT_ID = 21;
private static final int PROGRESS = 22;
private static final int PROGRESS_ID = 23;
private static final UriMatcher mUriMatcher;
static {
mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Publishers.URI_PATH,
PUBLISHER);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Publishers.URI_PATH
+ "/#", PUBLISHER_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Instructors.URI_PATH,
INSTRUCTOR);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Instructors.URI_PATH
+ "/#", INSTRUCTOR_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Users.URI_PATH, USERS);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Users.URI_PATH + "/#",
USERS_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Courses.URI_PATH,
COURSE);
mUriMatcher.addURI(Academic.AUTHORITY,
Academic.Courses.URI_PATH + "/#", COURSE_ID);
mUriMatcher
.addURI(Academic.AUTHORITY, Academic.Lesson.URI_PATH, LESSON);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Lesson.URI_PATH + "/#",
LESSON_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.LessonFiles.URI_PATH,
LESSON_FILES);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.LessonFiles.URI_PATH
+ "/#", LESSON_FILES_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Book.URI_PATH, BOOK);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Book.URI_PATH + "/#",
BOOK_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.List.URI_PATH, LIST);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.List.URI_PATH + "/#",
LIST_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Book_List.URI_PATH,
BOOK_LIST);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Book_List.URI_PATH
+ "/#", BOOK_LIST_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Deadline.URI_PATH,
DEADLINE);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Deadline.URI_PATH
+ "/#", DEADLINE_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Achievements.URI_PATH,
ACHIEVEMENT);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Achievements.URI_PATH
+ "/#", ACHIEVEMENT_ID);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Progress.URI_PATH,
PROGRESS);
mUriMatcher.addURI(Academic.AUTHORITY, Academic.Progress.URI_PATH
+ "/#", PROGRESS_ID);
}
/**
* This class helps open, create, and upgrade the database file.
*/
private static class DatabaseHelper extends SQLiteOpenHelper {
// create table scripts
private static final String CREATE_PUBLISHERS = String
.format("CREATE TABLE %s (%s integer primary key,"
+ " %s text not null, %s text not null, %s text not null, "
+ "%s text not null, %s text not null, %s text not null, "
+ "%s text, %s text not null, %s text, "
+ "%s text not null, %s text not null, %s text not null, "
+ "%s text not null)", Academic.Publishers.TABLE_NAME,
Academic.Publishers._ID, Academic.Publishers.TITLE,
Academic.Publishers.DESCRIPTION,
Academic.Publishers.LOGO,
Academic.Publishers.ADDRESS_LINE_1,
Academic.Publishers.ADDRESS_LINE_2,
Academic.Publishers.CITY, Academic.Publishers.REGION,
Academic.Publishers.COUNTRY,
Academic.Publishers.POSTAL_CODE,
Academic.Publishers.INSTITUTION,
Academic.Publishers.WEBSITE, Academic.Publishers.EMAIL,
Academic.Publishers.PHONE);
private static final String CREATE_INSTRUCTORS = String.format(
"CREATE TABLE %s (%s integer primary key,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null)",
Academic.Instructors.TABLE_NAME, Academic.Instructors._ID,
Academic.Instructors.FIRST_NAME,
Academic.Instructors.LAST_NAME, Academic.Instructors.USERNAME,
Academic.Instructors.BIO, Academic.Instructors.EMAIL,
Academic.Instructors.PHONE, Academic.Instructors.URL);
private static final String CREATE_USERS = String.format(
"CREATE TABLE %s (%s integer primary key autoincrement,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null)", Academic.Users.TABLE_NAME,
Academic.Users._ID, Academic.Users.FIRST_NAME,
Academic.Users.LAST_NAME, Academic.Users.USERNAME);
// Because the default _id attribute was used for storing the course_id from the xml file
// another primary key is created which auto increments after each entry. This column can be
// used for ordering the list in the lesson list
private static final String CREATE_COURSES = String.format(
"CREATE TABLE %s (%s integer not null,"
+ " %s integer not null," + " %s text not null,"
+ " %s integer not null," + " %s integer not null,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null," + " %s text not null,"
+ " %s integer not null," + " %s integer primary key AUTOINCREMENT)",
Academic.Courses.TABLE_NAME,
Academic.Courses._ID, Academic.Courses.PUBLISHER_ID,
Academic.Courses.TITLE, Academic.Courses.INSTRUCTOR_ID,
Academic.Courses.CREDITS, Academic.Courses.ICON,
Academic.Courses.PREQUISITES, Academic.Courses.DESCRIPTION,
Academic.Courses.CATEGORY, Academic.Courses.SYLLABUS,
Academic.Courses.COVER_IMG, Academic.Courses.STATUS,
Academic.Courses.ORDER_ID);
// Because the default _id attribute was used for storing the lesson_id from the xml file
// another primary key is created which auto increments after each entry. This column can be
// used for ordering the list in the lesson list
private static final String CREATE_LESSONS = String.format(
"CREATE TABLE %s (%s integer not null,"
+ " %s integer not null," + " %s text not null,"
+ " %s text not null," + " %s integer not null,"
+ " %s integer," + " %s text not null,"
+ " %s integer not null, " + "%s integer primary key AUTOINCREMENT)",
Academic.Lesson.TABLE_NAME, Academic.Lesson._ID,
Academic.Lesson.COURSE_ID, Academic.Lesson.TITLE,
Academic.Lesson.DESCRIPTION, Academic.Lesson.LOCKED,
Academic.Lesson.DEADLINE_ID, Academic.Lesson.DEADLINE_RAW,
Academic.Lesson.DEADLINE_TYPE, Academic.Lesson.ORDER_ID);
private static final String CREATE_LESSON_FILES = String.format(
"CREATE TABLE %s (%s integer primary key,"
+ " %s integer not null," + " %s integer not null,"
+ " %s text, " + " %s text not null,"
+ " %s integer not null)",
Academic.LessonFiles.TABLE_NAME, Academic.LessonFiles._ID,
Academic.LessonFiles.LESSON_ID, Academic.LessonFiles.MEDIA_TYPE,
Academic.LessonFiles.EXTRA_NAME, Academic.LessonFiles.URI,
Academic.LessonFiles.FILESIZE);
private static final String CREATE_DEADLINES = String.format(
"CREATE TABLE %s (%s integer primary key, "
+ " %s real not null," + " %s integer not null,"
+ " %s integer not null)",
Academic.Deadline.TABLE_NAME, Academic.Deadline._ID,
Academic.Deadline.TIME, Academic.Deadline.CONTENT_ID,
Academic.Deadline.CONTENT_TYPE);
private static final String CREATE_BOOKS = String.format(
"CREATE TABLE %s (%s integer primary key,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null," + " %s integer not null,"
+ " %s text not null," + " %s text not null,"
+ " %s text not null)", Academic.Book.TABLE_NAME,
Academic.Book._ID, Academic.Book.TITLE, Academic.Book.AUTHOR,
Academic.Book.DESCRIPTION, Academic.Book.PUBLISHER_ID,
Academic.Book.COVER, Academic.Book.PRICE, Academic.Book.PATH);
private static final String CREATE_LISTS = String.format(
"CREATE TABLE %s (%s integer primary key,"
+ " %s text not null," + " %s text not null)",
Academic.List.TABLE_NAME, Academic.List._ID,
Academic.List.TITLE, Academic.List.TAG);
private static final String CREATE_BOOK_LIST = String.format(
"CREATE TABLE %s (%s integer primary key,"
+ " %s integer not null," + " %s integer not null)",
Academic.Book_List.TABLE_NAME, Academic.Book_List._ID,
Academic.Book_List.BOOK_ID, Academic.Book_List.LIST_ID);
private static final String CREATE_ACHIEVEMENTS = String.format(
"CREATE TABLE %s (%s integer primary key,"
+ " %s integer not null," + " %s integer not null,"
+ " %s text not null," + " %s text not null,"
+ " %s integer not null)",
Academic.Achievements.TABLE_NAME, Academic.Achievements._ID,
Academic.Achievements.CONTENT_ID,
Academic.Achievements.CONTENT_TYPE, Academic.Achievements.ICON,
Academic.Achievements.DESCRIPTION,
Academic.Achievements.POINT_VALUE);
private static final String CREATE_PROGRESS = String.format(
"CREATE TABLE %s (%s integer primary key," + "%s integer,"
+ "%s integer not null," + " %s integer not null,"
+ " %s integer not null)",
Academic.Progress.TABLE_NAME, Academic.Progress._ID,
Academic.Progress.USER_ID, Academic.Progress.CONTENT_ID,
Academic.Progress.CONTENT_TYPE, Academic.Progress.PROGRESS);
// DROP table scripts
private static final String DROP_PUBLISHERS = "DROP TABLE "
+ Academic.Publishers.TABLE_NAME;
private static final String DROP_INSTRUCTORS = "DROP TABLE "
+ Academic.Instructors.TABLE_NAME;
private static final String DROP_USERS = "DROP TABLE "
+ Academic.Users.TABLE_NAME;
private static final String DROP_COURSES = "DROP TABLE "
+ Academic.Courses.TABLE_NAME;
private static final String DROP_LESSONS = "DROP TABLE "
+ Academic.Lesson.TABLE_NAME;
private static final String DROP_LESSON_FILES = "DROP TABLE "
+ Academic.LessonFiles.TABLE_NAME;
private static final String DROP_DEADLINES = "DROP TABLE "
+ Academic.Deadline.TABLE_NAME;
private static final String DROP_BOOKS = "DROP TABLE "
+ Academic.Book.TABLE_NAME;
private static final String DROP_BOOK_LIST = "DROP TABLE "
+ Academic.Book_List.TABLE_NAME;
private static final String DROP_LISTS = "DROP TABLE "
+ Academic.List.TABLE_NAME;
private static final String DROP_ACHIEVEMENTS = "DROP TABLE "
+ Academic.Achievements.TABLE_NAME;
private static final String DROP_PROGRESS = "DROP TABLE "
+ Academic.Progress.TABLE_NAME;
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK_LIST);
db.execSQL(CREATE_BOOKS);
db.execSQL(CREATE_COURSES);
db.execSQL(CREATE_INSTRUCTORS);
db.execSQL(CREATE_LESSONS);
db.execSQL(CREATE_LESSON_FILES);
db.execSQL(CREATE_DEADLINES);
db.execSQL(CREATE_LISTS);
db.execSQL(CREATE_PUBLISHERS);
db.execSQL(CREATE_USERS);
db.execSQL(CREATE_ACHIEVEMENTS);
db.execSQL(CREATE_PROGRESS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_BOOKS);
db.execSQL(DROP_BOOK_LIST);
db.execSQL(DROP_COURSES);
db.execSQL(DROP_INSTRUCTORS);
db.execSQL(DROP_LESSONS);
db.execSQL(DROP_LESSON_FILES);
db.execSQL(DROP_DEADLINES);
db.execSQL(DROP_LISTS);
db.execSQL(DROP_PUBLISHERS);
db.execSQL(DROP_USERS);
db.execSQL(DROP_ACHIEVEMENTS);
db.execSQL(DROP_PROGRESS);
this.onCreate(db);
}
}
private SQLiteDatabase mDB;
@Override
public boolean onCreate() {
mDB = new DatabaseHelper(getContext()).getWritableDatabase();
return (mDB == null) ? false : true;
}
@Override
public String getType(Uri uri) {
switch (mUriMatcher.match(uri)) {
case PUBLISHER:
return Academic.Publishers.CONTENT_TYPE_DIR;
case PUBLISHER_ID:
return Academic.Publishers.CONTENT_TYPE_ITEM;
case INSTRUCTOR:
return Academic.Instructors.CONTENT_TYPE_DIR;
case INSTRUCTOR_ID:
return Academic.Instructors.CONTENT_TYPE_ITEM;
case USERS:
return Academic.Users.CONTENT_TYPE_DIR;
case USERS_ID:
return Academic.Users.CONTENT_TYPE_ITEM;
case COURSE:
return Academic.Courses.CONTENT_TYPE_DIR;
case COURSE_ID:
return Academic.Courses.CONTENT_TYPE_ITEM;
case LESSON:
return Academic.Lesson.CONTENT_TYPE_DIR;
case LESSON_ID:
return Academic.Lesson.CONTENT_TYPE_ITEM;
case LESSON_FILES:
return Academic.LessonFiles.CONTENT_TYPE_DIR;
case LESSON_FILES_ID:
return Academic.LessonFiles.CONTENT_TYPE_ITEM;
case BOOK:
return Academic.Book.CONTENT_TYPE_DIR;
case BOOK_ID:
return Academic.Book.CONTENT_TYPE_ITEM;
case LIST:
return Academic.List.CONTENT_TYPE_DIR;
case LIST_ID:
return Academic.List.CONTENT_TYPE_ITEM;
case BOOK_LIST:
return Academic.Book_List.CONTENT_TYPE_DIR;
case BOOK_LIST_ID:
return Academic.Book_List.CONTENT_TYPE_ITEM;
case DEADLINE:
return Academic.Deadline.CONTENT_TYPE_DIR;
case DEADLINE_ID:
return Academic.Deadline.CONTENT_TYPE_ITEM;
case ACHIEVEMENT:
return Academic.Achievements.CONTENT_TYPE_DIR;
case ACHIEVEMENT_ID:
return Academic.Achievements.CONTENT_TYPE_ITEM;
case PROGRESS:
return Academic.Progress.CONTENT_TYPE_DIR;
case PROGRESS_ID:
return Academic.Progress.CONTENT_TYPE_ITEM;
default:
return "No Match";
}
}
@Override
public Uri insert(Uri uri, ContentValues values) {
String table;
String nullColumnHack;
Uri returnedUri;
switch (mUriMatcher.match(uri)) {
case PUBLISHER:
case PUBLISHER_ID:
table = Academic.Publishers.TABLE_NAME;
nullColumnHack = Academic.Publishers.TITLE;
returnedUri = Academic.Publishers.CONTENT_URI;
break;
case INSTRUCTOR:
case INSTRUCTOR_ID:
table = Academic.Instructors.TABLE_NAME;
nullColumnHack = Academic.Instructors.FIRST_NAME;
returnedUri = Academic.Instructors.CONTENT_URI;
break;
case USERS:
case USERS_ID:
table = Academic.Users.TABLE_NAME;
nullColumnHack = Academic.Users.USERNAME;
returnedUri = Academic.Users.CONTENT_URI;
break;
case COURSE:
case COURSE_ID:
table = Academic.Courses.TABLE_NAME;
nullColumnHack = Academic.Courses.TITLE;
returnedUri = Academic.Courses.CONTENT_URI;
break;
case LESSON:
case LESSON_ID:
table = Academic.Lesson.TABLE_NAME;
nullColumnHack = Academic.Lesson.TITLE;
returnedUri = Academic.Lesson.CONTENT_URI;
break;
case LESSON_FILES:
case LESSON_FILES_ID:
table = Academic.LessonFiles.TABLE_NAME;
nullColumnHack = Academic.LessonFiles.MEDIA_TYPE;
returnedUri = Academic.LessonFiles.CONTENT_URI;
break;
case BOOK:
case BOOK_ID:
table = Academic.Book.TABLE_NAME;
nullColumnHack = Academic.Book.TITLE;
returnedUri = Academic.Book.CONTENT_URI;
break;
case LIST:
case LIST_ID:
table = Academic.List.TABLE_NAME;
nullColumnHack = Academic.List.TITLE;
returnedUri = Academic.List.CONTENT_URI;
break;
case BOOK_LIST:
case BOOK_LIST_ID:
table = Academic.Book_List.TABLE_NAME;
nullColumnHack = Academic.Book_List.BOOK_ID;
returnedUri = Academic.Book_List.CONTENT_URI;
break;
case DEADLINE:
case DEADLINE_ID:
table = Academic.Deadline.TABLE_NAME;
nullColumnHack = Academic.Deadline.TIME;
returnedUri = Academic.Deadline.CONTENT_URI;
break;
case ACHIEVEMENT:
case ACHIEVEMENT_ID:
table = Academic.Achievements.TABLE_NAME;
nullColumnHack = Academic.Achievements.ICON;
returnedUri = Academic.Achievements.CONTENT_URI;
break;
case PROGRESS:
case PROGRESS_ID:
table = Academic.Progress.TABLE_NAME;
nullColumnHack = Academic.Progress.USER_ID;
returnedUri = Academic.Progress.CONTENT_URI;
break;
default:
throw new IllegalArgumentException("Uri Not Matched");
}
long id = mDB.insert(table, nullColumnHack, values);
return ContentUris.withAppendedId(returnedUri, id);
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
switch (mUriMatcher.match(uri)) {
case PUBLISHER_ID:
qb.appendWhere(Academic.Publishers._ID + "="
+ uri.getLastPathSegment());
case PUBLISHER:
qb.setTables(Academic.Publishers.TABLE_NAME);
break;
case INSTRUCTOR_ID:
qb.appendWhere(Academic.Instructors._ID + "="
+ uri.getLastPathSegment());
case INSTRUCTOR:
qb.setTables(Academic.Instructors.TABLE_NAME);
break;
case USERS_ID:
qb.appendWhere(Academic.Users._ID + "=" + uri.getLastPathSegment());
case USERS:
qb.setTables(Academic.Users.TABLE_NAME);
break;
case COURSE_ID:
qb.appendWhere(Academic.Courses._ID + "="
+ uri.getLastPathSegment());
case COURSE:
qb.setTables(Academic.Courses.TABLE_NAME);
break;
case LESSON_ID:
qb.appendWhere(Academic.Lesson._ID + "=" + uri.getLastPathSegment());
case LESSON:
qb.setTables(Academic.Lesson.TABLE_NAME);
break;
case LESSON_FILES_ID:
qb.appendWhere(Academic.LessonFiles._ID + "="
+ uri.getLastPathSegment());
case LESSON_FILES:
qb.setTables(Academic.LessonFiles.TABLE_NAME);
break;
case BOOK_ID:
qb.appendWhere(Academic.Book._ID + "=" + uri.getLastPathSegment());
case BOOK:
qb.setTables(Academic.Book.TABLE_NAME);
break;
case LIST_ID:
qb.appendWhere(Academic.List._ID + "=" + uri.getLastPathSegment());
case LIST:
qb.setTables(Academic.List.TABLE_NAME);
break;
case BOOK_LIST_ID:
qb.appendWhere(Academic.Book_List._ID + "="
+ uri.getLastPathSegment());
case BOOK_LIST:
qb.setTables(Academic.Book_List.TABLE_NAME);
break;
case DEADLINE_ID:
qb.appendWhere(Academic.Deadline._ID + "="
+ uri.getLastPathSegment());
case DEADLINE:
qb.setTables(Academic.Deadline.TABLE_NAME);
break;
case ACHIEVEMENT_ID:
qb.appendWhere(Academic.Achievements._ID + "="
+ uri.getLastPathSegment());
case ACHIEVEMENT:
qb.setTables(Academic.Achievements.TABLE_NAME);
break;
case PROGRESS_ID:
qb.appendWhere(Academic.Progress._ID + "="
+ uri.getLastPathSegment());
case PROGRESS:
qb.setTables(Academic.Progress.TABLE_NAME);
break;
default:
throw new IllegalArgumentException("Uri not matched");
}
return qb.query(mDB, projection, selection, selectionArgs, null, null,
sortOrder);
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
String table = "NO_TABLE";
switch (mUriMatcher.match(uri)) {
case PUBLISHER_ID:
selection = Academic.Publishers._ID + "="
+ uri.getLastPathSegment();
case PUBLISHER:
table = Academic.Publishers.TABLE_NAME;
break;
case INSTRUCTOR_ID:
selection = Academic.Instructors._ID + "="
+ uri.getLastPathSegment();
case INSTRUCTOR:
table = Academic.Instructors.TABLE_NAME;
break;
case USERS_ID:
selection = Academic.Users._ID + "=" + uri.getLastPathSegment();
case USERS:
table = Academic.Users.TABLE_NAME;
break;
case COURSE_ID:
selection = Academic.Courses._ID + "=" + uri.getLastPathSegment();
case COURSE:
table = Academic.Courses.TABLE_NAME;
break;
case LESSON_ID:
selection = Academic.Lesson._ID + "=" + uri.getLastPathSegment();
case LESSON:
table = Academic.Lesson.TABLE_NAME;
break;
case LESSON_FILES_ID:
selection = Academic.LessonFiles._ID + "="
+ uri.getLastPathSegment();
case LESSON_FILES:
table = Academic.LessonFiles.TABLE_NAME;
break;
case BOOK_ID:
selection = Academic.Book._ID + "=" + uri.getLastPathSegment();
case BOOK:
table = Academic.Book.TABLE_NAME;
break;
case LIST_ID:
selection = Academic.List._ID + "=" + uri.getLastPathSegment();
case LIST:
table = Academic.List.TABLE_NAME;
break;
case BOOK_LIST_ID:
selection = Academic.Book_List._ID + "=" + uri.getLastPathSegment();
case BOOK_LIST:
table = Academic.Book_List.TABLE_NAME;
break;
case DEADLINE_ID:
selection = Academic.Deadline._ID + "=" + uri.getLastPathSegment();
case DEADLINE:
table = Academic.Deadline.TABLE_NAME;
break;
case ACHIEVEMENT_ID:
selection = Academic.Achievements._ID + "="
+ uri.getLastPathSegment();
case ACHIEVEMENT:
table = Academic.Achievements.TABLE_NAME;
break;
case PROGRESS_ID:
selection = Academic.Progress._ID + "=" + uri.getLastPathSegment();
case PROGRESS:
table = Academic.Progress.TABLE_NAME;
break;
default:
throw new IllegalArgumentException("URI not matched");
}
return mDB.update(table, values, selection, selectionArgs);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
String table = "NO_TABLE";
switch (mUriMatcher.match(uri)) {
case PUBLISHER_ID:
selection = Academic.Publishers._ID + "="
+ uri.getLastPathSegment();
case PUBLISHER:
table = Academic.Publishers.TABLE_NAME;
break;
case INSTRUCTOR_ID:
selection = Academic.Instructors._ID + "="
+ uri.getLastPathSegment();
case INSTRUCTOR:
table = Academic.Instructors.TABLE_NAME;
break;
case USERS_ID:
selection = Academic.Users._ID + "=" + uri.getLastPathSegment();
case USERS:
table = Academic.Users.TABLE_NAME;
break;
case COURSE_ID:
selection = Academic.Courses._ID + "=" + uri.getLastPathSegment();
case COURSE:
table = Academic.Courses.TABLE_NAME;
break;
case LESSON_ID:
selection = Academic.Lesson._ID + "=" + uri.getLastPathSegment();
case LESSON:
table = Academic.Lesson.TABLE_NAME;
break;
case LESSON_FILES_ID:
selection = Academic.LessonFiles._ID + "="
+ uri.getLastPathSegment();
case LESSON_FILES:
table = Academic.LessonFiles.TABLE_NAME;
break;
case BOOK_ID:
selection = Academic.Book._ID + "=" + uri.getLastPathSegment();
case BOOK:
table = Academic.Book.TABLE_NAME;
break;
case LIST_ID:
selection = Academic.List._ID + "=" + uri.getLastPathSegment();
case LIST:
table = Academic.List.TABLE_NAME;
break;
case BOOK_LIST_ID:
selection = Academic.Book_List._ID + "=" + uri.getLastPathSegment();
case BOOK_LIST:
table = Academic.Book_List.TABLE_NAME;
break;
case DEADLINE_ID:
selection = Academic.Deadline._ID + "=" + uri.getLastPathSegment();
case DEADLINE:
table = Academic.Deadline.TABLE_NAME;
break;
case ACHIEVEMENT_ID:
selection = Academic.Achievements._ID + "="
+ uri.getLastPathSegment();
case ACHIEVEMENT:
table = Academic.Achievements.TABLE_NAME;
break;
case PROGRESS_ID:
selection = Academic.Progress._ID + "=" + uri.getLastPathSegment();
case PROGRESS:
table = Academic.Progress.TABLE_NAME;
break;
default:
throw new IllegalArgumentException("URI not matched");
}
return mDB.delete(table, selection, selectionArgs);
}
}