diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-20 21:08:03 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-20 21:10:10 +0900 |
commit | 2837ecb06477ac188e424f7798efae7245edfc23 (patch) | |
tree | fb167037de5a36c4f5e30aa0e9f5faf2a8413a2c | |
parent | c682e5da97b02701caacd1e4aeedc0106e597ebe (diff) | |
download | SmileEssence-2837ecb06477ac188e424f7798efae7245edfc23.tar.gz |
inline dbhelper into application
4 files changed, 44 insertions, 53 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/Application.kt b/app/src/main/java/net/lacolaco/smileessence/Application.kt index 17c6e6d6..375336f4 100644 --- a/app/src/main/java/net/lacolaco/smileessence/Application.kt +++ b/app/src/main/java/net/lacolaco/smileessence/Application.kt @@ -1,19 +1,23 @@ package net.lacolaco.smileessence +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteOpenHelper import android.support.annotation.StringRes import android.widget.Toast import com.squareup.leakcanary.LeakCanary -import net.lacolaco.smileessence.data.DbHelper class Application : android.app.Application() { + private lateinit var dbOpenHelper: DbOpenHelper + override fun onCreate() { super.onCreate() if (LeakCanary.isInAnalyzerProcess(this)) return LeakCanary.install(this) + dbOpenHelper = DbOpenHelper(this) instance = this - DbHelper.setup(this) World.load() } @@ -30,5 +34,38 @@ class Application : android.app.Application() { } var currentWorld: World? = null + + val db + get() = instance.dbOpenHelper.writableDatabase!! + } + + private class DbOpenHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) { + override fun onCreate(db: SQLiteDatabase) { + // Schema v1 + db.execSQL(""" + CREATE TABLE profiles ( + id INTEGER PRIMARY KEY, + oauth_token TEXT NOT NULL, + oauth_token_secret TEXT NOT NULL, + screen_name TEXT NOT NULL, + profile_image_url TEXT NOT NULL, + theme INTEGER NOT NULL, + theme_color INTEGER NOT NULL, + page_infos TEXT NOT NULL + ) + """) + onUpgrade(db, 1, DATABASE_VERSION) + } + + override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { + if (oldVersion < 1) { + } + } + + companion object { + private val DATABASE_NAME = "main.db" + private val DATABASE_VERSION = 1 + } } + } diff --git a/app/src/main/java/net/lacolaco/smileessence/World.kt b/app/src/main/java/net/lacolaco/smileessence/World.kt index 788189be..9594f61d 100644 --- a/app/src/main/java/net/lacolaco/smileessence/World.kt +++ b/app/src/main/java/net/lacolaco/smileessence/World.kt @@ -7,7 +7,6 @@ import android.support.design.widget.Snackbar import android.view.View import net.lacolaco.smileessence.activity.MainActivity import net.lacolaco.smileessence.compat.Twitter4J -import net.lacolaco.smileessence.data.DbHelper import net.lacolaco.smileessence.data.PageInfo import net.lacolaco.smileessence.entity.* import net.lacolaco.smileessence.twitter.TwitterTaskException @@ -315,7 +314,7 @@ class World private constructor(private val persistentData: PersistentData) { values.put("page_infos", PageInfo.stringifyList(pageInfos)) values.put("theme", themeIndex) values.put("theme_color", themeColor) - if (DbHelper.db.replaceOrThrow("profiles", null, values) == -1L) + if (Application.db.replaceOrThrow("profiles", null, values) == -1L) throw RuntimeException("SQLiteDatabase#replaceOrThrow failed") } @@ -334,7 +333,7 @@ class World private constructor(private val persistentData: PersistentData) { fun fetchAll(): List<PersistentData> { val ret = arrayListOf<PersistentData>() - DbHelper.db.query("profiles", null, null, null, null, null, null).use { cursor -> + Application.db.query("profiles", null, null, null, null, null, null).use { cursor -> while (cursor != null && cursor.moveToNext()) { val pd = PersistentData( id = cursor.getLong( diff --git a/app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt b/app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt deleted file mode 100644 index 38d76bd6..00000000 --- a/app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt +++ /dev/null @@ -1,45 +0,0 @@ -package net.lacolaco.smileessence.data - -import android.content.Context -import android.database.sqlite.SQLiteDatabase -import android.database.sqlite.SQLiteOpenHelper - -class DbHelper private constructor(context: Context) : - SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) { - override fun onCreate(db: SQLiteDatabase) { - // Schema v1 - db.execSQL(""" - CREATE TABLE profiles ( - id INTEGER PRIMARY KEY, - oauth_token TEXT NOT NULL, - oauth_token_secret TEXT NOT NULL, - screen_name TEXT NOT NULL, - profile_image_url TEXT NOT NULL, - theme INTEGER NOT NULL, - theme_color INTEGER NOT NULL, - page_infos TEXT NOT NULL - ) - """) - onUpgrade(db, 1, DATABASE_VERSION) - } - - override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { - if (oldVersion < 1) { - } - } - - companion object { - private val DATABASE_NAME = "main.db" - private val DATABASE_VERSION = 1 - - // Lifetime is same as Application - private lateinit var instance: DbHelper - - fun setup(context: Context) { - instance = DbHelper(context) - } - - val db - get() = instance.writableDatabase!! - } -} diff --git a/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt b/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt index 5f533112..6f187e6e 100644 --- a/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt +++ b/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt @@ -10,7 +10,7 @@ class ExtractionWord private constructor(val patternString: String) { } fun remove() { - if (DbHelper.db.delete("extraction_words", "pattern_string = ?", arrayOf(patternString)) == 0) + if (Application.db.delete("extraction_words", "pattern_string = ?", arrayOf(patternString)) == 0) throw IllegalStateException("Could not remove patternString=$patternString from extraction_words") cache.remove(this) } @@ -24,7 +24,7 @@ class ExtractionWord private constructor(val patternString: String) { fun load() { cache = HashSet() - DbHelper.db.query("extraction_words", null, null, null, null, null, null).use { cursor -> + Application.db.query("extraction_words", null, null, null, null, null, null).use { cursor -> while (cursor != null && cursor.moveToNext()) cache.add(ExtractionWord(cursor.getString(cursor.getColumnIndexOrThrow("pattern_string")))) } @@ -34,7 +34,7 @@ class ExtractionWord private constructor(val patternString: String) { val extractionWord = ExtractionWord(patternString) val values = ContentValues() values.put("pattern_string", extractionWord.patternString) - DbHelper.db.insertOrThrow("extraction_words", null, values) + Application.db.insertOrThrow("extraction_words", null, values) cache.add(extractionWord) return extractionWord } |