package cat.foixench.apps.lectorss.db;
import cat.foixench.apps.lectorss.db.RssContract.FeedsTable;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.text.TextUtils;
public class LectoRSSContentProvider extends ContentProvider {
private RssDbHelper rssDbHelper;
private static final int TYPE_FEEDS_COLLECTION = 1;
private static final int TYPE_FEEDS_ITEM = 2;
private static final UriMatcher sUriMatcher;
static {
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(RssContract.AUTHORITY, RssContract.FEEDS_PATH, TYPE_FEEDS_COLLECTION);
sUriMatcher.addURI(RssContract.AUTHORITY, RssContract.FEEDS_PATH + "/#", TYPE_FEEDS_ITEM);
}
@Override
public boolean onCreate() {
this.rssDbHelper = new RssDbHelper (getContext ());
return true;
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = rssDbHelper.getWritableDatabase();
long newId = db.insert (FeedsTable.TABLE_NAME, null, values);
return (FeedsTable.getUri (newId));
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor cursor = null;
// recuperamos la base de datos
SQLiteDatabase db = rssDbHelper.getReadableDatabase();
// verificamos el tipo de consulta
switch (sUriMatcher.match (uri)) {
case TYPE_FEEDS_COLLECTION :
// lanzamos la consulta
cursor = db.query(FeedsTable.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
break;
case TYPE_FEEDS_ITEM :
String id = uri.getLastPathSegment ();
// a�adimos el id a la seleccion de la consulta
if (TextUtils.isEmpty (selection)){
selection = FeedsTable._ID + " = " + id;
} else {
selection = " (" + selection + ") AND " + FeedsTable._ID + " = " + id;
}
cursor = db.query (FeedsTable.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
break;
default :
cursor = null;
break;
}
return cursor;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
}