pull/48/head
kunfei 5 years ago
parent aa52663f19
commit 2ec754a791
  1. 2
      app/src/main/java/io/legado/app/data/entities/BaseBook.kt
  2. 11
      app/src/main/java/io/legado/app/data/entities/Book.kt
  3. 32
      app/src/main/java/io/legado/app/data/entities/BookChapter.kt
  4. 12
      app/src/main/java/io/legado/app/data/entities/SearchBook.kt

@ -3,7 +3,7 @@ package io.legado.app.data.entities
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
interface BaseBook { interface BaseBook {
var variableMap: HashMap<String, String> var variableMap: HashMap<String, String>?
var kind: String? var kind: String?
var wordCount: String? var wordCount: String?

@ -47,9 +47,16 @@ data class Book(
var useReplaceRule: Boolean = true, // 正文使用净化替换规则 var useReplaceRule: Boolean = true, // 正文使用净化替换规则
var variable: String? = null // 自定义书籍变量信息(用于书源规则检索书籍信息) var variable: String? = null // 自定义书籍变量信息(用于书源规则检索书籍信息)
) : Parcelable, BaseBook { ) : Parcelable, BaseBook {
@Ignore @Ignore
@IgnoredOnParcel @IgnoredOnParcel
override var variableMap: HashMap<String, String> = GSON.fromJsonObject(variable) ?: HashMap() override var variableMap: HashMap<String, String>? = null
get() {
if (field == null) {
field = GSON.fromJsonObject<HashMap<String, String>>(variable) ?: HashMap()
}
return field
}
@Ignore @Ignore
@IgnoredOnParcel @IgnoredOnParcel
@ -66,7 +73,7 @@ data class Book(
fun getDisplayIntro() = if (customIntro.isNullOrEmpty()) intro else customIntro fun getDisplayIntro() = if (customIntro.isNullOrEmpty()) intro else customIntro
override fun putVariable(key: String, value: String) { override fun putVariable(key: String, value: String) {
variableMap[key] = value variableMap?.put(key, value)
variable = GSON.toJson(variableMap) variable = GSON.toJson(variableMap)
} }

@ -3,7 +3,11 @@ package io.legado.app.data.entities
import android.os.Parcelable import android.os.Parcelable
import androidx.room.Entity import androidx.room.Entity
import androidx.room.ForeignKey import androidx.room.ForeignKey
import androidx.room.Ignore
import androidx.room.Index import androidx.room.Index
import io.legado.app.utils.GSON
import io.legado.app.utils.fromJsonObject
import kotlinx.android.parcel.IgnoredOnParcel
import kotlinx.android.parcel.Parcelize import kotlinx.android.parcel.Parcelize
@ -11,7 +15,10 @@ import kotlinx.android.parcel.Parcelize
@Entity( @Entity(
tableName = "chapters", tableName = "chapters",
primaryKeys = ["url", "bookUrl"], primaryKeys = ["url", "bookUrl"],
indices = [(Index(value = ["bookUrl"], unique = false)), (Index(value = ["bookUrl", "index"], unique = true))], indices = [(Index(value = ["bookUrl"], unique = false)), (Index(
value = ["bookUrl", "index"],
unique = true
))],
foreignKeys = [(ForeignKey( foreignKeys = [(ForeignKey(
entity = Book::class, entity = Book::class,
parentColumns = ["bookUrl"], parentColumns = ["bookUrl"],
@ -27,6 +34,25 @@ data class BookChapter(
var resourceUrl: String? = null, // 音频真实URL var resourceUrl: String? = null, // 音频真实URL
var tag: String? = null, // var tag: String? = null, //
var start: Long? = null, // 章节起始位置 var start: Long? = null, // 章节起始位置
var end: Long? = null // 章节终止位置 var end: Long? = null, // 章节终止位置
) : Parcelable var variable: String? = null
) : Parcelable {
@Ignore
@IgnoredOnParcel
var variableMap: HashMap<String, String>? = null
private set
get() {
if (field == null) {
field = GSON.fromJsonObject<HashMap<String, String>>(variable) ?: HashMap()
}
return field
}
fun putVariable(key: String, value: String) {
variableMap?.put(key, value)
variable = GSON.toJson(variableMap)
}
}

@ -56,12 +56,18 @@ data class SearchBook(
return other.originOrder - this.originOrder return other.originOrder - this.originOrder
} }
@IgnoredOnParcel
@Ignore @Ignore
override var variableMap: HashMap<String, String> = GSON.fromJsonObject(variable) ?: HashMap() @IgnoredOnParcel
override var variableMap: HashMap<String, String>? = null
get() {
if (field == null) {
field = GSON.fromJsonObject<HashMap<String, String>>(variable) ?: HashMap()
}
return field
}
override fun putVariable(key: String, value: String) { override fun putVariable(key: String, value: String) {
variableMap[key] = value variableMap?.put(key, value)
variable = GSON.toJson(variableMap) variable = GSON.toJson(variableMap)
} }

Loading…
Cancel
Save