Adding custom field iOS import

csv
Laurent 6 years ago
parent 420055ab1d
commit 685072c30e
  1. 14
      app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt
  2. 16
      app/src/main/java/net/pokeranalytics/android/util/csv/CSVDescriptor.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<CustomFieldEntry>().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
}

@ -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
}
}
}

Loading…
Cancel
Save