65 lines
2.1 KiB
Kotlin
65 lines
2.1 KiB
Kotlin
package jp.juggler.subwaytooter.table
|
|
|
|
import android.content.ContentValues
|
|
import android.database.Cursor
|
|
import android.database.sqlite.SQLiteDatabase
|
|
import jp.juggler.util.data.*
|
|
import jp.juggler.util.log.LogCategory
|
|
import kotlin.math.abs
|
|
|
|
// リスト要素のデータ
|
|
class ImageAspect(
|
|
var id: Long = 0L,
|
|
var url: String = "",
|
|
var aspect: Float = 1f,
|
|
) {
|
|
companion object : TableCompanion {
|
|
private val log = LogCategory("ImageAspect")
|
|
override val table = "image_aspect"
|
|
private const val COL_ID = "_id"
|
|
private const val COL_URL = "u"
|
|
private const val COL_ASPECT = "aspect"
|
|
|
|
val columnList = MetaColumns(table, 67).apply {
|
|
column(0, COL_ID, "INTEGER PRIMARY KEY")
|
|
column(0, COL_URL, "text not null")
|
|
column(0, COL_ASPECT, "real not null")
|
|
createExtra={
|
|
arrayOf(
|
|
"create unique index if not exists ${table}_u on $table($COL_URL)",
|
|
)
|
|
}
|
|
}
|
|
override fun onDBCreate(db: SQLiteDatabase) {
|
|
log.d("onDBCreate!")
|
|
columnList.onDBCreate(db)
|
|
}
|
|
|
|
override fun onDBUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
|
columnList.onDBUpgrade(db,oldVersion,newVersion)
|
|
}
|
|
}
|
|
|
|
class Access(val db: SQLiteDatabase) {
|
|
fun load(url:String) :Float?=
|
|
db.rawQuery(
|
|
"select $COL_ASPECT from $table where $COL_URL=?",
|
|
arrayOf(url),
|
|
).use { cursor->
|
|
when {
|
|
cursor.moveToNext() -> cursor.getFloat(0)
|
|
else -> null
|
|
}
|
|
}
|
|
|
|
fun save(url:String,aspect:Float) {
|
|
val oldAspect = load(url)
|
|
if( oldAspect != null && abs(oldAspect-aspect) <= 1.4E-40F) return
|
|
ContentValues().apply {
|
|
put(COL_URL, url)
|
|
put(COL_ASPECT, aspect)
|
|
}.replaceTo(db, table)
|
|
}
|
|
}
|
|
}
|