aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-20 21:08:03 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-20 21:10:10 +0900
commit2837ecb06477ac188e424f7798efae7245edfc23 (patch)
treefb167037de5a36c4f5e30aa0e9f5faf2a8413a2c
parentc682e5da97b02701caacd1e4aeedc0106e597ebe (diff)
downloadSmileEssence-2837ecb06477ac188e424f7798efae7245edfc23.tar.gz
inline dbhelper into application
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/Application.kt41
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/World.kt5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/DbHelper.kt45
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.kt6
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
}