package org.djd.busntrain.provider;
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.net.Uri;
import org.djd.busntrain.provider.table.AaaTableHelper;
import static org.djd.busntrain.commons.ApplicationCommons.SCHEME;
public class TrainStationsContentProvider extends ContentProvider {
public static final String TRAIN_STATIONS_TABLE_NAME = "TRAIN_STATIONS";
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.djd.busntrans.train.stations";
private static final String AUTHORITY = "org.djd.busntrain.provider.trainstationscontentprovider";
private static final String PATH_TRAIN_STATIONS = "/trainstations/";
public static final Uri CONTENT_URI = Uri.parse(SCHEME + AUTHORITY + PATH_TRAIN_STATIONS);
private SQLiteDatabase database;
private static final int TRAIN_STATIONS = 1;
private static final UriMatcher URI_MATCHER;
static {
URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
URI_MATCHER.addURI(AUTHORITY, PATH_TRAIN_STATIONS, TRAIN_STATIONS);
}
@Override
public String getType(Uri uri) {
switch (URI_MATCHER.match(uri)) {
case TRAIN_STATIONS:
return CONTENT_TYPE;
default:
throw new IllegalArgumentException("Unsupported URI: " + uri);
}
}
@Override
public boolean onCreate() {
Context context = getContext();
AaaTableHelper dbHelper = new AaaTableHelper(context);
database = dbHelper.getWritableDatabase();
return (null != database);
}
@Override
public Uri insert(Uri uri, ContentValues contentValues) {
long id = database.replace(TRAIN_STATIONS_TABLE_NAME, null, contentValues);
if (0 <= id) {
Uri _uri = ContentUris.withAppendedId(CONTENT_URI, id);
getContext().getContentResolver().notifyChange(_uri, null);
return _uri;
}
throw new SQLException("Failed to insert row into " + uri);
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
return database.query(TRAIN_STATIONS_TABLE_NAME, projection, selection, selectionArgs,
null, null, sortOrder);
}
@Override
public int update(Uri uri, ContentValues arg1, String arg2, String[] arg3) {
throw new UnsupportedOperationException("TODO");
}
@Override
public int delete(Uri uri, String whereClause, String[] whereArgs) {
return database.delete(TRAIN_STATIONS_TABLE_NAME, whereClause, whereArgs);
}
}