Android Open Source - FileManager Bookmarks






From Project

Back to project page FileManager.

License

The source code is released under:

GNU General Public License

If you think the Android project FileManager listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.ankur.coreutils;
//from   w ww.jav a 2s . c om
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 Bookmarks extends ContentProvider implements BaseColumns {
  public static final String TB_NAME = "bookmarks";
  public static final String NAME = "name";
  public static final String PATH = "path";
  // Only because of multiple choice delete dialog
  public static final String CHECKED = "checked";
  public static final String PROVIDER_NAME = "com.ankur.core.bookmarks";
  public static final Uri CONTENT_URI = Uri.parse("content://"
      + PROVIDER_NAME);
  public static final String BOOKMARK_MIMETYPE = "vnd.android.cursor.item/vnd.mirrorlabs.bookmark";
  public static final String BOOKMARKS_MIMETYPE = "vnd.android.cursor.dir/vnd.mirrorlabs.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 = "com.ankur.core";
  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;
    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;
  }
}




Java Source Code List

com.ankur.core.AppManager.java
com.ankur.core.DirectoryInfo.java
com.ankur.core.EventHandler.java
com.ankur.core.FileUtils.java
com.ankur.core.InfoDialog.java
com.ankur.core.Main.java
com.ankur.core.Settings.java
com.ankur.coreutils.Bookmarks.java
com.ankur.coreutils.CheckBoxActivity.java
com.ankur.coreutils.ClearSearchSuggestions.java
com.ankur.coreutils.Compress.java
com.ankur.coreutils.Decompress.java
com.ankur.coreutils.ImagePreview.java
com.ankur.coreutils.LinuxShell.java
com.ankur.coreutils.SearchSuggestions.java
com.ankur.coreutils.VideoPreview.java