package course.labs.contentproviderlab.provider;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
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;
public class PlaceBadgeContentProvider extends ContentProvider {
private DatabaseHelper mDbHelper;
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "Badges";
private static final String CREATE_LOCATION_TABLE = " CREATE TABLE "
+ PlaceBadgesContract.BADGES_TABLE_NAME + " ("
+ PlaceBadgesContract._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ PlaceBadgesContract.FLAG_BITMAP_PATH + " TEXT NOT NULL, "
+ PlaceBadgesContract.COUNTRY_NAME + " TEXT NOT NULL, "
+ PlaceBadgesContract.PLACE_NAME + " TEXT NOT NULL, "
+ PlaceBadgesContract.LAT + " REAL NOT NULL, "
+ PlaceBadgesContract.LON + " REAL NOT NULL);";
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_LOCATION_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "
+ PlaceBadgesContract.BADGES_TABLE_NAME);
onCreate(db);
}
}
@Override
public boolean onCreate() {
mDbHelper = new DatabaseHelper(getContext());
return (mDbHelper != null);
}
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
int rowsDeleted = mDbHelper.getWritableDatabase().delete(
PlaceBadgesContract.BADGES_TABLE_NAME, null, null);
getContext().getContentResolver().notifyChange(
PlaceBadgesContract.CONTENT_URI, null);
return rowsDeleted;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
long rowID = mDbHelper.getWritableDatabase().insert(
PlaceBadgesContract.BADGES_TABLE_NAME, "", values);
if (rowID > 0) {
Uri fullUri = ContentUris.withAppendedId(
PlaceBadgesContract.CONTENT_URI, rowID);
getContext().getContentResolver().notifyChange(fullUri, null);
return fullUri;
}
throw new SQLException("Failed to add record into" + uri);
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables(PlaceBadgesContract.BADGES_TABLE_NAME);
Cursor cursor = qb.query(mDbHelper.getWritableDatabase(), projection, selection,
selectionArgs, null, null, sortOrder);
cursor.setNotificationUri(getContext().getContentResolver(), uri);
return cursor;
}
@Override
public String getType(Uri arg0) {
// Not Implemented
return null;
}
@Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
// unimplemented
return 0;
}
}