From 37bfe592263107cf89e9d61005921d0a395d97a8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 8 Apr 2018 12:53:43 +0200 Subject: [PATCH] reuse the same gson instance in whole DBHelper --- .../contacts/helpers/DBHelper.kt | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt index a13b7aeb..f16e2952 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt @@ -50,6 +50,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont private const val DB_VERSION = 4 const val DB_NAME = "contacts.db" var dbInstance: DBHelper? = null + var gson = Gson() fun newInstance(context: Context): DBHelper { if (dbInstance == null) @@ -124,13 +125,13 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont put(COL_MIDDLE_NAME, contact.middleName) put(COL_SURNAME, contact.surname) put(COL_SUFFIX, contact.suffix) - put(COL_PHONE_NUMBERS, Gson().toJson(contact.phoneNumbers)) - put(COL_EMAILS, Gson().toJson(contact.emails)) - put(COL_ADDRESSES, Gson().toJson(contact.addresses)) - put(COL_EVENTS, Gson().toJson(contact.events)) + put(COL_PHONE_NUMBERS, gson.toJson(contact.phoneNumbers)) + put(COL_EMAILS, gson.toJson(contact.emails)) + put(COL_ADDRESSES, gson.toJson(contact.addresses)) + put(COL_EVENTS, gson.toJson(contact.events)) put(COL_STARRED, contact.starred) put(COL_NOTES, contact.notes) - put(COL_GROUPS, Gson().toJson(contact.groups.map { it.id })) + put(COL_GROUPS, gson.toJson(contact.groups.map { it.id })) put(COL_COMPANY, contact.organization.company) put(COL_JOB_POSITION, contact.organization.jobPosition) @@ -233,7 +234,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont private fun fillContactGroupValues(groupIds: ArrayList): ContentValues { return ContentValues().apply { - put(COL_GROUPS, Gson().toJson(groupIds)) + put(COL_GROUPS, gson.toJson(groupIds)) } } @@ -260,16 +261,20 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont val suffix = cursor.getStringValue(COL_SUFFIX) val phoneNumbersJson = cursor.getStringValue(COL_PHONE_NUMBERS) - val phoneNumbers = Gson().fromJson>(phoneNumbersJson, phoneNumbersToken) ?: ArrayList(1) + val phoneNumbers = if (phoneNumbersJson == "[]") ArrayList() else gson.fromJson>(phoneNumbersJson, phoneNumbersToken) + ?: ArrayList(1) val emailsJson = cursor.getStringValue(COL_EMAILS) - val emails = Gson().fromJson>(emailsJson, emailsToken) ?: ArrayList(1) + val emails = if (emailsJson == "[]") ArrayList() else gson.fromJson>(emailsJson, emailsToken) + ?: ArrayList(1) val addressesJson = cursor.getStringValue(COL_ADDRESSES) - val addresses = Gson().fromJson>(addressesJson, addressesToken) ?: ArrayList(1) + val addresses = if (addressesJson == "[]") ArrayList() else gson.fromJson>(addressesJson, addressesToken) + ?: ArrayList(1) val eventsJson = cursor.getStringValue(COL_EVENTS) - val events = Gson().fromJson>(eventsJson, eventsToken) ?: ArrayList(1) + val events = if (eventsJson == "[]") ArrayList() else gson.fromJson>(eventsJson, eventsToken) + ?: ArrayList(1) val photoByteArray = cursor.getBlobValue(COL_PHOTO) ?: null val photo = if (photoByteArray?.isNotEmpty() == true) { @@ -282,7 +287,8 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont val starred = cursor.getIntValue(COL_STARRED) val groupIdsJson = cursor.getStringValue(COL_GROUPS) - val groupIds = Gson().fromJson>(groupIdsJson, groupIdsToken) ?: ArrayList(1) + val groupIds = if (groupIdsJson == "[]") ArrayList() else gson.fromJson>(groupIdsJson, groupIdsToken) + ?: ArrayList(1) val groups = storedGroups.filter { groupIds.contains(it.id) } as ArrayList val company = cursor.getStringValue(COL_COMPANY)