Adding custom field iOS import

csv
Laurent 6 years ago
parent 420055ab1d
commit 685072c30e
  1. 10
      app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt
  2. 16
      app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.kt

@ -298,7 +298,8 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
realm.executeTransaction { realm.executeTransaction {
this.entriesToDelete.forEach { // entries are out of realm this.entriesToDelete.forEach {
// entries are out of realm
realm.where<CustomFieldEntry>().equalTo("id", it.id).findFirst()?.deleteFromRealm() realm.where<CustomFieldEntry>().equalTo("id", it.id).findFirst()?.deleteFromRealm()
} }
} }
@ -344,8 +345,13 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
} }
val entry = this.realm.copyToRealm(CustomFieldEntry()) val entry = this.realm.copyToRealm(CustomFieldEntry())
entry.name = name entry.value = name
this.entries.add(entry) this.entries.add(entry)
// return if (managed) {
// this.realm.copyToRealm(entry)
// } else {
// entry
// }
return entry return entry
} }

@ -136,33 +136,35 @@ abstract class CSVDescriptor(var source: DataSource, vararg elements: CSVField)
fun mapCustomField(record: CSVRecord, realm: Realm) { fun mapCustomField(record: CSVRecord, realm: Realm) {
val customFields = realm.where(CustomField::class.java).findAll() val customFields = realm.where(CustomField::class.java).findAll()
val headers = record.toSet() val headers = record.toSet()
headers.forEach { header -> headers.forEachIndexed { index, header ->
var name = header
// automatically creates custom field if necessary // automatically creates custom field if necessary
if (source == DataSource.POKER_ANALYTICS) { if (source == DataSource.POKER_ANALYTICS) {
val splitter = "|" val splitter = "|"
if (header.contains(splitter)) { if (header.contains(splitter)) {
val info = header.split(splitter) val info = header.split(splitter)
name = info.first()
val typeIdentifier = NumberFormat.getInstance().parse(header.last().toString()) val typeIdentifier = NumberFormat.getInstance().parse(header.last().toString())
Timber.d("header = $header, info = $info, id = $typeIdentifier") Timber.d("header = $header, info = $info, id = $typeIdentifier")
val type = CustomField.Type.valueByIdentifier(typeIdentifier.toInt()) val type = CustomField.Type.valueByIdentifier(typeIdentifier.toInt())
CustomField.getOrCreate(realm, info.first(), type) CustomField.getOrCreate(realm, name, type)
} }
} }
// maps header with custom fields // maps header with custom fields
val customField = customFields.firstOrNull { it.name == header } val customField = customFields.firstOrNull { it.name == name }
customField?.let { customField?.let {
if (it.isListType) { if (it.isListType) {
val f = MappedCustomCSVField.List(header, null, it) val f = MappedCustomCSVField.List(header, null, it)
fields.add(f) this.fields.add(f)
this.fieldMapping[f] = index
} else { } else {
val f = MappedCustomCSVField.Number(header, null, "", it) val f = MappedCustomCSVField.Number(header, null, "", it)
fields.add(f) this.fields.add(f)
this.fieldMapping[f] = index
} }
} }
} }

Loading…
Cancel
Save