Skip to content

Commit 64cc167

Browse files
authored
chore: [ANDROSDK-2334] Migrate ReveredValues and TEI filters to data class (#2653)
2 parents 104b248 + 1f5f418 commit 64cc167

12 files changed

Lines changed: 482 additions & 382 deletions

File tree

core/api/core.api

Lines changed: 259 additions & 56 deletions
Large diffs are not rendered by default.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright (c) 2004-2023, University of Oslo
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions are met:
7+
* Redistributions of source code must retain the above copyright notice, this
8+
* list of conditions and the following disclaimer.
9+
*
10+
* Redistributions in binary form must reproduce the above copyright notice,
11+
* this list of conditions and the following disclaimer in the documentation
12+
* and/or other materials provided with the distribution.
13+
* Neither the name of the HISP project nor the names of its contributors may
14+
* be used to endorse or promote products derived from this software without
15+
* specific prior written permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
21+
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
24+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27+
*/
28+
29+
package org.hisp.dhis.android.core.trackedentity
30+
31+
import org.hisp.dhis.android.annotations.ModelBuilder
32+
import org.hisp.dhis.android.core.common.CoreObject
33+
import org.hisp.dhis.android.core.common.ObjectWithUidInterface
34+
35+
@ModelBuilder
36+
data class ReservedValueSetting(
37+
val uid: String,
38+
val numberOfValuesToReserve: Int?,
39+
) : CoreObject, ObjectWithUidInterface {
40+
41+
override fun uid(): String = uid
42+
fun numberOfValuesToReserve(): Int? = numberOfValuesToReserve
43+
44+
fun toBuilder(): Builder = ReservedValueSettingBuilder.from(this)
45+
46+
class Builder : ReservedValueSettingBuilder()
47+
48+
companion object {
49+
@JvmStatic
50+
fun builder(): Builder = Builder()
51+
}
52+
}

core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSummary.java

Lines changed: 0 additions & 81 deletions
This file was deleted.

core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSetting.java renamed to core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSummary.kt

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,37 +26,30 @@
2626
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727
*/
2828

29-
package org.hisp.dhis.android.core.trackedentity;
29+
package org.hisp.dhis.android.core.trackedentity
3030

31-
import androidx.annotation.Nullable;
31+
import org.hisp.dhis.android.annotations.ModelBuilder
32+
import org.hisp.dhis.android.core.organisationunit.OrganisationUnit
3233

33-
import com.google.auto.value.AutoValue;
34+
@ModelBuilder
35+
data class ReservedValueSummary(
36+
val trackedEntityAttribute: TrackedEntityAttribute,
37+
val organisationUnit: OrganisationUnit?,
38+
val count: Int,
39+
val numberOfValuesToFillUp: Int,
40+
) {
3441

35-
import org.hisp.dhis.android.core.common.CoreObject;
36-
import org.hisp.dhis.android.core.common.ObjectWithUidInterface;
42+
fun trackedEntityAttribute(): TrackedEntityAttribute = trackedEntityAttribute
43+
fun organisationUnit(): OrganisationUnit? = organisationUnit
44+
fun count(): Int = count
45+
fun numberOfValuesToFillUp(): Int = numberOfValuesToFillUp
3746

38-
@AutoValue
39-
public abstract class ReservedValueSetting implements CoreObject, ObjectWithUidInterface {
47+
fun toBuilder(): Builder = ReservedValueSummaryBuilder.from(this)
4048

41-
@Nullable
42-
public abstract String uid();
49+
class Builder : ReservedValueSummaryBuilder()
4350

44-
@Nullable
45-
public abstract Integer numberOfValuesToReserve();
46-
47-
public abstract Builder toBuilder();
48-
49-
public static Builder builder() {
50-
return new AutoValue_ReservedValueSetting.Builder();
51-
}
52-
53-
@AutoValue.Builder
54-
public abstract static class Builder {
55-
56-
public abstract Builder uid(String uid);
57-
58-
public abstract Builder numberOfValuesToReserve(Integer numberOfValuesToReserve);
59-
60-
public abstract ReservedValueSetting build();
51+
companion object {
52+
@JvmStatic
53+
fun builder(): Builder = Builder()
6154
}
6255
}

core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManager.kt

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -365,10 +365,10 @@ class TrackedEntityAttributeReservedValueManager internal constructor(
365365
)
366366

367367
// If number of values is explicitly specified, we use that value as threshold.
368-
val minNumberToTryFill = minNumberOfValuesToHave ?: (fillUpTo!! * FACTOR_TO_REFILL).toInt()
368+
val minNumberToTryFill = minNumberOfValuesToHave ?: (fillUpTo * FACTOR_TO_REFILL).toInt()
369369

370370
if (remainingValues < minNumberToTryFill) {
371-
val numberToReserve = fillUpTo!! - remainingValues
371+
val numberToReserve = fillUpTo - remainingValues
372372
downloadValues(
373373
attribute,
374374
organisationUnit,
@@ -446,25 +446,18 @@ class TrackedEntityAttributeReservedValueManager internal constructor(
446446
return pattern != null && pattern.contains("ORG_UNIT_CODE")
447447
}
448448

449-
private suspend fun getFillUpToValue(minNumberOfValuesToHave: Int?, attribute: String): Int? {
450-
return if (minNumberOfValuesToHave == null) {
451-
val reservedValueSetting = reservedValueSettingStore.selectByUid(attribute)
452-
if (reservedValueSetting?.numberOfValuesToReserve() == null) {
453-
val generalSettings = generalSettingObjectRepository.getInternal()
454-
if (generalSettings?.reservedValues() == null) {
455-
FILL_UP_TO
456-
} else {
457-
generalSettings.reservedValues()
458-
}
459-
} else {
460-
reservedValueSetting.numberOfValuesToReserve()
461-
}
462-
} else {
463-
reservedValueSettingStore.updateOrInsert(
464-
ReservedValueSetting.builder().uid(attribute).numberOfValuesToReserve(minNumberOfValuesToHave).build(),
465-
)
466-
minNumberOfValuesToHave
467-
}
449+
private suspend fun getFillUpToValue(minNumberOfValuesToHave: Int?, attribute: String): Int {
450+
return minNumberOfValuesToHave?.let { saveAndReturn(minNumberOfValuesToHave, attribute) }
451+
?: reservedValueSettingStore.selectByUid(attribute)?.numberOfValuesToReserve
452+
?: generalSettingObjectRepository.getInternal()?.reservedValues
453+
?: FILL_UP_TO
454+
}
455+
456+
private suspend fun saveAndReturn(minNumberOfValuesToHave: Int, attribute: String): Int {
457+
reservedValueSettingStore.updateOrInsert(
458+
ReservedValueSetting.builder().uid(attribute).numberOfValuesToReserve(minNumberOfValuesToHave).build(),
459+
)
460+
return minNumberOfValuesToHave
468461
}
469462

470463
companion object {

core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilter.java renamed to core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilter.kt

Lines changed: 30 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -26,53 +26,35 @@
2626
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727
*/
2828

29-
package org.hisp.dhis.android.core.trackedentity;
30-
31-
import androidx.annotation.Nullable;
32-
33-
import com.google.auto.value.AutoValue;
34-
35-
import org.hisp.dhis.android.core.common.AssignedUserMode;
36-
import org.hisp.dhis.android.core.common.CoreObject;
37-
import org.hisp.dhis.android.core.common.FilterPeriod;
38-
import org.hisp.dhis.android.core.event.EventStatus;
39-
40-
@AutoValue
41-
public abstract class TrackedEntityInstanceEventFilter implements CoreObject {
42-
43-
@Nullable
44-
public abstract String trackedEntityInstanceFilter();
45-
46-
@Nullable
47-
public abstract String programStage();
48-
49-
@Nullable
50-
public abstract EventStatus eventStatus();
51-
52-
@Nullable
53-
public abstract FilterPeriod eventCreatedPeriod();
54-
55-
@Nullable
56-
public abstract AssignedUserMode assignedUserMode();
57-
58-
public static Builder builder() {
59-
return new AutoValue_TrackedEntityInstanceEventFilter.Builder();
60-
}
61-
62-
public abstract Builder toBuilder();
63-
64-
@AutoValue.Builder
65-
public abstract static class Builder {
66-
public abstract Builder trackedEntityInstanceFilter(String trackedEntityInstanceFilter);
67-
68-
public abstract Builder programStage(String programStage);
69-
70-
public abstract Builder eventStatus(EventStatus eventStatus);
71-
72-
public abstract Builder eventCreatedPeriod(FilterPeriod eventCreatedPeriod);
73-
74-
public abstract Builder assignedUserMode(AssignedUserMode assignedUserMode);
75-
76-
public abstract TrackedEntityInstanceEventFilter build();
29+
package org.hisp.dhis.android.core.trackedentity
30+
31+
import org.hisp.dhis.android.annotations.ModelBuilder
32+
import org.hisp.dhis.android.core.common.AssignedUserMode
33+
import org.hisp.dhis.android.core.common.CoreObject
34+
import org.hisp.dhis.android.core.common.FilterPeriod
35+
import org.hisp.dhis.android.core.event.EventStatus
36+
37+
@ModelBuilder
38+
data class TrackedEntityInstanceEventFilter(
39+
val trackedEntityInstanceFilter: String,
40+
val programStage: String?,
41+
val eventStatus: EventStatus?,
42+
val eventCreatedPeriod: FilterPeriod?,
43+
val assignedUserMode: AssignedUserMode?,
44+
) : CoreObject {
45+
46+
fun trackedEntityInstanceFilter(): String = trackedEntityInstanceFilter
47+
fun programStage(): String? = programStage
48+
fun eventStatus(): EventStatus? = eventStatus
49+
fun eventCreatedPeriod(): FilterPeriod? = eventCreatedPeriod
50+
fun assignedUserMode(): AssignedUserMode? = assignedUserMode
51+
52+
fun toBuilder(): Builder = TrackedEntityInstanceEventFilterBuilder.from(this)
53+
54+
class Builder : TrackedEntityInstanceEventFilterBuilder()
55+
56+
companion object {
57+
@JvmStatic
58+
fun builder(): Builder = Builder()
7759
}
7860
}

0 commit comments

Comments
 (0)