package com.yokmama.learn10.chapter08.lesson35; 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 greendao.DaoMaster; import greendao.MemoDao; /** * Created by yokmama on 15/03/19. */ public class MyContentProvider extends ContentProvider { public static final Uri CONTENT_URI = Uri.parse("content://com.yokmama.learn10.chapter08.lesson35/memo"); private static final int MEMO = 1; private static final int MEMO_ID = 2; private static final UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); static { matcher.addURI(CONTENT_URI.getAuthority(), "memo", MEMO); matcher.addURI(CONTENT_URI.getAuthority(), "memo/#", MEMO_ID); } private SQLiteDatabase mDatabase; public MyContentProvider() { } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int type = matcher.match(uri); switch (type) { case MEMO: return mDatabase.delete(MemoDao.TABLENAME, selection, selectionArgs); case MEMO_ID: return mDatabase.delete(MemoDao.TABLENAME, "_ID = ?", new String[]{uri.getLastPathSegment()}); default: return 0; } } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { long id = mDatabase.insert(MemoDao.TABLENAME, null, values); if (id >= 0) { return Uri.withAppendedPath(uri, String.valueOf(id)); } else { return null; } } @Override public boolean onCreate() { DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(getContext(), "example-db", null); mDatabase = helper.getWritableDatabase(); return false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { int type = matcher.match(uri); switch (type) { case MEMO: return mDatabase.query(MemoDao.TABLENAME, projection, selection, selectionArgs, null, null, sortOrder); case MEMO_ID: return mDatabase.query(MemoDao.TABLENAME, projection, "_ID = ?", new String[]{uri.getLastPathSegment()}, null, null, sortOrder); default: return null; } } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int result = matcher.match(uri); switch (result) { case MEMO: return mDatabase.update(MemoDao.TABLENAME, values, selection, selectionArgs); case MEMO_ID: return mDatabase.update(MemoDao.TABLENAME, values, "_ID = ?", new String[]{uri.getLastPathSegment()}); default: return 0; } } }