package com.tomclaw.mandarin.core; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import com.tomclaw.mandarin.util.QueryBuilder; /** * Created by solkin on 17.06.15. */ public class SQLiteDatabaseLayer implements DatabaseLayer { private SQLiteDatabase sqLiteDatabase; private static class Holder { static SQLiteDatabaseLayer instance = new SQLiteDatabaseLayer(); } public static SQLiteDatabaseLayer getInstance(SQLiteDatabase sqLiteDatabase) { Holder.instance.sqLiteDatabase = sqLiteDatabase; return Holder.instance; } private SQLiteDatabaseLayer() { } @Override public void insert(Uri uri, ContentValues contentValues) { sqLiteDatabase.insert(getTableOfUri(uri), null, contentValues); } @Override public int update(Uri uri, ContentValues contentValues, QueryBuilder queryBuilder) { return sqLiteDatabase.update(getTableOfUri(uri), contentValues, queryBuilder.getSelect(), null); } @Override public Cursor query(Uri uri, QueryBuilder queryBuilder) { return sqLiteDatabase.query(getTableOfUri(uri), null, queryBuilder.getSelect(), null, null, null, queryBuilder.getSort()); } @Override public int delete(Uri uri, QueryBuilder queryBuilder) { return sqLiteDatabase.delete(getTableOfUri(uri), queryBuilder.getSelect(), null); } private static String getTableOfUri(Uri uri) { String uriString = uri.toString(); // Check for this is app-specific Uri. if (!uriString.startsWith(Settings.URI_PREFIX)) { return null; } // Trim a little bit to get table. return uriString.substring(Settings.URI_PREFIX.length()); } }