Skip to content

Commit 6d79acc

Browse files
authored
chore: [ANDROSDK-2336] migrate use case and working list domain models to Kotlin (#2650)
2 parents 09dcf5b + 28e8e62 commit 6d79acc

19 files changed

Lines changed: 489 additions & 457 deletions

File tree

core/api/core.api

Lines changed: 218 additions & 103 deletions
Large diffs are not rendered by default.

core/src/androidTest/java/org/hisp/dhis/android/core/usecase/stock/internal/StockUseCaseStoreIntegrationShould.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ import org.hisp.dhis.android.persistence.usecase.StockUseCaseTableInfo
3737
import org.junit.runner.RunWith
3838

3939
@RunWith(D2JunitRunner::class)
40-
class StockUseCaseStoreIntegrationShould : IdentifiableObjectStoreAbstractIntegrationShould<InternalStockUseCase>(
41-
StockUseCaseStoreImpl(TestDatabaseAdapterFactory.get()),
42-
StockUseCaseTableInfo.TABLE_INFO,
43-
TestDatabaseAdapterFactory.get(),
44-
) {
40+
internal class StockUseCaseStoreIntegrationShould :
41+
IdentifiableObjectStoreAbstractIntegrationShould<InternalStockUseCase>(
42+
StockUseCaseStoreImpl(TestDatabaseAdapterFactory.get()),
43+
StockUseCaseTableInfo.TABLE_INFO,
44+
TestDatabaseAdapterFactory.get(),
45+
) {
4546
override fun buildObject(): InternalStockUseCase {
4647
return get()
4748
}

core/src/androidTest/java/org/hisp/dhis/android/core/usecase/stock/internal/StockUseCaseTransactionLinkStoreIntegrationShould.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import org.junit.Test
4040
import org.junit.runner.RunWith
4141

4242
@RunWith(D2JunitRunner::class)
43-
class StockUseCaseTransactionLinkStoreIntegrationShould :
43+
internal class StockUseCaseTransactionLinkStoreIntegrationShould :
4444
LinkStoreAbstractIntegrationShould<InternalStockUseCaseTransaction>(
4545
StockUseCaseTransactionLinkStoreImpl(TestDatabaseAdapterFactory.get()),
4646
StockUseCaseTransactionTableInfo.TABLE_INFO,

core/src/main/assets/migrations/181.sql

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,25 @@ CREATE TABLE MapLayer(uid TEXT NOT NULL, name TEXT NOT NULL, displayName TEXT NO
150150
INSERT INTO MapLayer(uid, name, displayName, external, mapLayerPosition, style, imageUrl, subdomains, subdomainPlaceholder, code, mapService, imageFormat, layers, linkedLayerUid) SELECT uid, name, displayName, external, mapLayerPosition, style, imageUrl, subdomains, subdomainPlaceholder, code, mapService, imageFormat, layers, linkedLayerUid FROM MapLayer_Old;
151151
DROP TABLE IF EXISTS MapLayer_Old;
152152

153+
# StockUseCase: make itemCode, itemDescription, programType, description and stockOnHand non-null (ANDROSDK-2336)
154+
155+
# Remove rows with null itemCode, itemDescription, programType, description or stockOnHand
156+
DELETE FROM StockUseCase WHERE itemCode IS NULL OR itemDescription IS NULL OR programType IS NULL OR description IS NULL OR stockOnHand IS NULL;
157+
158+
# Recreate table with itemCode, itemDescription, programType, description and stockOnHand as NOT NULL
159+
ALTER TABLE StockUseCase RENAME TO StockUseCase_Old;
160+
CREATE TABLE StockUseCase(uid TEXT NOT NULL, itemCode TEXT NOT NULL, itemDescription TEXT NOT NULL, programType TEXT NOT NULL, description TEXT NOT NULL, stockOnHand TEXT NOT NULL, PRIMARY KEY(uid), FOREIGN KEY(uid) REFERENCES Program(uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
161+
INSERT INTO StockUseCase(uid, itemCode, itemDescription, programType, description, stockOnHand) SELECT uid, itemCode, itemDescription, programType, description, stockOnHand FROM StockUseCase_Old;
162+
DROP TABLE IF EXISTS StockUseCase_Old;
163+
164+
# StockUseCaseTransaction: make sortOrder non-null (ANDROSDK-2336)
165+
166+
# Remove rows with null sortOrder
167+
DELETE FROM StockUseCaseTransaction WHERE sortOrder IS NULL;
168+
169+
# Recreate table with sortOrder as NOT NULL
170+
ALTER TABLE StockUseCaseTransaction RENAME TO StockUseCaseTransaction_Old;
171+
CREATE TABLE StockUseCaseTransaction(programUid TEXT NOT NULL, sortOrder INTEGER NOT NULL, transactionType TEXT NOT NULL, distributedTo TEXT, stockDistributed TEXT, stockDiscarded TEXT, stockCount TEXT, PRIMARY KEY(programUid, transactionType), FOREIGN KEY(programUid) REFERENCES StockUseCase(uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
172+
INSERT INTO StockUseCaseTransaction(programUid, sortOrder, transactionType, distributedTo, stockDistributed, stockDiscarded, stockCount) SELECT programUid, sortOrder, transactionType, distributedTo, stockDistributed, stockDiscarded, stockCount FROM StockUseCaseTransaction_Old;
173+
DROP TABLE IF EXISTS StockUseCaseTransaction_Old;
174+

core/src/main/java/org/hisp/dhis/android/core/programstageworkinglist/ProgramStageQueryCriteria.java

Lines changed: 0 additions & 130 deletions
This file was deleted.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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.programstageworkinglist
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.DateFilterPeriod
35+
import org.hisp.dhis.android.core.enrollment.EnrollmentStatus
36+
import org.hisp.dhis.android.core.event.EventStatus
37+
import org.hisp.dhis.android.core.organisationunit.OrganisationUnitMode
38+
39+
@Suppress("TooManyFunctions")
40+
@ModelBuilder
41+
data class ProgramStageQueryCriteria(
42+
val eventStatus: EventStatus?,
43+
val eventCreatedAt: DateFilterPeriod?,
44+
val eventOccurredAt: DateFilterPeriod?,
45+
val eventScheduledAt: DateFilterPeriod?,
46+
val enrollmentStatus: EnrollmentStatus?,
47+
val enrolledAt: DateFilterPeriod?,
48+
val enrollmentOccurredAt: DateFilterPeriod?,
49+
val order: String?,
50+
val displayColumnOrder: List<String>?,
51+
val orgUnit: String?,
52+
val ouMode: OrganisationUnitMode?,
53+
val assignedUserMode: AssignedUserMode?,
54+
val dataFilters: List<ProgramStageWorkingListEventDataFilter>?,
55+
val attributeValueFilters: List<ProgramStageWorkingListAttributeValueFilter>?,
56+
) : CoreObject {
57+
58+
fun eventStatus(): EventStatus? = eventStatus
59+
fun eventCreatedAt(): DateFilterPeriod? = eventCreatedAt
60+
fun eventOccurredAt(): DateFilterPeriod? = eventOccurredAt
61+
fun eventScheduledAt(): DateFilterPeriod? = eventScheduledAt
62+
fun enrollmentStatus(): EnrollmentStatus? = enrollmentStatus
63+
fun enrolledAt(): DateFilterPeriod? = enrolledAt
64+
fun enrollmentOccurredAt(): DateFilterPeriod? = enrollmentOccurredAt
65+
fun order(): String? = order
66+
fun displayColumnOrder(): List<String>? = displayColumnOrder
67+
fun orgUnit(): String? = orgUnit
68+
fun ouMode(): OrganisationUnitMode? = ouMode
69+
fun assignedUserMode(): AssignedUserMode? = assignedUserMode
70+
fun dataFilters(): List<ProgramStageWorkingListEventDataFilter>? = dataFilters
71+
fun attributeValueFilters(): List<ProgramStageWorkingListAttributeValueFilter>? = attributeValueFilters
72+
73+
fun toBuilder(): Builder = ProgramStageQueryCriteriaBuilder.from(this)
74+
75+
class Builder : ProgramStageQueryCriteriaBuilder()
76+
77+
companion object {
78+
@JvmStatic
79+
fun builder(): Builder = Builder()
80+
}
81+
}

core/src/main/java/org/hisp/dhis/android/core/programstageworkinglist/ProgramStageWorkingList.java renamed to core/src/main/java/org/hisp/dhis/android/core/programstageworkinglist/ProgramStageWorkingList.kt

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

29-
package org.hisp.dhis.android.core.programstageworkinglist;
30-
31-
import androidx.annotation.Nullable;
32-
33-
import com.google.auto.value.AutoValue;
34-
35-
import org.hisp.dhis.android.core.common.BaseIdentifiableObAuVa;
36-
import org.hisp.dhis.android.core.common.CoreObject;
37-
import org.hisp.dhis.android.core.common.ObjectWithUid;
38-
39-
@AutoValue
40-
public abstract class ProgramStageWorkingList extends BaseIdentifiableObAuVa implements CoreObject {
41-
42-
@Nullable
43-
public abstract String description();
44-
45-
public abstract ObjectWithUid program();
46-
47-
public abstract ObjectWithUid programStage();
48-
49-
@Nullable
50-
public abstract ProgramStageQueryCriteria programStageQueryCriteria();
51-
52-
public static Builder builder() {
53-
return new AutoValue_ProgramStageWorkingList.Builder();
54-
}
55-
56-
public abstract Builder toBuilder();
57-
58-
@AutoValue.Builder
59-
public abstract static class Builder extends BaseIdentifiableObAuVa.Builder<Builder> {
60-
61-
public abstract Builder description(String description);
62-
63-
public abstract Builder program(ObjectWithUid program);
64-
65-
public abstract Builder programStage(ObjectWithUid programStage);
66-
67-
public abstract Builder programStageQueryCriteria(ProgramStageQueryCriteria programStageQueryCriteria);
68-
69-
public abstract ProgramStageWorkingList build();
29+
package org.hisp.dhis.android.core.programstageworkinglist
30+
31+
import org.hisp.dhis.android.annotations.ModelBuilder
32+
import org.hisp.dhis.android.core.common.BaseIdentifiableObjectKt
33+
import org.hisp.dhis.android.core.common.CoreObject
34+
import org.hisp.dhis.android.core.common.ObjectWithUid
35+
import java.util.Date
36+
37+
@ModelBuilder
38+
data class ProgramStageWorkingList(
39+
override val uid: String,
40+
override val code: String?,
41+
override val name: String?,
42+
override val displayName: String?,
43+
override val created: Date?,
44+
override val lastUpdated: Date?,
45+
override val deleted: Boolean?,
46+
val description: String?,
47+
val program: ObjectWithUid,
48+
val programStage: ObjectWithUid,
49+
val programStageQueryCriteria: ProgramStageQueryCriteria?,
50+
) : BaseIdentifiableObjectKt, CoreObject {
51+
52+
fun description(): String? = description
53+
fun program(): ObjectWithUid = program
54+
fun programStage(): ObjectWithUid = programStage
55+
fun programStageQueryCriteria(): ProgramStageQueryCriteria? = programStageQueryCriteria
56+
57+
fun toBuilder(): Builder = ProgramStageWorkingListBuilder.from(this)
58+
59+
class Builder : ProgramStageWorkingListBuilder()
60+
61+
companion object {
62+
@JvmStatic
63+
fun builder(): Builder = Builder()
7064
}
7165
}

0 commit comments

Comments
 (0)