Skip to content

Commit f7bf7dc

Browse files
committed
[ANDROSDK-2336] make mapNotNullItems generic on PayloadJson
1 parent b33294a commit f7bf7dc

5 files changed

Lines changed: 22 additions & 19 deletions

File tree

core/src/main/java/org/hisp/dhis/android/network/common/PayloadJson.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,10 @@ internal open class PayloadJson<T>(
5656
): PayloadJson<P> {
5757
return PayloadJson(pager, items.map(transform))
5858
}
59+
60+
fun <P> mapNotNullItems(
61+
transform: (T) -> P?,
62+
): PayloadJson<P> {
63+
return PayloadJson(pager, items.mapNotNull(transform))
64+
}
5965
}

core/src/main/java/org/hisp/dhis/android/network/programstageworkinglist/ProgramStageWorkingListDTO.kt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,18 @@ internal data class ProgramStageWorkingListDTO(
5151
val programStage: ObjectWithUidDTO?,
5252
val programStageQueryCriteria: ProgramStageQueryCriteriaDTO,
5353
) : BaseIdentifiableObjectDTO {
54-
fun toDomain(): ProgramStageWorkingList {
55-
return ProgramStageWorkingList.builder()
56-
.applyBaseIdentifiableFields(this)
57-
.description(description)
58-
.apply {
59-
program?.let { program(it.toDomain()) }
60-
programStage?.let { programStage(it.toDomain()) }
61-
}
62-
.programStageQueryCriteria(programStageQueryCriteria.toDomain(id))
63-
.build()
54+
fun toDomain(): ProgramStageWorkingList? {
55+
return if (program != null && programStage != null) {
56+
ProgramStageWorkingList.builder()
57+
.applyBaseIdentifiableFields(this)
58+
.description(description)
59+
.program(program.toDomain())
60+
.programStage(programStage.toDomain())
61+
.programStageQueryCriteria(programStageQueryCriteria.toDomain(id))
62+
.build()
63+
} else {
64+
null
65+
}
6466
}
6567
}
6668

core/src/main/java/org/hisp/dhis/android/network/programstageworkinglist/ProgramStageWorkingListNetworkHandlerImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,6 @@ internal class ProgramStageWorkingListNetworkHandlerImpl(
4848
ProgramStageWorkingListFields.allFields,
4949
false,
5050
)
51-
return apiPayload.mapItems(ProgramStageWorkingListDTO::toDomain)
51+
return apiPayload.mapNotNullItems(ProgramStageWorkingListDTO::toDomain)
5252
}
5353
}

core/src/main/java/org/hisp/dhis/android/network/validationrule/ValidationRuleDTO.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,6 @@ internal class ValidationRulePayload(
8686
override val pager: PagerDTO?,
8787
@SerialName("validationRules") override val items: List<ValidationRuleDTO> = emptyList(),
8888
) : PayloadJson<ValidationRuleDTO>(pager, items) {
89-
fun mapNotNullItems(
90-
transform: (ValidationRuleDTO) -> ValidationRule?,
91-
): PayloadJson<ValidationRule> {
92-
return PayloadJson(pager, items.mapNotNull(transform))
93-
}
9489
}
9590

9691
@Serializable

core/src/test/java/org/hisp/dhis/android/core/programstageworkinglist/ProgramStageWorkingListShould.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ internal class ProgramStageWorkingListShould : CoreObjectShould<ProgramStageWork
4545
@Test
4646
override fun map_from_json_string() {
4747
val workingListDTO = deserialize()
48-
val workingList = workingListDTO.toDomain()
48+
val workingList = workingListDTO.toDomain()!!
4949

5050
assertThat(workingList.created()).isEqualTo(DateUtils.DATE_FORMAT.parse("2023-01-26T19:16:58.712"))
5151
assertThat(workingList.lastUpdated()).isEqualTo(DateUtils.DATE_FORMAT.parse("2023-01-26T19:16:58.712"))
5252
assertThat(workingList.uid()).isEqualTo("NAgjOfWMXg6")
5353
assertThat(workingList.name()).isEqualTo("Test WL")
5454
assertThat(workingList.displayName()).isEqualTo("Test WL display")
55-
assertThat(workingList.program()!!.uid()).isEqualTo("uy2gU8kT1jF")
56-
assertThat(workingList.programStage()!!.uid()).isEqualTo("oRySG82BKE6")
55+
assertThat(workingList.program().uid()).isEqualTo("uy2gU8kT1jF")
56+
assertThat(workingList.programStage().uid()).isEqualTo("oRySG82BKE6")
5757
assertThat(workingList.description()).isEqualTo("Test WL definition")
5858
assertThat(workingList.programStageQueryCriteria()?.eventStatus()).isEqualTo(EventStatus.ACTIVE)
5959
assertThat(workingList.programStageQueryCriteria()?.eventCreatedAt()).isNotNull()

0 commit comments

Comments
 (0)