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