From 685072c30e1b7e830c58beffc476ce9b374045fa Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 3 Jul 2019 18:08:41 +0200 Subject: [PATCH] Adding custom field iOS import --- .../android/model/realm/CustomField.kt | 14 ++++++++++---- .../android/util/csv/CSVDescriptor.kt | 16 +++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt index 096a9c6a..abc3adc6 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt @@ -33,7 +33,7 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa companion object { - fun getOrCreate(realm: Realm, name: String, type: Type) : CustomField { + fun getOrCreate(realm: Realm, name: String, type: Type): CustomField { val cf = realm.findByName(CustomField::class.java, name) cf?.let { return it @@ -298,7 +298,8 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa val realm = Realm.getDefaultInstance() realm.executeTransaction { - this.entriesToDelete.forEach { // entries are out of realm + this.entriesToDelete.forEach { + // entries are out of realm realm.where().equalTo("id", it.id).findFirst()?.deleteFromRealm() } } @@ -337,15 +338,20 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa } } - fun getOrCreateListEntry(name: String) : CustomFieldEntry { + fun getOrCreateListEntry(name: String): CustomFieldEntry { this.entries.firstOrNull { it.name == name }?.let { return it } val entry = this.realm.copyToRealm(CustomFieldEntry()) - entry.name = name + entry.value = name this.entries.add(entry) +// return if (managed) { +// this.realm.copyToRealm(entry) +// } else { +// entry +// } return entry } diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt index f4aef785..d7ca4c65 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt @@ -136,33 +136,35 @@ abstract class CSVDescriptor(var source: DataSource, vararg elements: CSVField) fun mapCustomField(record: CSVRecord, realm: Realm) { val customFields = realm.where(CustomField::class.java).findAll() val headers = record.toSet() - headers.forEach { header -> + headers.forEachIndexed { index, header -> + var name = header // automatically creates custom field if necessary if (source == DataSource.POKER_ANALYTICS) { val splitter = "|" if (header.contains(splitter)) { val info = header.split(splitter) + name = info.first() val typeIdentifier = NumberFormat.getInstance().parse(header.last().toString()) Timber.d("header = $header, info = $info, id = $typeIdentifier") val type = CustomField.Type.valueByIdentifier(typeIdentifier.toInt()) - CustomField.getOrCreate(realm, info.first(), type) + CustomField.getOrCreate(realm, name, type) } } // maps header with custom fields - val customField = customFields.firstOrNull { it.name == header } + val customField = customFields.firstOrNull { it.name == name } customField?.let { if (it.isListType) { val f = MappedCustomCSVField.List(header, null, it) - fields.add(f) + this.fields.add(f) + this.fieldMapping[f] = index } else { val f = MappedCustomCSVField.Number(header, null, "", it) - fields.add(f) + this.fields.add(f) + this.fieldMapping[f] = index } - - } }