Skip to content

Commit 9c2a5ca

Browse files
committed
Pull out shared for unoptimized entity eq queries
1 parent 471f015 commit 9c2a5ca

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

entities/src/main/java/org/odk/collect/entities/javarosa/intance/LocalEntitiesInstanceAdapter.kt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,26 +54,22 @@ class LocalEntitiesInstanceAdapter(private val entitiesRepository: EntitiesRepos
5454
}
5555

5656
child == EntityItemElement.LABEL -> {
57-
val entities = entitiesRepository.getEntities(instanceId)
58-
entities.filter { it.label == value }.map { convertToElement(it, false) }
57+
filterAndConvertEntities(instanceId) { it.label == value }
5958
}
6059

6160
child == EntityItemElement.VERSION -> {
62-
val entities = entitiesRepository.getEntities(instanceId)
63-
entities.filter { it.version == value.toInt() }.map { convertToElement(it, false) }
61+
filterAndConvertEntities(instanceId) { it.version == value.toInt() }
6462
}
6563

6664
child == EntityItemElement.TRUNK_VERSION -> {
67-
val entities = entitiesRepository.getEntities(instanceId)
68-
entities.filter { it.trunkVersion == value.toInt() }.map { convertToElement(it, false) }
65+
filterAndConvertEntities(instanceId) { it.trunkVersion == value.toInt() }
6966
}
7067

7168
child == EntityItemElement.BRANCH_ID -> {
72-
val entities = entitiesRepository.getEntities(instanceId)
73-
entities.filter { it.branchId == value }.map { convertToElement(it, false) }
69+
filterAndConvertEntities(instanceId) { it.branchId == value }
7470
}
7571

76-
!listOf(EntityItemElement.LABEL, EntityItemElement.VERSION).contains(child) -> {
72+
else -> {
7773
val entities = entitiesRepository.getAllByProperty(
7874
instanceId,
7975
child,
@@ -82,11 +78,17 @@ class LocalEntitiesInstanceAdapter(private val entitiesRepository: EntitiesRepos
8278

8379
entities.map { convertToElement(it, false) }
8480
}
85-
86-
else -> null
8781
}
8882
}
8983

84+
private fun filterAndConvertEntities(
85+
list: String,
86+
filter: (Entity.Saved) -> Boolean
87+
): List<TreeElement> {
88+
val entities = entitiesRepository.getEntities(list)
89+
return entities.filter(filter).map { convertToElement(it, false) }
90+
}
91+
9092
private fun convertToElement(entity: Entity.Saved, partial: Boolean): TreeElement {
9193
val name = TreeElement(EntityItemElement.ID)
9294
val label = TreeElement(EntityItemElement.LABEL)

0 commit comments

Comments
 (0)