package com.letv.datastatistics.db;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import com.letv.datastatistics.util.DataConstant;
public class StatisContentProvider extends ContentProvider {
public static String AUTHORITY;
static {
try {
Properties properties = new Properties();
InputStream in = StatisContentProvider.class.getClassLoader().getResourceAsStream("letv.properties");
properties.load(in);
AUTHORITY = properties.getProperty("StatisContentProvider.authorities");
if(AUTHORITY==null){
AUTHORITY="com.letv.watchball.db.StatisContentProvider";
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static final Uri URI_STATIS = Uri.parse("content://" + AUTHORITY + "/" + DataConstant.StaticticsCacheTrace.TABLE_NAME);
private static final int STATIS = 100;
private static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
private SQLiteDataBase sqliteDataBase;
static {
URI_MATCHER.addURI(AUTHORITY, DataConstant.StaticticsCacheTrace.TABLE_NAME, STATIS);
}
@Override
public boolean onCreate() {
sqliteDataBase = new SQLiteDataBase(getContext());
return true;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
long rowId;
Uri newUri = null;
int match = URI_MATCHER.match(uri);
SQLiteDatabase db = sqliteDataBase.getWritableDatabase();
switch (match) {
case STATIS:
rowId = db.insert(DataConstant.StaticticsCacheTrace.TABLE_NAME , DataConstant.StaticticsCacheTrace.Field.CACHEID, values);
if (rowId > 0) {
newUri = ContentUris.withAppendedId(URI_STATIS, rowId);
}
break;
default:
throw new UnsupportedOperationException("Unknown or unsupported URL: " + uri.toString());
}
if (newUri != null) {
getContext().getContentResolver().notifyChange(uri, null);
}
return newUri;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count;
int match = URI_MATCHER.match(uri);
SQLiteDatabase db = sqliteDataBase.getWritableDatabase();
switch (match) {
case STATIS:
count = db.delete(DataConstant.StaticticsCacheTrace.TABLE_NAME, selection, selectionArgs);
break;
default:
throw new UnsupportedOperationException("Unknown or unsupported URL: " + uri.toString());
}
this.getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count;
int match = URI_MATCHER.match(uri);
SQLiteDatabase db = sqliteDataBase.getWritableDatabase();
switch (match) {
case STATIS:
count = db.update(DataConstant.StaticticsCacheTrace.TABLE_NAME, values, selection, selectionArgs);
break;
default:
throw new UnsupportedOperationException("Unknown or unsupported URL: " + uri.toString());
}
this.getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
Cursor cursor = null;
int match = URI_MATCHER.match(uri);
SQLiteDatabase db = sqliteDataBase.getWritableDatabase();
switch (match) {
case STATIS:
cursor = db.query(DataConstant.StaticticsCacheTrace.TABLE_NAME, null, selection, selectionArgs,null, null, sortOrder);
cursor.setNotificationUri(getContext().getContentResolver(), uri);
break;
default:
throw new UnsupportedOperationException("Unknown or unsupported URL: " + uri.toString());
}
return cursor;
}
}