mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Update: Simplify serialize and deserialize for data objects (Repository, Product & ProductItem)
This commit is contained in:
parent
39ebb6fdf6
commit
268d5be601
@ -453,10 +453,9 @@ object Database {
|
|||||||
fun transform(cursor: Cursor): Repository {
|
fun transform(cursor: Cursor): Repository {
|
||||||
return cursor.getBlob(cursor.getColumnIndex(Schema.Repository.ROW_DATA))
|
return cursor.getBlob(cursor.getColumnIndex(Schema.Repository.ROW_DATA))
|
||||||
.jsonParse {
|
.jsonParse {
|
||||||
Repository.deserialize(
|
Repository.deserialize(it).apply {
|
||||||
cursor.getLong(cursor.getColumnIndex(Schema.Repository.ROW_ID)),
|
this.id = cursor.getLong(cursor.getColumnIndex(Schema.Repository.ROW_ID))
|
||||||
it
|
}
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -567,27 +566,37 @@ object Database {
|
|||||||
private fun transform(cursor: Cursor): Product {
|
private fun transform(cursor: Cursor): Product {
|
||||||
return cursor.getBlob(cursor.getColumnIndex(Schema.Product.ROW_DATA))
|
return cursor.getBlob(cursor.getColumnIndex(Schema.Product.ROW_DATA))
|
||||||
.jsonParse {
|
.jsonParse {
|
||||||
Product.deserialize(
|
Product.deserialize(it).apply {
|
||||||
cursor.getLong(cursor.getColumnIndex(Schema.Product.ROW_REPOSITORY_ID)),
|
this.repositoryId = cursor
|
||||||
cursor.getString(cursor.getColumnIndex(Schema.Product.ROW_DESCRIPTION)), it
|
.getLong(cursor.getColumnIndex(Schema.Product.ROW_REPOSITORY_ID))
|
||||||
)
|
this.description = cursor
|
||||||
|
.getString(cursor.getColumnIndex(Schema.Product.ROW_DESCRIPTION))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun transformItem(cursor: Cursor): ProductItem {
|
fun transformItem(cursor: Cursor): ProductItem {
|
||||||
return cursor.getBlob(cursor.getColumnIndex(Schema.Product.ROW_DATA_ITEM))
|
return cursor.getBlob(cursor.getColumnIndex(Schema.Product.ROW_DATA_ITEM))
|
||||||
.jsonParse {
|
.jsonParse {
|
||||||
ProductItem.deserialize(
|
ProductItem.deserialize(it).apply {
|
||||||
cursor.getLong(cursor.getColumnIndex(Schema.Product.ROW_REPOSITORY_ID)),
|
this.repositoryId = cursor
|
||||||
cursor.getString(cursor.getColumnIndex(Schema.Product.ROW_PACKAGE_NAME)),
|
.getLong(cursor.getColumnIndex(Schema.Product.ROW_REPOSITORY_ID))
|
||||||
cursor.getString(cursor.getColumnIndex(Schema.Product.ROW_NAME)),
|
this.packageName = cursor
|
||||||
cursor.getString(cursor.getColumnIndex(Schema.Product.ROW_SUMMARY)),
|
.getString(cursor.getColumnIndex(Schema.Product.ROW_PACKAGE_NAME))
|
||||||
cursor.getString(cursor.getColumnIndex(Schema.Installed.ROW_VERSION))
|
this.name = cursor
|
||||||
.orEmpty(),
|
.getString(cursor.getColumnIndex(Schema.Product.ROW_NAME))
|
||||||
cursor.getInt(cursor.getColumnIndex(Schema.Product.ROW_COMPATIBLE)) != 0,
|
this.summary = cursor
|
||||||
cursor.getInt(cursor.getColumnIndex(Schema.Synthetic.ROW_CAN_UPDATE)) != 0,
|
.getString(cursor.getColumnIndex(Schema.Product.ROW_SUMMARY))
|
||||||
cursor.getInt(cursor.getColumnIndex(Schema.Synthetic.ROW_MATCH_RANK)), it
|
this.installedVersion = cursor
|
||||||
)
|
.getString(cursor.getColumnIndex(Schema.Installed.ROW_VERSION))
|
||||||
|
.orEmpty()
|
||||||
|
this.compatible = cursor
|
||||||
|
.getInt(cursor.getColumnIndex(Schema.Product.ROW_COMPATIBLE)) != 0
|
||||||
|
this.canUpdate = cursor
|
||||||
|
.getInt(cursor.getColumnIndex(Schema.Synthetic.ROW_CAN_UPDATE)) != 0
|
||||||
|
this.matchRank = cursor
|
||||||
|
.getInt(cursor.getColumnIndex(Schema.Synthetic.ROW_MATCH_RANK))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,11 @@ import com.looker.droidify.utility.extension.json.*
|
|||||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||||
|
|
||||||
data class Product(
|
data class Product(
|
||||||
val repositoryId: Long,
|
var repositoryId: Long,
|
||||||
val packageName: String,
|
val packageName: String,
|
||||||
val name: String,
|
val name: String,
|
||||||
val summary: String,
|
val summary: String,
|
||||||
val description: String,
|
var description: String,
|
||||||
val whatsNew: String,
|
val whatsNew: String,
|
||||||
val icon: String,
|
val icon: String,
|
||||||
val metadataIcon: String,
|
val metadataIcon: String,
|
||||||
@ -93,10 +93,12 @@ data class Product(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun serialize(generator: JsonGenerator) {
|
fun serialize(generator: JsonGenerator) {
|
||||||
|
generator.writeNumberField("repositoryId",repositoryId)
|
||||||
generator.writeNumberField("serialVersion", 1)
|
generator.writeNumberField("serialVersion", 1)
|
||||||
generator.writeStringField("packageName", packageName)
|
generator.writeStringField("packageName", packageName)
|
||||||
generator.writeStringField("name", name)
|
generator.writeStringField("name", name)
|
||||||
generator.writeStringField("summary", summary)
|
generator.writeStringField("summary", summary)
|
||||||
|
generator.writeStringField("description", description)
|
||||||
generator.writeStringField("whatsNew", whatsNew)
|
generator.writeStringField("whatsNew", whatsNew)
|
||||||
generator.writeStringField("icon", icon)
|
generator.writeStringField("icon", icon)
|
||||||
generator.writeStringField("metadataIcon", metadataIcon)
|
generator.writeStringField("metadataIcon", metadataIcon)
|
||||||
@ -169,10 +171,12 @@ data class Product(
|
|||||||
}, { extract(it).versionCode }))
|
}, { extract(it).versionCode }))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deserialize(repositoryId: Long, description: String, parser: JsonParser): Product {
|
fun deserialize(parser: JsonParser): Product {
|
||||||
|
var repositoryId = 0L
|
||||||
var packageName = ""
|
var packageName = ""
|
||||||
var name = ""
|
var name = ""
|
||||||
var summary = ""
|
var summary = ""
|
||||||
|
var description = ""
|
||||||
var whatsNew = ""
|
var whatsNew = ""
|
||||||
var icon = ""
|
var icon = ""
|
||||||
var metadataIcon = ""
|
var metadataIcon = ""
|
||||||
@ -194,9 +198,11 @@ data class Product(
|
|||||||
var releases = emptyList<Release>()
|
var releases = emptyList<Release>()
|
||||||
parser.forEachKey { it ->
|
parser.forEachKey { it ->
|
||||||
when {
|
when {
|
||||||
|
it.string("repositoryId") -> repositoryId = valueAsLong
|
||||||
it.string("packageName") -> packageName = valueAsString
|
it.string("packageName") -> packageName = valueAsString
|
||||||
it.string("name") -> name = valueAsString
|
it.string("name") -> name = valueAsString
|
||||||
it.string("summary") -> summary = valueAsString
|
it.string("summary") -> summary = valueAsString
|
||||||
|
it.string("description") -> description = valueAsString
|
||||||
it.string("whatsNew") -> whatsNew = valueAsString
|
it.string("whatsNew") -> whatsNew = valueAsString
|
||||||
it.string("icon") -> icon = valueAsString
|
it.string("icon") -> icon = valueAsString
|
||||||
it.string("metadataIcon") -> metadataIcon = valueAsString
|
it.string("metadataIcon") -> metadataIcon = valueAsString
|
||||||
|
@ -8,9 +8,9 @@ import com.looker.droidify.utility.KParcelable
|
|||||||
import com.looker.droidify.utility.extension.json.forEachKey
|
import com.looker.droidify.utility.extension.json.forEachKey
|
||||||
|
|
||||||
data class ProductItem(
|
data class ProductItem(
|
||||||
val repositoryId: Long, val packageName: String, val name: String, val summary: String,
|
var repositoryId: Long, var packageName: String, var name: String, var summary: String,
|
||||||
val icon: String, val metadataIcon: String, val version: String, val installedVersion: String,
|
val icon: String, val metadataIcon: String, val version: String, var installedVersion: String,
|
||||||
val compatible: Boolean, val canUpdate: Boolean, val matchRank: Int
|
var compatible: Boolean, var canUpdate: Boolean, var matchRank: Int
|
||||||
) {
|
) {
|
||||||
sealed class Section : KParcelable {
|
sealed class Section : KParcelable {
|
||||||
object All : Section() {
|
object All : Section() {
|
||||||
@ -60,25 +60,45 @@ data class ProductItem(
|
|||||||
|
|
||||||
fun serialize(generator: JsonGenerator) {
|
fun serialize(generator: JsonGenerator) {
|
||||||
generator.writeNumberField("serialVersion", 1)
|
generator.writeNumberField("serialVersion", 1)
|
||||||
|
generator.writeNumberField("repositoryId", repositoryId)
|
||||||
|
generator.writeStringField("packageName", packageName)
|
||||||
|
generator.writeStringField("name", name)
|
||||||
|
generator.writeStringField("summary", summary)
|
||||||
generator.writeStringField("icon", icon)
|
generator.writeStringField("icon", icon)
|
||||||
generator.writeStringField("metadataIcon", metadataIcon)
|
generator.writeStringField("metadataIcon", metadataIcon)
|
||||||
generator.writeStringField("version", version)
|
generator.writeStringField("version", version)
|
||||||
|
generator.writeStringField("installedVersion", installedVersion)
|
||||||
|
generator.writeBooleanField("compatible", compatible)
|
||||||
|
generator.writeBooleanField("canUpdate", canUpdate)
|
||||||
|
generator.writeNumberField("matchRank", matchRank)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun deserialize(
|
fun deserialize(parser: JsonParser): ProductItem {
|
||||||
repositoryId: Long, packageName: String, name: String, summary: String,
|
var repositoryId = 0L
|
||||||
installedVersion: String, compatible: Boolean, canUpdate: Boolean, matchRank: Int,
|
var packageName = ""
|
||||||
parser: JsonParser
|
var name = ""
|
||||||
): ProductItem {
|
var summary = ""
|
||||||
var icon = ""
|
var icon = ""
|
||||||
var metadataIcon = ""
|
var metadataIcon = ""
|
||||||
var version = ""
|
var version = ""
|
||||||
|
var installedVersion = ""
|
||||||
|
var compatible = false
|
||||||
|
var canUpdate = false
|
||||||
|
var matchRank = 0
|
||||||
parser.forEachKey {
|
parser.forEachKey {
|
||||||
when {
|
when {
|
||||||
|
it.number("repositoryId") -> repositoryId = valueAsLong
|
||||||
|
it.string("packageName") -> packageName = valueAsString
|
||||||
|
it.string("name") -> name = valueAsString
|
||||||
|
it.string("summary") -> summary = valueAsString
|
||||||
it.string("icon") -> icon = valueAsString
|
it.string("icon") -> icon = valueAsString
|
||||||
it.string("metadataIcon") -> metadataIcon = valueAsString
|
it.string("metadataIcon") -> metadataIcon = valueAsString
|
||||||
it.string("version") -> version = valueAsString
|
it.string("version") -> version = valueAsString
|
||||||
|
it.string("installedVersion") -> installedVersion = valueAsString
|
||||||
|
it.boolean("compatible") -> compatible = valueAsBoolean
|
||||||
|
it.boolean("canUpdate") -> canUpdate = valueAsBoolean
|
||||||
|
it.number("matchRank") -> matchRank = valueAsInt
|
||||||
else -> skipChildren()
|
else -> skipChildren()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import com.looker.droidify.utility.extension.json.writeArray
|
|||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
data class Repository(
|
data class Repository(
|
||||||
val id: Long, val address: String, val mirrors: List<String>,
|
var id: Long, val address: String, val mirrors: List<String>,
|
||||||
val name: String, val description: String, val version: Int, val enabled: Boolean,
|
val name: String, val description: String, val version: Int, val enabled: Boolean,
|
||||||
val fingerprint: String, val lastModified: String, val entityTag: String,
|
val fingerprint: String, val lastModified: String, val entityTag: String,
|
||||||
val updated: Long, val timestamp: Long, val authentication: String
|
val updated: Long, val timestamp: Long, val authentication: String
|
||||||
@ -43,6 +43,7 @@ data class Repository(
|
|||||||
|
|
||||||
fun serialize(generator: JsonGenerator) {
|
fun serialize(generator: JsonGenerator) {
|
||||||
generator.writeNumberField("serialVersion", 1)
|
generator.writeNumberField("serialVersion", 1)
|
||||||
|
generator.writeNumberField("id", id)
|
||||||
generator.writeStringField("address", address)
|
generator.writeStringField("address", address)
|
||||||
generator.writeArray("mirrors") { mirrors.forEach { writeString(it) } }
|
generator.writeArray("mirrors") { mirrors.forEach { writeString(it) } }
|
||||||
generator.writeStringField("name", name)
|
generator.writeStringField("name", name)
|
||||||
@ -58,7 +59,8 @@ data class Repository(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun deserialize(id: Long, parser: JsonParser): Repository {
|
fun deserialize(parser: JsonParser): Repository {
|
||||||
|
var id = 0L
|
||||||
var address = ""
|
var address = ""
|
||||||
var mirrors = emptyList<String>()
|
var mirrors = emptyList<String>()
|
||||||
var name = ""
|
var name = ""
|
||||||
@ -73,6 +75,7 @@ data class Repository(
|
|||||||
var authentication = ""
|
var authentication = ""
|
||||||
parser.forEachKey {
|
parser.forEachKey {
|
||||||
when {
|
when {
|
||||||
|
it.string("id") -> id = valueAsLong
|
||||||
it.string("address") -> address = valueAsString
|
it.string("address") -> address = valueAsString
|
||||||
it.array("mirrors") -> mirrors = collectNotNullStrings()
|
it.array("mirrors") -> mirrors = collectNotNullStrings()
|
||||||
it.string("name") -> name = valueAsString
|
it.string("name") -> name = valueAsString
|
||||||
|
@ -74,7 +74,10 @@ class IndexMerger(file: File) : Closeable {
|
|||||||
val description = it.getString(0)
|
val description = it.getString(0)
|
||||||
val product = Json.factory.createParser(it.getBlob(1)).use {
|
val product = Json.factory.createParser(it.getBlob(1)).use {
|
||||||
it.nextToken()
|
it.nextToken()
|
||||||
Product.deserialize(repositoryId, description, it)
|
Product.deserialize(it).apply {
|
||||||
|
this.repositoryId = repositoryId
|
||||||
|
this.description = description
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val releases = it.getBlob(2)?.let {
|
val releases = it.getBlob(2)?.let {
|
||||||
Json.factory.createParser(it).use {
|
Json.factory.createParser(it).use {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user