Back to project page android_tutorial_projects.
The source code is released under:
Copyright (c) 2013, Uthcode All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redi...
If you think the Android project android_tutorial_projects listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.uthcode.todos.contentprovider; //from w w w . ja v a 2s . c o m import android.content.ContentProvider; import android.content.ContentResolver; 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.text.TextUtils; import com.uthcode.todos.database.TodoDatabaseHelper; import com.uthcode.todos.database.TodoTable; import java.util.Arrays; import java.util.HashSet; public class MyTodoContentProvider extends ContentProvider{ // database private TodoDatabaseHelper database; // Used for the UriMatcher private static final int TODOS = 10; private static final int TODO_ID = 20; private static final String AUTHORITY = "com.uthcode.todos.contentprovider"; private static final String BASE_PATH = "todos"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + BASE_PATH); public static final String CONTENT_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + "/todos"; public static final String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE + "/todos"; private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH); static { sURIMatcher.addURI(AUTHORITY, BASE_PATH, TODOS); sURIMatcher.addURI(AUTHORITY, BASE_PATH + "/#", TODO_ID); } @Override public boolean onCreate() { database = new TodoDatabaseHelper(getContext()); return false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); checkColumns(projection); queryBuilder.setTables(TodoTable.TABLE_TODO); int uriType = sURIMatcher.match(uri); switch (uriType) { case TODOS: break; case TODO_ID: queryBuilder.appendWhere(TodoTable.COLUMN_ID + " = " + uri.getLastPathSegment()); break; default: throw new IllegalArgumentException("Unknown URI: " + uri); } SQLiteDatabase db = database.getWritableDatabase(); Cursor cursor = null; if (db != null) { cursor = queryBuilder.query(db, projection, selection, selectionArgs, null, null, sortOrder); } if (cursor != null) { cursor.setNotificationUri(getContext().getContentResolver(), uri); } return cursor; } private void checkColumns(String[] projection) { String[] available = { TodoTable.COLUMN_CATEGORY, TodoTable.COLUMN_SUMMARY, TodoTable.COLUMN_DESCRIPTION, TodoTable.COLUMN_ID }; if (projection != null) { HashSet<String> requestColumns = new HashSet<String>(Arrays.asList(projection)); HashSet<String> availableColumns = new HashSet<String>(Arrays.asList(available)); if ( ! availableColumns.containsAll(requestColumns)) { throw new IllegalArgumentException("Unknown columns in projection"); } } } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { int uriType = sURIMatcher.match(uri); SQLiteDatabase sqlDB = database.getWritableDatabase(); int rowsDeleted = 0; long id = 0; switch (uriType) { case TODOS: if (sqlDB != null) { id = sqlDB.insert(TodoTable.TABLE_TODO, null, values); } break; default: throw new IllegalArgumentException("Unknow URI: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return Uri.parse(BASE_PATH + "/" + id); } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int uriType = sURIMatcher.match(uri); SQLiteDatabase sqlDB = database.getWritableDatabase(); int rowsDeleted = 0; switch (uriType) { case TODOS: if (sqlDB != null) { rowsDeleted = sqlDB.delete(TodoTable.TABLE_TODO, selection, selectionArgs); } break; case TODO_ID: String id = uri.getLastPathSegment(); if (TextUtils.isEmpty(selection) && sqlDB != null) { rowsDeleted = sqlDB.delete(TodoTable.TABLE_TODO, TodoTable.COLUMN_ID + " = " + id, null); } else { if (sqlDB != null) { rowsDeleted = sqlDB.delete(TodoTable.TABLE_TODO, TodoTable.COLUMN_ID + " = " + id + " and " + selection, selectionArgs); } } break; default: throw new IllegalArgumentException("Unknown URI: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return rowsDeleted; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int uriType = sURIMatcher.match(uri); SQLiteDatabase sqlDB = database.getWritableDatabase(); int rowsUpdated = 0; switch (uriType) { case TODOS: if (sqlDB != null) { rowsUpdated = sqlDB.update(TodoTable.TABLE_TODO, values, selection, selectionArgs); } break; case TODO_ID: String id = uri.getLastPathSegment(); if (TextUtils.isEmpty(selection) && sqlDB != null) { rowsUpdated = sqlDB.update(TodoTable.TABLE_TODO, values, TodoTable.COLUMN_ID + "=" + id, null); } else { if (sqlDB != null) { rowsUpdated = sqlDB.update(TodoTable.TABLE_TODO, values, TodoTable.COLUMN_ID + "=" + id + " and " + selection, selectionArgs); } } break; default: throw new IllegalArgumentException("Unknown URI: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return rowsUpdated; } }