+++ /dev/null
-package org.openintents.filemanager;
-
-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.SQLException;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.database.sqlite.SQLiteQueryBuilder;
-import android.net.Uri;
-import android.provider.BaseColumns;
-import android.text.TextUtils;
-
-public class BookmarksProvider extends ContentProvider implements BaseColumns{
- public static final String TB_NAME = "bookmarks";
- public static final String NAME = "name";
- public static final String PATH = "path";
- public static final String CHECKED = "checked"; //Only because of multiple choice delete dialog
- public static final String PROVIDER_NAME = "org.openintents.filemanager.bookmarks";
- public static final Uri CONTENT_URI =
- Uri.parse("content://"+PROVIDER_NAME);
- public static final String BOOKMARK_MIMETYPE =
- "vnd.android.cursor.item/vnd.openintents.bookmark";
- public static final String BOOKMARKS_MIMETYPE =
- "vnd.android.cursor.dir/vnd.openintents.bookmark";
-
-
- private static final int BOOKMARKS = 1;
- private static final int BOOKMARK_ID = 2;
- private static final UriMatcher uriMatcher;
- static{
- uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
- uriMatcher.addURI(PROVIDER_NAME, null, BOOKMARKS);
- uriMatcher.addURI(PROVIDER_NAME, "#", BOOKMARK_ID);
- }
-
- private DatabaseHelper dbHelper;
- private SQLiteDatabase db;
-
-
- private static final String DATABASE_CREATE =
- String.format("CREATE TABLE %s (%s integer primary key autoincrement, "
- + "%s text not null, %s text not null, %s integer default 0);",
- TB_NAME, _ID, NAME, PATH, CHECKED);
-
- private static final String DATABASE_NAME = "org.openintents.filemanager";
- private static final int DATABASE_VERSION = 2;
-
- private static class DatabaseHelper extends SQLiteOpenHelper {
-
- DatabaseHelper(Context context) {
- super(context, DATABASE_NAME, null, DATABASE_VERSION);
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {
- db.execSQL(DATABASE_CREATE);
- }
-
- /*
- * !!!
- * When changing database version, you MUST change this method.
- * Currently, it would delete all users' bookmarks
- */
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- db.execSQL("DROP TABLE IF EXISTS "+TB_NAME);
- onCreate(db);
- }
- }
-
-
- @Override
- public int delete(Uri arg0, String arg1, String[] arg2) {
- int count = 0;
- switch (uriMatcher.match(arg0)) {
- case BOOKMARKS:
- count = db.delete(TB_NAME, arg1, arg2);
- break;
- case BOOKMARK_ID:
- String id = arg0.getPathSegments().get(0);
- count = db.delete(TB_NAME, _ID + " = " + id
- + (!TextUtils.isEmpty(arg1) ? " AND (" + arg1 + ')' : ""),
- arg2);
- break;
- default:
- throw new IllegalArgumentException("Unknown URI " + arg0);
- }
- getContext().getContentResolver().notifyChange(arg0, null);
- return count;
- }
-
- @Override
- public String getType(Uri uri) {
- switch (uriMatcher.match(uri)){
- case BOOKMARKS:
- return BOOKMARKS_MIMETYPE;
- case BOOKMARK_ID:
- return BOOKMARK_MIMETYPE;
- default:
- throw new IllegalArgumentException("Unsupported URI: " + uri);
- }
- }
-
- @Override
- public Uri insert(Uri uri, ContentValues values){
- long rowID = db.insert(TB_NAME, "", values);
- if (rowID > 0){
- Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
- getContext().getContentResolver().notifyChange(_uri, null);
- return _uri;
- }
- throw new SQLException("Failed to insert row into " + uri);
- }
-
- @Override
- public boolean onCreate() {
- dbHelper = new DatabaseHelper(getContext());
- db = dbHelper.getWritableDatabase();
- return (db == null)? false:true;
- }
-
- @Override
- public Cursor query(Uri uri, String[] projection, String selection,
- String[] selectionArgs, String sortOrder) {
- SQLiteQueryBuilder sqlBuilder = new SQLiteQueryBuilder();
- sqlBuilder.setTables(TB_NAME);
- if (uriMatcher.match(uri) == BOOKMARK_ID){
- sqlBuilder.appendWhere(_ID + " = " + uri.getPathSegments().get(0));
- }
-
- if (sortOrder==null || sortOrder=="")
- sortOrder = _ID;
-
- Cursor c = sqlBuilder.query(db,
- projection,
- selection,
- selectionArgs,
- null,
- null,
- sortOrder);
- c.setNotificationUri(getContext().getContentResolver(), uri);
- return c;
- }
-
- @Override
- public int update(Uri uri, ContentValues values, String selection,
- String[] selectionArgs) {
- int count = 0;
- switch (uriMatcher.match(uri)){
- case BOOKMARKS:
- count = db.update(
- TB_NAME,
- values,
- selection,
- selectionArgs);
- break;
- case BOOKMARK_ID:
- count = db.update(
- TB_NAME,
- values,
- _ID + " = " + uri.getPathSegments().get(0)
- + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""),
- selectionArgs);
- break;
- default: throw new IllegalArgumentException("Unknown URI " + uri);
- }
- getContext().getContentResolver().notifyChange(uri, null);
- return count;
- }
-
-}