mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-06-15 11:59:19 +00:00
Update: Simplify serialize and deserialize for data objects (Repository, Product & ProductItem)
This commit is contained in:
@ -7,11 +7,11 @@ import com.looker.droidify.utility.extension.json.*
|
||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||
|
||||
data class Product(
|
||||
val repositoryId: Long,
|
||||
var repositoryId: Long,
|
||||
val packageName: String,
|
||||
val name: String,
|
||||
val summary: String,
|
||||
val description: String,
|
||||
var description: String,
|
||||
val whatsNew: String,
|
||||
val icon: String,
|
||||
val metadataIcon: String,
|
||||
@ -93,10 +93,12 @@ data class Product(
|
||||
}
|
||||
|
||||
fun serialize(generator: JsonGenerator) {
|
||||
generator.writeNumberField("repositoryId",repositoryId)
|
||||
generator.writeNumberField("serialVersion", 1)
|
||||
generator.writeStringField("packageName", packageName)
|
||||
generator.writeStringField("name", name)
|
||||
generator.writeStringField("summary", summary)
|
||||
generator.writeStringField("description", description)
|
||||
generator.writeStringField("whatsNew", whatsNew)
|
||||
generator.writeStringField("icon", icon)
|
||||
generator.writeStringField("metadataIcon", metadataIcon)
|
||||
@ -169,10 +171,12 @@ data class Product(
|
||||
}, { extract(it).versionCode }))
|
||||
}
|
||||
|
||||
fun deserialize(repositoryId: Long, description: String, parser: JsonParser): Product {
|
||||
fun deserialize(parser: JsonParser): Product {
|
||||
var repositoryId = 0L
|
||||
var packageName = ""
|
||||
var name = ""
|
||||
var summary = ""
|
||||
var description = ""
|
||||
var whatsNew = ""
|
||||
var icon = ""
|
||||
var metadataIcon = ""
|
||||
@ -194,9 +198,11 @@ data class Product(
|
||||
var releases = emptyList<Release>()
|
||||
parser.forEachKey { it ->
|
||||
when {
|
||||
it.string("repositoryId") -> repositoryId = valueAsLong
|
||||
it.string("packageName") -> packageName = valueAsString
|
||||
it.string("name") -> name = valueAsString
|
||||
it.string("summary") -> summary = valueAsString
|
||||
it.string("description") -> description = valueAsString
|
||||
it.string("whatsNew") -> whatsNew = valueAsString
|
||||
it.string("icon") -> icon = valueAsString
|
||||
it.string("metadataIcon") -> metadataIcon = valueAsString
|
||||
|
@ -8,9 +8,9 @@ import com.looker.droidify.utility.KParcelable
|
||||
import com.looker.droidify.utility.extension.json.forEachKey
|
||||
|
||||
data class ProductItem(
|
||||
val repositoryId: Long, val packageName: String, val name: String, val summary: String,
|
||||
val icon: String, val metadataIcon: String, val version: String, val installedVersion: String,
|
||||
val compatible: Boolean, val canUpdate: Boolean, val matchRank: Int
|
||||
var repositoryId: Long, var packageName: String, var name: String, var summary: String,
|
||||
val icon: String, val metadataIcon: String, val version: String, var installedVersion: String,
|
||||
var compatible: Boolean, var canUpdate: Boolean, var matchRank: Int
|
||||
) {
|
||||
sealed class Section : KParcelable {
|
||||
object All : Section() {
|
||||
@ -60,25 +60,45 @@ data class ProductItem(
|
||||
|
||||
fun serialize(generator: JsonGenerator) {
|
||||
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("metadataIcon", metadataIcon)
|
||||
generator.writeStringField("version", version)
|
||||
generator.writeStringField("installedVersion", installedVersion)
|
||||
generator.writeBooleanField("compatible", compatible)
|
||||
generator.writeBooleanField("canUpdate", canUpdate)
|
||||
generator.writeNumberField("matchRank", matchRank)
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun deserialize(
|
||||
repositoryId: Long, packageName: String, name: String, summary: String,
|
||||
installedVersion: String, compatible: Boolean, canUpdate: Boolean, matchRank: Int,
|
||||
parser: JsonParser
|
||||
): ProductItem {
|
||||
fun deserialize(parser: JsonParser): ProductItem {
|
||||
var repositoryId = 0L
|
||||
var packageName = ""
|
||||
var name = ""
|
||||
var summary = ""
|
||||
var icon = ""
|
||||
var metadataIcon = ""
|
||||
var version = ""
|
||||
var installedVersion = ""
|
||||
var compatible = false
|
||||
var canUpdate = false
|
||||
var matchRank = 0
|
||||
parser.forEachKey {
|
||||
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("metadataIcon") -> metadataIcon = 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()
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import com.looker.droidify.utility.extension.json.writeArray
|
||||
import java.net.URL
|
||||
|
||||
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 fingerprint: String, val lastModified: String, val entityTag: String,
|
||||
val updated: Long, val timestamp: Long, val authentication: String
|
||||
@ -43,6 +43,7 @@ data class Repository(
|
||||
|
||||
fun serialize(generator: JsonGenerator) {
|
||||
generator.writeNumberField("serialVersion", 1)
|
||||
generator.writeNumberField("id", id)
|
||||
generator.writeStringField("address", address)
|
||||
generator.writeArray("mirrors") { mirrors.forEach { writeString(it) } }
|
||||
generator.writeStringField("name", name)
|
||||
@ -58,7 +59,8 @@ data class Repository(
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun deserialize(id: Long, parser: JsonParser): Repository {
|
||||
fun deserialize(parser: JsonParser): Repository {
|
||||
var id = 0L
|
||||
var address = ""
|
||||
var mirrors = emptyList<String>()
|
||||
var name = ""
|
||||
@ -73,6 +75,7 @@ data class Repository(
|
||||
var authentication = ""
|
||||
parser.forEachKey {
|
||||
when {
|
||||
it.string("id") -> id = valueAsLong
|
||||
it.string("address") -> address = valueAsString
|
||||
it.array("mirrors") -> mirrors = collectNotNullStrings()
|
||||
it.string("name") -> name = valueAsString
|
||||
|
Reference in New Issue
Block a user