package com.owwlo.courier.db;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.text.TextUtils;
import com.owwlo.courier.db.CourierDatabaseHelper.ERROR_DETECT;
import com.owwlo.courier.s.Constants;
public class CourierProvider extends ContentProvider {
private CourierDatabaseHelper mCourierDatabaseHelper;
private Context mContext;
private static final int URI_LAST_CONNECT = 0;
private static final int URI_LAST_CONNECT_SUB = 1;
private static final UriMatcher URI_MATCHER = new UriMatcher(
UriMatcher.NO_MATCH);
static {
URI_MATCHER.addURI(Constants.AUTHORITY, "last_connect/*",
URI_LAST_CONNECT_SUB);
URI_MATCHER.addURI(Constants.AUTHORITY, "last_connect",
URI_LAST_CONNECT);
}
@Override
public String getType(Uri uri) {
throw new UnsupportedOperationException();
}
@Override
public boolean onCreate() {
mCourierDatabaseHelper = CourierDatabaseHelper
.getInstance(getContext());
mContext = getContext();
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = mCourierDatabaseHelper.getReadableDatabase();
Cursor cursor = null;
int uriMatch = URI_MATCHER.match(uri);
switch (uriMatch) {
case URI_LAST_CONNECT_SUB: {
String imxi = uri.getLastPathSegment();
if (TextUtils.isEmpty(imxi)) {
return null;
}
cursor = db.query(ERROR_DETECT.TABLE, projection, ERROR_DETECT.IP
+ "=?", new String[] { imxi }, null, null, null);
break;
}
case URI_LAST_CONNECT: {
String table = ERROR_DETECT.TABLE;
cursor = db.query(table, projection, selection, selectionArgs,
null, null, sortOrder);
break;
}
default:
throw new IllegalArgumentException("Unknown URL " + uri);
}
return cursor;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
SQLiteDatabase db = mCourierDatabaseHelper.getWritableDatabase();
int count = 0;
final int uriMatch = URI_MATCHER.match(uri);
switch (uriMatch) {
case URI_LAST_CONNECT_SUB: {
count = 1;
String imxi = uri.getLastPathSegment();
if (TextUtils.isEmpty(imxi)) {
return 0;
}
db.update(ERROR_DETECT.TABLE, values, ERROR_DETECT.IP + " = ? ",
new String[] { String.valueOf(imxi) });
break;
}
default:
throw new IllegalArgumentException("Unknown URL " + uri);
}
return count;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = mCourierDatabaseHelper.getWritableDatabase();
final int uriMatch = URI_MATCHER.match(uri);
switch (uriMatch) {
case URI_LAST_CONNECT_SUB: {
long rowId = db.insert(ERROR_DETECT.TABLE, null, values);
// 插入的数据不直接返回URI
return null;
}
case URI_LAST_CONNECT: {
long rowId = db.insert(ERROR_DETECT.TABLE, null, values);
return null;
}
default:
throw new IllegalArgumentException("Unknown URL " + uri);
}
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
SQLiteDatabase db = mCourierDatabaseHelper.getWritableDatabase();
final int uriMatch = URI_MATCHER.match(uri);
int count = 0;
switch (uriMatch) {
case URI_LAST_CONNECT_SUB: {
String imxi = uri.getLastPathSegment();
if (TextUtils.isEmpty(imxi)) {
return 0;
}
count = db.delete(ERROR_DETECT.TABLE, ERROR_DETECT.IP + " = ? ",
new String[] { String.valueOf(imxi) });
break;
}
case URI_LAST_CONNECT: {
count = db.delete(ERROR_DETECT.TABLE, selection, selectionArgs);
break;
}
default:
throw new IllegalArgumentException("Unknown URL " + uri);
}
return count;
}
}