@Override public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { final int match = URI_MATCHER.match(uri); mOpenHelper.prepareForConfiguration(getContext().getResources().getConfiguration()); final SQLiteDatabase db = mOpenHelper.getReadableDatabase(); SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); String limit = uri.getQueryParameter(PartnerBookmarksContract.PARAM_LIMIT); String groupBy = uri.getQueryParameter(PartnerBookmarksContract.PARAM_GROUP_BY); switch (match) { case URI_MATCH_BOOKMARKS_FOLDER_ID: case URI_MATCH_BOOKMARKS_ID: case URI_MATCH_BOOKMARKS: { if (match == URI_MATCH_BOOKMARKS_ID) { // Tack on the ID of the specific bookmark requested selection = DatabaseUtils.concatenateWhere( selection, TABLE_BOOKMARKS + "." + PartnerBookmarksContract.Bookmarks.ID + "=?"); selectionArgs = DatabaseUtils.appendSelectionArgs( selectionArgs, new String[] {Long.toString(ContentUris.parseId(uri))}); } else if (match == URI_MATCH_BOOKMARKS_FOLDER_ID) { // Tack on the ID of the specific folder requested selection = DatabaseUtils.concatenateWhere( selection, TABLE_BOOKMARKS + "." + PartnerBookmarksContract.Bookmarks.PARENT + "=?"); selectionArgs = DatabaseUtils.appendSelectionArgs( selectionArgs, new String[] {Long.toString(ContentUris.parseId(uri))}); } // Set a default sort order if one isn't specified if (TextUtils.isEmpty(sortOrder)) { sortOrder = DEFAULT_BOOKMARKS_SORT_ORDER; } qb.setProjectionMap(BOOKMARKS_PROJECTION_MAP); qb.setTables(TABLE_BOOKMARKS); break; } case URI_MATCH_BOOKMARKS_FOLDER: { qb.setTables(TABLE_BOOKMARKS); String[] args; String query; // Set a default sort order if one isn't specified if (TextUtils.isEmpty(sortOrder)) { sortOrder = DEFAULT_BOOKMARKS_SORT_ORDER; } qb.setProjectionMap(BOOKMARKS_PROJECTION_MAP); String where = PartnerBookmarksContract.Bookmarks.PARENT + "=?"; where = DatabaseUtils.concatenateWhere(where, selection); args = new String[] {Long.toString(FIXED_ID_PARTNER_BOOKMARKS_ROOT)}; if (selectionArgs != null) { args = DatabaseUtils.appendSelectionArgs(args, selectionArgs); } query = qb.buildQuery(projection, where, null, null, sortOrder, null); Cursor cursor = db.rawQuery(query, args); return cursor; } case URI_MATCH_BOOKMARKS_PARTNER_BOOKMARKS_FOLDER_ID: { MatrixCursor c = new MatrixCursor(new String[] {PartnerBookmarksContract.Bookmarks.ID}); c.newRow().add(FIXED_ID_PARTNER_BOOKMARKS_ROOT); return c; } default: { throw new UnsupportedOperationException("Unknown URL " + uri.toString()); } } return qb.query(db, projection, selection, selectionArgs, groupBy, null, sortOrder, limit); }
@Override public void onConfigurationChanged(Configuration newConfig) { mOpenHelper.prepareForConfiguration(getContext().getResources().getConfiguration()); }