From b3e6c6693a5b40c5ac9753733c27d02409792cdb Mon Sep 17 00:00:00 2001 From: Pablo Date: Wed, 27 Oct 2021 09:49:21 +0200 Subject: [PATCH 001/253] feat: Add compose to app --- core/build.gradle | 8 +++++--- .../internal/evaluator/ProgramIndicatorEvaluator.kt | 4 ++-- .../evaluator/indicatorengine/IndicatorParserUtils.kt | 4 ++-- .../arch/helpers/internal/MultiDimensionalPartitioner.kt | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index eb0c80d87f..9668ed0c29 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -29,7 +29,6 @@ plugins { id "com.android.library" id "kotlin-android" - id "kotlin-android-extensions" id "kotlin-kapt" id "io.gitlab.arturbosch.detekt" version "1.10.0" id "org.jetbrains.dokka" version "1.4.30" apply false @@ -41,7 +40,7 @@ apply from: project.file("plugins/android-pmd.gradle") ext { configuration = [ buildToolsVersion: "29.0.3", - minSdkVersion : 19, + minSdkVersion : 21, targetSdkVersion : 29, versionCode : 250, versionName : "1.5.0" @@ -59,7 +58,7 @@ ext { autoValueCursor : "2.0.1", retrofit : "2.6.4", okHttp : "3.12.0", - dagger : "2.28.3", + dagger : "2.39.1", rxJava : "2.2.9", rxAndroid : "2.1.1", sqlCipher : "4.4.0", @@ -104,6 +103,9 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true vectorDrawables.useSupportLibrary = true + + buildConfigField("long", "VERSION_CODE", "${defaultConfig.versionCode}") + buildConfigField("String","VERSION_NAME","\"${defaultConfig.versionName}\"") } compileOptions { diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt index 377929ab81..535ebb219b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt @@ -117,8 +117,8 @@ internal class ProgramIndicatorEvaluator @Inject constructor( return when (aggregationType ?: AggregationType.NONE) { AggregationType.SUM -> floatValues.sum() - AggregationType.MAX -> floatValues.max() - AggregationType.MIN -> floatValues.min() + AggregationType.MAX -> floatValues.maxOrNull() + AggregationType.MIN -> floatValues.minOrNull() AggregationType.AVERAGE, AggregationType.AVERAGE_SUM_ORG_UNIT -> floatValues.average().toFloat() AggregationType.COUNT -> floatValues.size.toFloat() diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt index 97630d0721..43b1c5aa63 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt @@ -123,8 +123,8 @@ internal object IndicatorParserUtils { } }.flatten() - val start = periods.mapNotNull { it.startDate() }.minBy { it.time } - val end = periods.mapNotNull { it.endDate() }.maxBy { it.time } + val start = periods.mapNotNull { it.startDate() }.minByOrNull { it.time } + val end = periods.mapNotNull { it.endDate() }.maxByOrNull { it.time } return if (start != null && end != null) { return PeriodHelper.getDays(Period.builder().startDate(start).endDate(end).build()) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt index 07c30e2538..258780aac5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt @@ -53,7 +53,7 @@ internal class MultiDimensionalPartitioner @Inject constructor() { if (count <= maxValues) { listOf(part) } else { - val largerDimension = part.maxBy { it.size }!! + val largerDimension = part.maxByOrNull { it.size }!! val lds = largerDimension.size val largerDimensionPart1 = largerDimension.subList(0, lds / 2) val largerDimensionPart2 = largerDimension.subList(lds / 2, lds) From 2bec1d487e57582776623fdc0134650e62b619e6 Mon Sep 17 00:00:00 2001 From: Pablo Date: Thu, 25 Nov 2021 11:24:53 +0100 Subject: [PATCH 002/253] fix: revert minsdkversion to support 4.4 in the SDK --- core/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/build.gradle b/core/build.gradle index 9668ed0c29..3864cafe39 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -40,7 +40,7 @@ apply from: project.file("plugins/android-pmd.gradle") ext { configuration = [ buildToolsVersion: "29.0.3", - minSdkVersion : 21, + minSdkVersion : 19, targetSdkVersion : 29, versionCode : 250, versionName : "1.5.0" From 7884b33b5f03c84b5523bf84838e850a3b4496ad Mon Sep 17 00:00:00 2001 From: Pablo Date: Fri, 26 Nov 2021 08:13:20 +0100 Subject: [PATCH 003/253] fix: update gradle and kotlin version --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index c1215685ef..4b27961ea8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.3.72' + ext.kotlin_version = '1.5.21' repositories { google() mavenLocal() @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath "com.android.tools.build:gradle:4.0.1" + classpath "com.android.tools.build:gradle:7.0.3" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jlleitschuh.gradle:ktlint-gradle:9.3.0" } From 7534244295d0f8fda0740196c4e5065eae3614bb Mon Sep 17 00:00:00 2001 From: Pablo Date: Fri, 26 Nov 2021 08:30:35 +0100 Subject: [PATCH 004/253] fix: update gradle distribution version --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6411167c30..b3f9f3c3f9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip \ No newline at end of file +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip \ No newline at end of file From a27d752f7e58b9a523a4bf6ce762aa9da52c187b Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 30 Nov 2021 16:31:22 +0100 Subject: [PATCH 005/253] [ADD_COMPOSE_TO_ANDROID_APP] Upgrade gradle, ktlint, authapp versions --- build.gradle | 4 +- core/build.gradle | 6 +- .../internal/DatabaseMigrationExecutor.kt | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 111 ++++++----- gradlew.bat | 179 +++++++++--------- 7 files changed, 164 insertions(+), 141 deletions(-) diff --git a/build.gradle b/build.gradle index 4b27961ea8..4307ba6a17 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.5.21' + ext.kotlin_version = '1.6.0' repositories { google() mavenLocal() @@ -10,7 +10,7 @@ buildscript { dependencies { classpath "com.android.tools.build:gradle:7.0.3" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jlleitschuh.gradle:ktlint-gradle:9.3.0" + classpath "org.jlleitschuh.gradle:ktlint-gradle:10.1.0" } } diff --git a/core/build.gradle b/core/build.gradle index 3864cafe39..6e61ce43b5 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -39,9 +39,9 @@ apply from: project.file("plugins/android-pmd.gradle") ext { configuration = [ - buildToolsVersion: "29.0.3", + buildToolsVersion: "30.0.2", minSdkVersion : 19, - targetSdkVersion : 29, + targetSdkVersion : 30, versionCode : 250, versionName : "1.5.0" ] @@ -84,7 +84,7 @@ ext { safetyNet : "17.0.0", // open id - appauth : "0.7.1" + appauth : "0.8.1" ] } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt index 32af8e913f..95f81e6b89 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt @@ -52,7 +52,7 @@ internal class DatabaseMigrationExecutor(private val databaseAdapter: DatabaseAd migrations.forEach { executeMigration(it) } transaction.setSuccessful() } catch (e: IOException) { - Log.e("Database Error:", e.message) + Log.e("Database Error:", e.message ?: "") } finally { transaction.end() } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 13372aef5e24af05341d49695ee84e5f9b594659..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch literal 59203 zcma&O1CT9Y(k9%tZQHhO+qUh#ZQHhO+qmuS+qP|E@9xZO?0h@l{(r>DQ>P;GjjD{w zH}lENr;dU&FbEU?00aa80D$0M0RRB{U*7-#kbjS|qAG&4l5%47zyJ#WrfA#1$1Ctx zf&Z_d{GW=lf^w2#qRJ|CvSJUi(^E3iv~=^Z(zH}F)3Z%V3`@+rNB7gTVU{Bb~90p|f+0(v;nz01EG7yDMX9@S~__vVgv%rS$+?IH+oZ03D5zYrv|^ zC1J)SruYHmCki$jLBlTaE5&dFG9-kq3!^i>^UQL`%gn6)jz54$WDmeYdsBE9;PqZ_ zoGd=P4+|(-u4U1dbAVQrFWoNgNd;0nrghPFbQrJctO>nwDdI`Q^i0XJDUYm|T|RWc zZ3^Qgo_Qk$%Fvjj-G}1NB#ZJqIkh;kX%V{THPqOyiq)d)0+(r9o(qKlSp*hmK#iIY zA^)Vr$-Hz<#SF=0@tL@;dCQsm`V9s1vYNq}K1B)!XSK?=I1)tX+bUV52$YQu*0%fnWEukW>mxkz+%3-S!oguE8u#MGzST8_Dy^#U?fA@S#K$S@9msUiX!gd_ow>08w5)nX{-KxqMOo7d?k2&?Vf z&diGDtZr(0cwPe9z9FAUSD9KC)7(n^lMWuayCfxzy8EZsns%OEblHFSzP=cL6}?J| z0U$H!4S_TVjj<`6dy^2j`V`)mC;cB%* z8{>_%E1^FH!*{>4a7*C1v>~1*@TMcLK{7nEQ!_igZC}ikJ$*<$yHy>7)oy79A~#xE zWavoJOIOC$5b6*q*F_qN1>2#MY)AXVyr$6x4b=$x^*aqF*L?vmj>Mgv+|ITnw_BoW zO?jwHvNy^prH{9$rrik1#fhyU^MpFqF2fYEt(;4`Q&XWOGDH8k6M=%@fics4ajI;st# zCU^r1CK&|jzUhRMv;+W~6N;u<;#DI6cCw-otsc@IsN3MoSD^O`eNflIoR~l4*&-%RBYk@gb^|-JXs&~KuSEmMxB}xSb z@K76cXD=Y|=I&SNC2E+>Zg?R6E%DGCH5J1nU!A|@eX9oS(WPaMm==k2s_ueCqdZw| z&hqHp)47`c{BgwgvY2{xz%OIkY1xDwkw!<0veB#yF4ZKJyabhyyVS`gZepcFIk%e2 zTcrmt2@-8`7i-@5Nz>oQWFuMC_KlroCl(PLSodswHqJ3fn<;gxg9=}~3x_L3P`9Sn zChIf}8vCHvTriz~T2~FamRi?rh?>3bX1j}%bLH+uFX+p&+^aXbOK7clZxdU~6Uxgy z8R=obwO4dL%pmVo*Ktf=lH6hnlz_5k3cG;m8lgaPp~?eD!Yn2kf)tU6PF{kLyn|oI@eQ`F z3IF7~Blqg8-uwUuWZScRKn%c2_}dXB6Dx_&xR*n9M9LXasJhtZdr$vBY!rP{c@=)& z#!?L$2UrkvClwQO>U*fSMs67oSj2mxiJ$t;E|>q%Kh_GzzWWO&3;ufU%2z%ucBU8H z3WIwr$n)cfCXR&>tyB7BcSInK>=ByZA%;cVEJhcg<#6N{aZC4>K41XF>ZgjG`z_u& zGY?;Ad?-sgiOnI`oppF1o1Gurqbi*;#x2>+SSV6|1^G@ooVy@fg?wyf@0Y!UZ4!}nGuLeC^l)6pwkh|oRY`s1Pm$>zZ3u-83T|9 zGaKJIV3_x+u1>cRibsaJpJqhcm%?0-L;2 zitBrdRxNmb0OO2J%Y&Ym(6*`_P3&&5Bw157{o7LFguvxC$4&zTy#U=W*l&(Q2MNO} zfaUwYm{XtILD$3864IA_nn34oVa_g^FRuHL5wdUd)+W-p-iWCKe8m_cMHk+=? zeKX)M?Dt(|{r5t7IenkAXo%&EXIb-i^w+0CX0D=xApC=|Xy(`xy+QG^UyFe z+#J6h_&T5i#sV)hj3D4WN%z;2+jJcZxcI3*CHXGmOF3^)JD5j&wfX)e?-|V0GPuA+ zQFot%aEqGNJJHn$!_}#PaAvQ^{3-Ye7b}rWwrUmX53(|~i0v{}G_sI9uDch_brX&6 zWl5Ndj-AYg(W9CGfQf<6!YmY>Ey)+uYd_JNXH=>|`OH-CDCmcH(0%iD_aLlNHKH z7bcW-^5+QV$jK?R*)wZ>r9t}loM@XN&M-Pw=F#xn(;u3!(3SXXY^@=aoj70;_=QE9 zGghsG3ekq#N||u{4We_25U=y#T*S{4I{++Ku)> zQ!DZW;pVcn>b;&g2;YE#+V`v*Bl&Y-i@X6D*OpNA{G@JAXho&aOk(_j^weW{#3X5Y z%$q_wpb07EYPdmyH(1^09i$ca{O<}7) zRWncXdSPgBE%BM#by!E>tdnc$8RwUJg1*x($6$}ae$e9Knj8gvVZe#bLi!<+&BkFj zg@nOpDneyc+hU9P-;jmOSMN|*H#>^Ez#?;%C3hg_65leSUm;iz)UkW)jX#p)e&S&M z1|a?wDzV5NVnlhRBCd_;F87wp>6c<&nkgvC+!@KGiIqWY4l}=&1w7|r6{oBN8xyzh zG$b#2=RJp_iq6)#t5%yLkKx(0@D=C3w+oiXtSuaQ%I1WIb-eiE$d~!)b@|4XLy!CZ z9p=t=%3ad@Ep+<9003D2KZ5VyP~_n$=;~r&YUg5UZ0KVD&tR1DHy9x)qWtKJp#Kq# zP*8p#W(8JJ_*h_3W}FlvRam?<4Z+-H77^$Lvi+#vmhL9J zJ<1SV45xi;SrO2f=-OB(7#iNA5)x1uNC-yNxUw|!00vcW2PufRm>e~toH;M0Q85MQLWd?3O{i8H+5VkR@l9Dg-ma ze2fZ%>G(u5(k9EHj2L6!;(KZ8%8|*-1V|B#EagbF(rc+5iL_5;Eu)L4Z-V;0HfK4d z*{utLse_rvHZeQ>V5H=f78M3Ntg1BPxFCVD{HbNA6?9*^YIq;B-DJd{Ca2L#)qWP? zvX^NhFmX?CTWw&Ns}lgs;r3i+Bq@y}Ul+U%pzOS0Fcv9~aB(0!>GT0)NO?p=25LjN z2bh>6RhgqD7bQj#k-KOm@JLgMa6>%-ok1WpOe)FS^XOU{c?d5shG(lIn3GiVBxmg`u%-j=)^v&pX1JecJics3&jvPI)mDut52? z3jEA)DM%}BYbxxKrizVYwq?(P&19EXlwD9^-6J+4!}9{ywR9Gk42jjAURAF&EO|~N z)?s>$Da@ikI4|^z0e{r`J8zIs>SpM~Vn^{3fArRu;?+43>lD+^XtUcY1HidJwnR6+ z!;oG2=B6Z_=M%*{z-RaHc(n|1RTKQdNjjV!Pn9lFt^4w|AeN06*j}ZyhqZ^!-=cyGP_ShV1rGxkx8t zB;8`h!S{LD%ot``700d0@Grql(DTt4Awgmi+Yr0@#jbe=2#UkK%rv=OLqF)9D7D1j z!~McAwMYkeaL$~kI~90)5vBhBzWYc3Cj1WI0RS`z000R8-@ET0dA~*r(gSiCJmQMN&4%1D zyVNf0?}sBH8zNbBLn>~(W{d3%@kL_eQ6jEcR{l>C|JK z(R-fA!z|TTRG40|zv}7E@PqCAXP3n`;%|SCQ|ZS%ym$I{`}t3KPL&^l5`3>yah4*6 zifO#{VNz3)?ZL$be;NEaAk9b#{tV?V7 zP|wf5YA*1;s<)9A4~l3BHzG&HH`1xNr#%){4xZ!jq%o=7nN*wMuXlFV{HaiQLJ`5G zBhDi#D(m`Q1pLh@Tq+L;OwuC52RdW7b8}~60WCOK5iYMUad9}7aWBuILb({5=z~YF zt?*Jr5NG+WadM{mDL>GyiByCuR)hd zA=HM?J6l1Xv0Dl+LW@w$OTcEoOda^nFCw*Sy^I@$sSuneMl{4ys)|RY#9&NxW4S)9 zq|%83IpslTLoz~&vTo!Ga@?rj_kw{|k{nv+w&Ku?fyk4Ki4I?);M|5Axm)t+BaE)D zm(`AQ#k^DWrjbuXoJf2{Aj^KT zFb1zMSqxq|vceV+Mf-)$oPflsO$@*A0n0Z!R{&(xh8s}=;t(lIy zv$S8x>m;vQNHuRzoaOo?eiWFe{0;$s`Bc+Osz~}Van${u;g(su`3lJ^TEfo~nERfP z)?aFzpDgnLYiERsKPu|0tq4l2wT)Atr6Qb%m-AUn6HnCue*yWICp7TjW$@sO zm5rm4aTcPQ(rfi7a`xP7cKCFrJD}*&_~xgLyr^-bmsL}y;A5P|al8J3WUoBSjqu%v zxC;mK!g(7r6RRJ852Z~feoC&sD3(6}^5-uLK8o)9{8L_%%rItZK9C){UxB|;G>JbP zsRRtS4-3B*5c+K2kvmgZK8472%l>3cntWUOVHxB|{Ay~aOg5RN;{PJgeVD*H%ac+y!h#wi%o2bF2Ca8IyMyH{>4#{E_8u^@+l-+n=V}Sq?$O z{091@v%Bd*3pk0^2UtiF9Z+(a@wy6 zUdw8J*ze$K#=$48IBi1U%;hmhO>lu!uU;+RS}p&6@rQila7WftH->*A4=5W|Fmtze z)7E}jh@cbmr9iup^i%*(uF%LG&!+Fyl@LFA-}Ca#bxRfDJAiR2dt6644TaYw1Ma79 zt8&DYj31j^5WPNf5P&{)J?WlCe@<3u^78wnd(Ja4^a>{^Tw}W>|Cjt^If|7l^l)^Q zbz|7~CF(k_9~n|h;ysZ+jHzkXf(*O*@5m zLzUmbHp=x!Q|!9NVXyipZ3)^GuIG$k;D)EK!a5=8MFLI_lpf`HPKl=-Ww%z8H_0$j ztJ||IfFG1lE9nmQ0+jPQy zCBdKkjArH@K7jVcMNz);Q(Q^R{d5G?-kk;Uu_IXSyWB)~KGIizZL(^&qF;|1PI7!E zTP`%l)gpX|OFn&)M%txpQ2F!hdA~hX1Cm5)IrdljqzRg!f{mN%G~H1&oqe`5eJCIF zHdD7O;AX-{XEV(a`gBFJ9ews#CVS2y!&>Cm_dm3C8*n3MA*e67(WC?uP@8TXuMroq z{#w$%z@CBIkRM7?}Xib+>hRjy?%G!fiw8! z8(gB+8J~KOU}yO7UGm&1g_MDJ$IXS!`+*b*QW2x)9>K~Y*E&bYMnjl6h!{17_8d!%&9D`a7r&LKZjC<&XOvTRaKJ1 zUY@hl5^R&kZl3lU3njk`3dPzxj$2foOL26r(9zsVF3n_F#v)s5vv3@dgs|lP#eylq62{<-vczqP!RpVBTgI>@O6&sU>W|do17+#OzQ7o5A$ICH z?GqwqnK^n2%LR;$^oZM;)+>$X3s2n}2jZ7CdWIW0lnGK-b#EG01)P@aU`pg}th&J-TrU`tIpb5t((0eu|!u zQz+3ZiOQ^?RxxK4;zs=l8q!-n7X{@jSwK(iqNFiRColuEOg}!7cyZi`iBX4g1pNBj zAPzL?P^Ljhn;1$r8?bc=#n|Ed7wB&oHcw()&*k#SS#h}jO?ZB246EGItsz*;^&tzp zu^YJ0=lwsi`eP_pU8}6JA7MS;9pfD;DsSsLo~ogzMNP70@@;Fm8f0^;>$Z>~}GWRw!W5J3tNX*^2+1f3hz{~rIzJo z6W%J(H!g-eI_J1>0juX$X4Cl6i+3wbc~k146UIX&G22}WE>0ga#WLsn9tY(&29zBvH1$`iWtTe zG2jYl@P!P)eb<5DsR72BdI7-zP&cZNI{7q3e@?N8IKc4DE#UVr->|-ryuJXk^u^>4 z$3wE~=q390;XuOQP~TNoDR?#|NSPJ%sTMInA6*rJ%go|=YjGe!B>z6u$IhgQSwoV* zjy3F2#I>uK{42{&IqP59)Y(1*Z>>#W8rCf4_eVsH)`v!P#^;BgzKDR`ARGEZzkNX+ zJUQu=*-ol=Xqqt5=`=pA@BIn@6a9G8C{c&`i^(i+BxQO9?YZ3iu%$$da&Kb?2kCCo zo7t$UpSFWqmydXf@l3bVJ=%K?SSw)|?srhJ-1ZdFu*5QhL$~-IQS!K1s@XzAtv6*Y zl8@(5BlWYLt1yAWy?rMD&bwze8bC3-GfNH=p zynNFCdxyX?K&G(ZZ)afguQ2|r;XoV^=^(;Cku#qYn4Lus`UeKt6rAlFo_rU`|Rq z&G?~iWMBio<78of-2X(ZYHx~=U0Vz4btyXkctMKdc9UM!vYr~B-(>)(Hc|D zMzkN4!PBg%tZoh+=Gba!0++d193gbMk2&krfDgcbx0jI92cq?FFESVg0D$>F+bil} zY~$)|>1HZsX=5sAZ2WgPB5P=8X#TI+NQ(M~GqyVB53c6IdX=k>Wu@A0Svf5#?uHaF zsYn|koIi3$(%GZ2+G+7Fv^lHTb#5b8sAHSTnL^qWZLM<(1|9|QFw9pnRU{svj}_Al zL)b9>fN{QiA($8peNEJyy`(a{&uh-T4_kdZFIVsKKVM(?05}76EEz?#W za^fiZOAd14IJ4zLX-n7Lq0qlQ^lW8Cvz4UKkV9~P}>sq0?xD3vg+$4vLm~C(+ zM{-3Z#qnZ09bJ>}j?6ry^h+@PfaD7*jZxBEY4)UG&daWb??6)TP+|3#Z&?GL?1i+280CFsE|vIXQbm| zM}Pk!U`U5NsNbyKzkrul-DzwB{X?n3E6?TUHr{M&+R*2%yOiXdW-_2Yd6?38M9Vy^ z*lE%gA{wwoSR~vN0=no}tP2Ul5Gk5M(Xq`$nw#ndFk`tcpd5A=Idue`XZ!FS>Q zG^0w#>P4pPG+*NC9gLP4x2m=cKP}YuS!l^?sHSFftZy{4CoQrb_ z^20(NnG`wAhMI=eq)SsIE~&Gp9Ne0nD4%Xiu|0Fj1UFk?6avDqjdXz{O1nKao*46y zT8~iA%Exu=G#{x=KD;_C&M+Zx4+n`sHT>^>=-1YM;H<72k>$py1?F3#T1*ef9mLZw z5naLQr?n7K;2l+{_uIw*_1nsTn~I|kkCgrn;|G~##hM;9l7Jy$yJfmk+&}W@JeKcF zx@@Woiz8qdi|D%aH3XTx5*wDlbs?dC1_nrFpm^QbG@wM=i2?Zg;$VK!c^Dp8<}BTI zyRhAq@#%2pGV49*Y5_mV4+OICP|%I(dQ7x=6Ob}>EjnB_-_18*xrY?b%-yEDT(wrO z9RY2QT0`_OpGfMObKHV;QLVnrK%mc?$WAdIT`kJQT^n%GuzE7|9@k3ci5fYOh(287 zuIbg!GB3xLg$YN=n)^pHGB0jH+_iIiC=nUcD;G6LuJsjn2VI1cyZx=a?ShCsF==QK z;q~*m&}L<-cb+mDDXzvvrRsybcgQ;Vg21P(uLv5I+eGc7o7tc6`;OA9{soHFOz zT~2?>Ts}gprIX$wRBb4yE>ot<8+*Bv`qbSDv*VtRi|cyWS>)Fjs>fkNOH-+PX&4(~ z&)T8Zam2L6puQl?;5zg9h<}k4#|yH9czHw;1jw-pwBM*O2hUR6yvHATrI%^mvs9q_ z&ccT0>f#eDG<^WG^q@oVqlJrhxH)dcq2cty@l3~|5#UDdExyXUmLQ}f4#;6fI{f^t zDCsgIJ~0`af%YR%Ma5VQq-p21k`vaBu6WE?66+5=XUd%Ay%D$irN>5LhluRWt7 zov-=f>QbMk*G##&DTQyou$s7UqjjW@k6=!I@!k+S{pP8R(2=e@io;N8E`EOB;OGoI zw6Q+{X1_I{OO0HPpBz!X!@`5YQ2)t{+!?M_iH25X(d~-Zx~cXnS9z>u?+If|iNJbx zyFU2d1!ITX64D|lE0Z{dLRqL1Ajj=CCMfC4lD3&mYR_R_VZ>_7_~|<^o*%_&jevU+ zQ4|qzci=0}Jydw|LXLCrOl1_P6Xf@c0$ieK2^7@A9UbF{@V_0p%lqW|L?5k>bVM8|p5v&2g;~r>B8uo<4N+`B zH{J)h;SYiIVx@#jI&p-v3dwL5QNV1oxPr8J%ooezTnLW>i*3Isb49%5i!&ac_dEXv zvXmVUck^QHmyrF8>CGXijC_R-y(Qr{3Zt~EmW)-nC!tiH`wlw5D*W7Pip;T?&j%kX z6DkZX4&}iw>hE(boLyjOoupf6JpvBG8}jIh!!VhnD0>}KSMMo{1#uU6kiFcA04~|7 zVO8eI&x1`g4CZ<2cYUI(n#wz2MtVFHx47yE5eL~8bot~>EHbevSt}LLMQX?odD{Ux zJMnam{d)W4da{l7&y-JrgiU~qY3$~}_F#G7|MxT)e;G{U`In&?`j<5D->}cb{}{T(4DF0BOk-=1195KB-E*o@c?`>y#4=dMtYtSY=&L{!TAjFVcq0y@AH`vH! z$41+u!Ld&}F^COPgL(EE{0X7LY&%D7-(?!kjFF7=qw<;`V{nwWBq<)1QiGJgUc^Vz ztMUlq1bZqKn17|6x6iAHbWc~l1HcmAxr%$Puv!znW)!JiukwIrqQ00|H$Z)OmGG@= zv%A8*4cq}(?qn4rN6o`$Y))(MyXr8R<2S^J+v(wmFmtac!%VOfN?&(8Nr!T@kV`N; z*Q33V3t`^rN&aBiHet)18wy{*wi1=W!B%B-Q6}SCrUl$~Hl{@!95ydml@FK8P=u4s z4e*7gV2s=YxEvskw2Ju!2%{8h01rx-3`NCPc(O zH&J0VH5etNB2KY6k4R@2Wvl^Ck$MoR3=)|SEclT2ccJ!RI9Nuter7u9@;sWf-%um;GfI!=eEIQ2l2p_YWUd{|6EG ze{yO6;lMc>;2tPrsNdi@&1K6(1;|$xe8vLgiouj%QD%gYk`4p{Ktv9|j+!OF-P?@p z;}SV|oIK)iwlBs+`ROXkhd&NK zzo__r!B>tOXpBJMDcv!Mq54P+n4(@dijL^EpO1wdg~q+!DT3lB<>9AANSe!T1XgC=J^)IP0XEZ()_vpu!!3HQyJhwh?r`Ae%Yr~b% zO*NY9t9#qWa@GCPYOF9aron7thfWT`eujS4`t2uG6)~JRTI;f(ZuoRQwjZjp5Pg34 z)rp$)Kr?R+KdJ;IO;pM{$6|2y=k_siqvp%)2||cHTe|b5Ht8&A{wazGNca zX$Ol?H)E_R@SDi~4{d-|8nGFhZPW;Cts1;08TwUvLLv&_2$O6Vt=M)X;g%HUr$&06 zISZb(6)Q3%?;3r~*3~USIg=HcJhFtHhIV(siOwV&QkQe#J%H9&E21!C*d@ln3E@J* zVqRO^<)V^ky-R|%{(9`l-(JXq9J)1r$`uQ8a}$vr9E^nNiI*thK8=&UZ0dsFN_eSl z(q~lnD?EymWLsNa3|1{CRPW60>DSkY9YQ;$4o3W7Ms&@&lv9eH!tk~N&dhqX&>K@} zi1g~GqglxkZ5pEFkllJ)Ta1I^c&Bt6#r(QLQ02yHTaJB~- zCcE=5tmi`UA>@P=1LBfBiqk)HB4t8D?02;9eXj~kVPwv?m{5&!&TFYhu>3=_ zsGmYZ^mo*-j69-42y&Jj0cBLLEulNRZ9vXE)8~mt9C#;tZs;=#M=1*hebkS;7(aGf zcs7zH(I8Eui9UU4L--))yy`&d&$In&VA2?DAEss4LAPCLd>-$i?lpXvn!gu^JJ$(DoUlc6wE98VLZ*z`QGQov5l4Fm_h?V-;mHLYDVOwKz7>e4+%AzeO>P6v}ndPW| zM>m#6Tnp7K?0mbK=>gV}=@k*0Mr_PVAgGMu$j+pWxzq4MAa&jpCDU&-5eH27Iz>m^ zax1?*HhG%pJ((tkR(V(O(L%7v7L%!_X->IjS3H5kuXQT2!ow(;%FDE>16&3r){!ex zhf==oJ!}YU89C9@mfDq!P3S4yx$aGB?rbtVH?sHpg?J5C->!_FHM%Hl3#D4eplxzQ zRA+<@LD%LKSkTk2NyWCg7u=$%F#;SIL44~S_OGR}JqX}X+=bc@swpiClB`Zbz|f!4 z7Ysah7OkR8liXfI`}IIwtEoL}(URrGe;IM8%{>b1SsqXh)~w}P>yiFRaE>}rEnNkT z!HXZUtxUp1NmFm)Dm@-{FI^aRQqpSkz}ZSyKR%Y}YHNzBk)ZIp} zMtS=aMvkgWKm9&oTcU0?S|L~CDqA+sHpOxwnswF-fEG)cXCzUR?ps@tZa$=O)=L+5 zf%m58cq8g_o}3?Bhh+c!w4(7AjxwQ3>WnVi<{{38g7yFboo>q|+7qs<$8CPXUFAN< zG&}BHbbyQ5n|qqSr?U~GY{@GJ{(Jny{bMaOG{|IkUj7tj^9pa9|FB_<+KHLxSxR;@ zHpS$4V)PP+tx}22fWx(Ku9y+}Ap;VZqD0AZW4gCDTPCG=zgJmF{|x;(rvdM|2|9a}cex6xrMkERnkE;}jvU-kmzd%_J50$M`lIPCKf+^*zL=@LW`1SaEc%=m zQ+lT06Gw+wVwvQ9fZ~#qd430v2HndFsBa9WjD0P}K(rZYdAt^5WQIvb%D^Q|pkVE^ zte$&#~zmULFACGfS#g=2OLOnIf2Of-k!(BIHjs77nr!5Q1*I9 z1%?=~#Oss!rV~?-6Gm~BWJiA4mJ5TY&iPm_$)H1_rTltuU1F3I(qTQ^U$S>%$l z)Wx1}R?ij0idp@8w-p!Oz{&*W;v*IA;JFHA9%nUvVDy7Q8woheC#|8QuDZb-L_5@R zOqHwrh|mVL9b=+$nJxM`3eE{O$sCt$UK^2@L$R(r^-_+z?lOo+me-VW=Zw z-Bn>$4ovfWd%SPY`ab-u9{INc*k2h+yH%toDHIyqQ zO68=u`N}RIIs7lsn1D){)~%>ByF<>i@qFb<-axvu(Z+6t7v<^z&gm9McRB~BIaDn$ z#xSGT!rzgad8o>~kyj#h1?7g96tOcCJniQ+*#=b7wPio>|6a1Z?_(TS{)KrPe}(8j z!#&A=k(&Pj^F;r)CI=Z{LVu>uj!_W1q4b`N1}E(i%;BWjbEcnD=mv$FL$l?zS6bW!{$7j1GR5ocn94P2u{ z70tAAcpqtQo<@cXw~@i-@6B23;317|l~S>CB?hR5qJ%J3EFgyBdJd^fHZu7AzHF(BQ!tyAz^L0`X z23S4Fe{2X$W0$zu9gm%rg~A>ijaE#GlYlrF9$ds^QtaszE#4M(OLVP2O-;XdT(XIC zatwzF*)1c+t~c{L=fMG8Z=k5lv>U0;C{caN1NItnuSMp)6G3mbahu>E#sj&oy94KC zpH}8oEw{G@N3pvHhp{^-YaZeH;K+T_1AUv;IKD<=mv^&Ueegrb!yf`4VlRl$M?wsl zZyFol(2|_QM`e_2lYSABpKR{{NlxlDSYQNkS;J66aT#MSiTx~;tUmvs-b*CrR4w=f z8+0;*th6kfZ3|5!Icx3RV11sp=?`0Jy3Fs0N4GZQMN=8HmT6%x9@{Dza)k}UwL6JT zHRDh;%!XwXr6yuuy`4;Xsn0zlR$k%r%9abS1;_v?`HX_hI|+EibVnlyE@3aL5vhQq zlIG?tN^w@0(v9M*&L+{_+RQZw=o|&BRPGB>e5=ys7H`nc8nx)|-g;s7mRc7hg{GJC zAe^vCIJhajmm7C6g! zL&!WAQ~5d_5)00?w_*|*H>3$loHrvFbitw#WvLB!JASO?#5Ig5$Ys10n>e4|3d;tS zELJ0|R4n3Az(Fl3-r^QiV_C;)lQ1_CW{5bKS15U|E9?ZgLec@%kXr84>5jV2a5v=w z?pB1GPdxD$IQL4)G||B_lI+A=08MUFFR4MxfGOu07vfIm+j=z9tp~5i_6jb`tR>qV z$#`=BQ*jpCjm$F0+F)L%xRlnS%#&gro6PiRfu^l!EVan|r3y}AHJQOORGx4~ z&<)3=K-tx518DZyp%|!EqpU!+X3Et7n2AaC5(AtrkW>_57i}$eqs$rupubg0a1+WO zGHZKLN2L0D;ab%{_S1Plm|hx8R?O14*w*f&2&bB050n!R2by zw!@XOQx$SqZ5I<(Qu$V6g>o#A!JVwErWv#(Pjx=KeS0@hxr4?13zj#oWwPS(7Ro|v z>Mp@Kmxo79q|}!5qtX2-O@U&&@6s~!I&)1WQIl?lTnh6UdKT_1R640S4~f=_xoN3- zI+O)$R@RjV$F=>Ti7BlnG1-cFKCC(t|Qjm{SalS~V-tX#+2ekRhwmN zZr`8{QF6y~Z!D|{=1*2D-JUa<(1Z=;!Ei!KiRNH?o{p5o3crFF=_pX9O-YyJchr$~ zRC`+G+8kx~fD2k*ZIiiIGR<8r&M@3H?%JVOfE>)})7ScOd&?OjgAGT@WVNSCZ8N(p zuQG~76GE3%(%h1*vUXg$vH{ua0b`sQ4f0*y=u~lgyb^!#CcPJa2mkSEHGLsnO^kb$ zru5_l#nu=Y{rSMWiYx?nO{8I!gH+?wEj~UM?IrG}E|bRIBUM>UlY<`T1EHpRr36vv zBi&dG8oxS|J$!zoaq{+JpJy+O^W(nt*|#g32bd&K^w-t>!Vu9N!k9eA8r!Xc{utY> zg9aZ(D2E0gL#W0MdjwES-7~Wa8iubPrd?8-$C4BP?*wok&O8+ykOx{P=Izx+G~hM8 z*9?BYz!T8~dzcZr#ux8kS7u7r@A#DogBH8km8Ry4slyie^n|GrTbO|cLhpqgMdsjX zJ_LdmM#I&4LqqsOUIXK8gW;V0B(7^$y#h3h>J0k^WJfAMeYek%Y-Dcb_+0zPJez!GM zAmJ1u;*rK=FNM0Nf}Y!!P9c4)HIkMnq^b;JFd!S3?_Qi2G#LIQ)TF|iHl~WKK6JmK zbv7rPE6VkYr_%_BT}CK8h=?%pk@3cz(UrZ{@h40%XgThP*-Oeo`T0eq9 zA8BnWZKzCy5e&&_GEsU4*;_k}(8l_&al5K-V*BFM=O~;MgRkYsOs%9eOY6s6AtE*<7GQAR2ulC3RAJrG_P1iQK5Z~&B z&f8X<>yJV6)oDGIlS$Y*D^Rj(cszTy5c81a5IwBr`BtnC6_e`ArI8CaTX_%rx7;cn zR-0?J_LFg*?(#n~G8cXut(1nVF0Oka$A$1FGcERU<^ggx;p@CZc?3UB41RY+wLS`LWFNSs~YP zuw1@DNN3lTd|jDL7gjBsd9}wIw}4xT2+8dBQzI00m<@?c2L%>}QLfK5%r!a-iII`p zX@`VEUH)uj^$;7jVUYdADQ2k*!1O3WdfgF?OMtUXNpQ1}QINamBTKDuv19^{$`8A1 zeq%q*O0mi@(%sZU>Xdb0Ru96CFqk9-L3pzLVsMQ`Xpa~N6CR{9Rm2)A|CI21L(%GW zh&)Y$BNHa=FD+=mBw3{qTgw)j0b!Eahs!rZnpu)z!!E$*eXE~##yaXz`KE5(nQM`s zD!$vW9XH)iMxu9R>r$VlLk9oIR%HxpUiW=BK@4U)|1WNQ=mz9a z^!KkO=>GaJ!GBXm{KJj^;kh-MkUlEQ%lza`-G&}C5y1>La1sR6hT=d*NeCnuK%_LV zOXt$}iP6(YJKc9j-Fxq~*ItVUqljQ8?oaysB-EYtFQp9oxZ|5m0^Hq(qV!S+hq#g( z?|i*H2MIr^Kxgz+3vIljQ*Feejy6S4v~jKEPTF~Qhq!(ms5>NGtRgO5vfPPc4Z^AM zTj!`5xEreIN)vaNxa|q6qWdg>+T`Ol0Uz)ckXBXEGvPNEL3R8hB3=C5`@=SYgAju1 z!)UBr{2~=~xa{b8>x2@C7weRAEuatC)3pkRhT#pMPTpSbA|tan%U7NGMvzmF?c!V8 z=pEWxbdXbTAGtWTyI?Fml%lEr-^AE}w#l(<7OIw;ctw}imYax&vR4UYNJZK6P7ZOd zP87XfhnUHxCUHhM@b*NbTi#(-8|wcv%3BGNs#zRCVV(W?1Qj6^PPQa<{yaBwZ`+<`w|;rqUY_C z&AeyKwwf*q#OW-F()lir=T^<^wjK65Lif$puuU5+tk$;e_EJ;Lu+pH>=-8=PDhkBg z8cWt%@$Sc#C6F$Vd+0507;{OOyT7Hs%nKS88q-W!$f~9*WGBpHGgNp}=C*7!RiZ5s zn1L_DbKF@B8kwhDiLKRB@lsXVVLK|ph=w%_`#owlf@s@V(pa`GY$8h%;-#h@TsO|Y8V=n@*!Rog7<7Cid%apR|x zOjhHCyfbIt%+*PCveTEcuiDi%Wx;O;+K=W?OFUV%)%~6;gl?<0%)?snDDqIvkHF{ zyI02)+lI9ov42^hL>ZRrh*HhjF9B$A@=H94iaBESBF=eC_KT$8A@uB^6$~o?3Wm5t1OIaqF^~><2?4e3c&)@wKn9bD? zoeCs;H>b8DL^F&>Xw-xjZEUFFTv>JD^O#1E#)CMBaG4DX9bD(Wtc8Rzq}9soQ8`jf zeSnHOL}<+WVSKp4kkq&?SbETjq6yr@4%SAqOG=9E(3YeLG9dtV+8vmzq+6PFPk{L; z(&d++iu=^F%b+ea$i2UeTC{R*0Isk;vFK!no<;L+(`y`3&H-~VTdKROkdyowo1iqR zbVW(3`+(PQ2>TKY>N!jGmGo7oeoB8O|P_!Ic@ zZ^;3dnuXo;WJ?S+)%P>{Hcg!Jz#2SI(s&dY4QAy_vRlmOh)QHvs_7c&zkJCmJGVvV zX;Mtb>QE+xp`KyciG$Cn*0?AK%-a|=o!+7x&&yzHQOS>8=B*R=niSnta^Pxp1`=md z#;$pS$4WCT?mbiCYU?FcHGZ#)kHVJTTBt^%XE(Q};aaO=Zik0UgLcc0I(tUpt(>|& zcxB_|fxCF7>&~5eJ=Dpn&5Aj{A^cV^^}(7w#p;HG&Q)EaN~~EqrE1qKrMAc&WXIE;>@<&)5;gD2?={Xf@Mvn@OJKw=8Mgn z!JUFMwD+s==JpjhroT&d{$kQAy%+d`a*XxDEVxy3`NHzmITrE`o!;5ClXNPb4t*8P zzAivdr{j_v!=9!^?T3y?gzmqDWX6mkzhIzJ-3S{T5bcCFMr&RPDryMcdwbBuZbsgN zGrp@^i?rcfN7v0NKGzDPGE#4yszxu=I_`MI%Z|10nFjU-UjQXXA?k8Pk|OE<(?ae) zE%vG#eZAlj*E7_3dx#Zz4kMLj>H^;}33UAankJiDy5ZvEhrjr`!9eMD8COp}U*hP+ zF}KIYx@pkccIgyxFm#LNw~G&`;o&5)2`5aogs`1~7cMZQ7zj!%L4E`2yzlQN6REX20&O<9 zKV6fyr)TScJPPzNTC2gL+0x#=u>(({{D7j)c-%tvqls3#Y?Z1m zV5WUE)zdJ{$p>yX;^P!UcXP?UD~YM;IRa#Rs5~l+*$&nO(;Ers`G=0D!twR(0GF@c zHl9E5DQI}Oz74n zfKP>&$q0($T4y$6w(p=ERAFh+>n%iaeRA%!T%<^+pg?M)@ucY<&59$x9M#n+V&>}=nO9wCV{O~lg&v#+jcUj(tQ z`0u1YH)-`U$15a{pBkGyPL0THv1P|4e@pf@3IBZS4dVJPo#H>pWq%Lr0YS-SeWash z8R7=jb28KPMI|_lo#GEO|5B?N_e``H*23{~a!AmUJ+fb4HX-%QI@lSEUxKlGV7z7Q zSKw@-TR>@1RL%w{x}dW#k1NgW+q4yt2Xf1J62Bx*O^WG8OJ|FqI4&@d3_o8Id@*)4 zYrk=>@!wv~mh7YWv*bZhxqSmFh2Xq)o=m;%n$I?GSz49l1$xRpPu_^N(vZ>*>Z<04 z2+rP70oM=NDysd!@fQdM2OcyT?3T^Eb@lIC-UG=Bw{BjQ&P`KCv$AcJ;?`vdZ4){d z&gkoUK{$!$$K`3*O-jyM1~p-7T*qb)Ys>Myt^;#1&a%O@x8A+E>! zY8=eD`ZG)LVagDLBeHg>=atOG?Kr%h4B%E6m@J^C+U|y)XX@f z8oyJDW|9g=<#f<{JRr{y#~euMnv)`7j=%cHWLc}ngjq~7k**6%4u>Px&W%4D94(r* z+akunK}O0DC2A%Xo9jyF;DobX?!1I(7%}@7F>i%&nk*LMO)bMGg2N+1iqtg+r(70q zF5{Msgsm5GS7DT`kBsjMvOrkx&|EU!{{~gL4d2MWrAT=KBQ-^zQCUq{5PD1orxlIL zq;CvlWx#f1NWvh`hg011I%?T_s!e38l*lWVt|~z-PO4~~1g)SrJ|>*tXh=QfXT)%( z+ex+inPvD&O4Ur;JGz>$sUOnWdpSLcm1X%aQDw4{dB!cnj`^muI$CJ2%p&-kULVCE z>$eMR36kN$wCPR+OFDM3-U(VOrp9k3)lI&YVFqd;Kpz~K)@Fa&FRw}L(SoD z9B4a+hQzZT-BnVltst&=kq6Y(f^S4hIGNKYBgMxGJ^;2yrO}P3;r)(-I-CZ)26Y6? z&rzHI_1GCvGkgy-t1E;r^3Le30|%$ebDRu2+gdLG)r=A~Qz`}~&L@aGJ{}vVs_GE* zVUjFnzHiXfKQbpv&bR&}l2bzIjAooB)=-XNcYmrGmBh(&iu@o!^hn0^#}m2yZZUK8 zufVm7Gq0y`Mj;9b>`c?&PZkU0j4>IL=UL&-Lp3j&47B5pAW4JceG{!XCA)kT<%2nqCxj<)uy6XR_uws~>_MEKPOpAQ!H zkn>FKh)<9DwwS*|Y(q?$^N!6(51O0 z^JM~Ax{AI1Oj$fs-S5d4T7Z_i1?{%0SsIuQ&r8#(JA=2iLcTN+?>wOL532%&dMYkT z*T5xepC+V6zxhS@vNbMoi|i)=rpli@R9~P!39tWbSSb904ekv7D#quKbgFEMTb48P zuq(VJ+&L8aWU(_FCD$3^uD!YM%O^K(dvy~Wm2hUuh6bD|#(I39Xt>N1Y{ZqXL`Fg6 zKQ?T2htHN!(Bx;tV2bfTtIj7e)liN-29s1kew>v(D^@)#v;}C4-G=7x#;-dM4yRWm zyY`cS21ulzMK{PoaQ6xChEZ}o_#}X-o}<&0)$1#3we?+QeLt;aVCjeA)hn!}UaKt< zat1fHEx13y-rXNMvpUUmCVzocPmN~-Y4(YJvQ#db)4|%B!rBsgAe+*yor~}FrNH08 z3V!97S}D7d$zbSD{$z;@IYMxM6aHdypIuS*pr_U6;#Y!_?0i|&yU*@16l z*dcMqDQgfNBf}?quiu4e>H)yTVfsp#f+Du0@=Kc41QockXkCkvu>FBd6Q+@FL!(Yx z2`YuX#eMEiLEDhp+9uFqME_E^faV&~9qjBHJkIp~%$x^bN=N)K@kvSVEMdDuzA0sn z88CBG?`RX1@#hQNd`o^V{37)!w|nA)QfiYBE^m=yQKv-fQF+UCMcuEe1d4BH7$?>b zJl-r9@0^Ie=)guO1vOd=i$_4sz>y3x^R7n4ED!5oXL3@5**h(xr%Hv)_gILarO46q+MaDOF%ChaymKoI6JU5Pg;7#2n9-18|S1;AK+ zgsn6;k6-%!QD>D?cFy}8F;r@z8H9xN1jsOBw2vQONVqBVEbkiNUqgw~*!^##ht>w0 zUOykwH=$LwX2j&nLy=@{hr)2O&-wm-NyjW7n~Zs9UlH;P7iP3 zI}S(r0YFVYacnKH(+{*)Tbw)@;6>%=&Th=+Z6NHo_tR|JCI8TJiXv2N7ei7M^Q+RM z?9o`meH$5Yi;@9XaNR#jIK^&{N|DYNNbtdb)XW1Lv2k{E>;?F`#Pq|&_;gm~&~Zc9 zf+6ZE%{x4|{YdtE?a^gKyzr}dA>OxQv+pq|@IXL%WS0CiX!V zm$fCePA%lU{%pTKD7|5NJHeXg=I0jL@$tOF@K*MI$)f?om)D63K*M|r`gb9edD1~Y zc|w7N)Y%do7=0{RC|AziW7#am$)9jciRJ?IWl9PE{G3U+$%FcyKs_0Cgq`=K3@ttV z9g;M!3z~f_?P%y3-ph%vBMeS@p7P&Ea8M@97+%XEj*(1E6vHj==d zjsoviB>j^$_^OI_DEPvFkVo(BGRo%cJeD){6Uckei=~1}>sp299|IRjhXe)%?uP0I zF5+>?0#Ye}T^Y$u_rc4=lPcq4K^D(TZG-w30-YiEM=dcK+4#o*>lJ8&JLi+3UcpZk z!^?95S^C0ja^jwP`|{<+3cBVog$(mRdQmadS+Vh~z zS@|P}=|z3P6uS+&@QsMp0no9Od&27O&14zHXGAOEy zh~OKpymK5C%;LLb467@KgIiVwYbYd6wFxI{0-~MOGfTq$nBTB!{SrWmL9Hs}C&l&l#m?s*{tA?BHS4mVKHAVMqm63H<|c5n0~k)-kbg zXidai&9ZUy0~WFYYKT;oe~rytRk?)r8bptITsWj(@HLI;@=v5|XUnSls7$uaxFRL+ zRVMGuL3w}NbV1`^=Pw*0?>bm8+xfeY(1PikW*PB>>Tq(FR`91N0c2&>lL2sZo5=VD zQY{>7dh_TX98L2)n{2OV=T10~*YzX27i2Q7W86M4$?gZIXZaBq#sA*{PH8){|GUi;oM>e?ua7eF4WFuFYZSG| zze?srg|5Ti8Og{O zeFxuw9!U+zhyk?@w zjsA6(oKD=Ka;A>Ca)oPORxK+kxH#O@zhC!!XS4@=swnuMk>t+JmLmFiE^1aX3f<)D@`%K0FGK^gg1a1j>zi z2KhV>sjU7AX3F$SEqrXSC}fRx64GDoc%!u2Yag68Lw@w9v;xOONf@o)Lc|Uh3<21ctTYu-mFZuHk*+R{GjXHIGq3p)tFtQp%TYqD=j1&y)>@zxoxUJ!G@ zgI0XKmP6MNzw>nRxK$-Gbzs}dyfFzt>#5;f6oR27ql!%+{tr+(`(>%51|k`ML} zY4eE)Lxq|JMas(;JibNQds1bUB&r}ydMQXBY4x(^&fY_&LlQC)3hylc$~8&~|06-D z#T+%66rYbHX%^KuqJED_wuGB+=h`nWA!>1n0)3wZrBG3%`b^Ozv6__dNa@%V14|!D zQ?o$z5u0^8`giv%qE!BzZ!3j;BlDlJDk)h@9{nSQeEk!z9RGW) z${RSF3phEM*ce*>Xdp}585vj$|40=&S{S-GTiE?Op*vY&Lvr9}BO$XWy80IF+6@%n z5*2ueT_g@ofP#u5pxb7n*fv^Xtt7&?SRc{*2Ka-*!BuOpf}neHGCiHy$@Ka1^Dint z;DkmIL$-e)rj4o2WQV%Gy;Xg(_Bh#qeOsTM2f@KEe~4kJ8kNLQ+;(!j^bgJMcNhvklP5Z6I+9Fq@c&D~8Fb-4rmDT!MB5QC{Dsb;BharP*O;SF4& zc$wj-7Oep7#$WZN!1nznc@Vb<_Dn%ga-O#J(l=OGB`dy=Sy&$(5-n3zzu%d7E#^8`T@}V+5B;PP8J14#4cCPw-SQTdGa2gWL0*zKM z#DfSXs_iWOMt)0*+Y>Lkd=LlyoHjublNLefhKBv@JoC>P7N1_#> zv=mLWe96%EY;!ZGSQDbZWb#;tzqAGgx~uk+-$+2_8U`!ypbwXl z^2E-FkM1?lY@yt8=J3%QK+xaZ6ok=-y%=KXCD^0r!5vUneW>95PzCkOPO*t}p$;-> ze5j-BLT_;)cZQzR2CEsm@rU7GZfFtdp*a|g4wDr%8?2QkIGasRfDWT-Dvy*U{?IHT z*}wGnzdlSptl#ZF^sf)KT|BJs&kLG91^A6ls{CzFprZ6-Y!V0Xysh%9p%iMd7HLsS zN+^Un$tDV)T@i!v?3o0Fsx2qI(AX_$dDkBzQ@fRM%n zRXk6hb9Py#JXUs+7)w@eo;g%QQ95Yq!K_d=z{0dGS+pToEI6=Bo8+{k$7&Z zo4>PH(`ce8E-Ps&uv`NQ;U$%t;w~|@E3WVOCi~R4oj5wP?%<*1C%}Jq%a^q~T7u>K zML5AKfQDv6>PuT`{SrKHRAF+^&edg6+5R_#H?Lz3iGoWo#PCEd0DS;)2U({{X#zU^ zw_xv{4x7|t!S)>44J;KfA|DC?;uQ($l+5Vp7oeqf7{GBF9356nx|&B~gs+@N^gSdd zvb*>&W)|u#F{Z_b`f#GVtQ`pYv3#||N{xj1NgB<#=Odt6{eB%#9RLt5v zIi|0u70`#ai}9fJjKv7dE!9ZrOIX!3{$z_K5FBd-Kp-&e4(J$LD-)NMTp^_pB`RT; zftVVlK2g@+1Ahv2$D){@Y#cL#dUj9*&%#6 zd2m9{1NYp>)6=oAvqdCn5#cx{AJ%S8skUgMglu2*IAtd+z1>B&`MuEAS(D(<6X#Lj z?f4CFx$)M&$=7*>9v1ER4b6!SIz-m0e{o0BfkySREchp?WdVPpQCh!q$t>?rL!&Jg zd#heM;&~A}VEm8Dvy&P|J*eAV&w!&Nx6HFV&B8jJFVTmgLaswn!cx$&%JbTsloz!3 zMEz1d`k==`Ueub_JAy_&`!ogbwx27^ZXgFNAbx=g_I~5nO^r)}&myw~+yY*cJl4$I znNJ32M&K=0(2Dj_>@39`3=FX!v3nZHno_@q^!y}%(yw0PqOo=);6Y@&ylVe>nMOZ~ zd>j#QQSBn3oaWd;qy$&5(5H$Ayi)0haAYO6TH>FR?rhqHmNOO+(})NB zLI@B@v0)eq!ug`>G<@htRlp3n!EpU|n+G+AvXFrWSUsLMBfL*ZB`CRsIVHNTR&b?K zxBgsN0BjfB>UVcJ|x%=-zb%OV7lmZc& zxiupadZVF7)6QuhoY;;FK2b*qL0J-Rn-8!X4ZY$-ZSUXV5DFd7`T41c(#lAeLMoeT z4%g655v@7AqT!i@)Edt5JMbN(=Q-6{=L4iG8RA%}w;&pKmtWvI4?G9pVRp|RTw`g0 zD5c12B&A2&P6Ng~8WM2eIW=wxd?r7A*N+&!Be7PX3s|7~z=APxm=A?5 zt>xB4WG|*Td@VX{Rs)PV0|yK`oI3^xn(4c_j&vgxk_Y3o(-`_5o`V zRTghg6%l@(qodXN;dB#+OKJEEvhfcnc#BeO2|E(5df-!fKDZ!%9!^BJ_4)9P+9Dq5 zK1=(v?KmIp34r?z{NEWnLB3Px{XYwy-akun4F7xTRr2^zeYW{gcK9)>aJDdU5;w5@ zak=<+-PLH-|04pelTb%ULpuuuJC7DgyT@D|p{!V!0v3KpDnRjANN12q6SUR3mb9<- z>2r~IApQGhstZ!3*?5V z8#)hJ0TdZg0M-BK#nGFP>$i=qk82DO z7h;Ft!D5E15OgW)&%lej*?^1~2=*Z5$2VX>V{x8SC+{i10BbtUk9@I#Vi&hX)q
Q!LwySI{Bnv%Sm)yh{^sSVJ8&h_D-BJ_YZe5eCaAWU9b$O2c z$T|{vWVRtOL!xC0DTc(Qbe`ItNtt5hr<)VijD0{U;T#bUEp381_y`%ZIav?kuYG{iyYdEBPW=*xNSc;Rlt6~F4M`5G+VtOjc z*0qGzCb@gME5udTjJA-9O<&TWd~}ysBd(eVT1-H82-doyH9RST)|+Pb{o*;$j9Tjs zhU!IlsPsj8=(x3bAKJTopW3^6AKROHR^7wZ185wJGVhA~hEc|LP;k7NEz-@4p5o}F z`AD6naG3(n=NF9HTH81=F+Q|JOz$7wm9I<+#BSmB@o_cLt2GkW9|?7mM;r!JZp89l zbo!Hp8=n!XH1{GwaDU+k)pGp`C|cXkCU5%vcH)+v@0eK>%7gWxmuMu9YLlChA|_D@ zi#5zovN_!a-0?~pUV-Rj*1P)KwdU-LguR>YM&*Nen+ln8Q$?WFCJg%DY%K}2!!1FE zDv-A%Cbwo^p(lzac&_TZ-l#9kq`mhLcY3h9ZTUVCM(Ad&=EriQY5{jJv<5K&g|*Lk zgV%ILnf1%8V2B0E&;Sp4sYbYOvvMebLwYwzkRQ#F8GpTQq#uv=J`uaSJ34OWITeSGo6+-8Xw znCk*n{kdDEi)Hi&u^)~cs@iyCkFWB2SWZU|Uc%^43ZIZQ-vWNExCCtDWjqHs;;tWf$v{}0{p0Rvxkq``)*>+Akq%|Na zA`@~-Vfe|+(AIlqru+7Ceh4nsVmO9p9jc8}HX^W&ViBDXT+uXbT#R#idPn&L>+#b6 zflC-4C5-X;kUnR~L>PSLh*gvL68}RBsu#2l`s_9KjUWRhiqF`j)`y`2`YU(>3bdBj z?>iyjEhe-~$^I5!nn%B6Wh+I`FvLNvauve~eX<+Ipl&04 zT}};W&1a3%W?dJ2=N#0t?e+aK+%t}5q%jSLvp3jZ%?&F}nOOWr>+{GFIa%wO_2`et z=JzoRR~}iKuuR+azPI8;Gf9)z3kyA4EIOSl!sRR$DlW}0>&?GbgPojmjmnln;cTqCt=ADbE zZ8GAnoM+S1(5$i8^O4t`ue;vO4i}z0wz-QEIVe5_u03;}-!G1NyY8;h^}y;tzY}i5 zqQr#Ur3Fy8sSa$Q0ys+f`!`+>9WbvU_I`Sj;$4{S>O3?#inLHCrtLy~!s#WXV=oVP zeE93*Nc`PBi4q@%Ao$x4lw9vLHM!6mn3-b_cebF|n-2vt-zYVF_&sDE--J-P;2WHo z+@n2areE0o$LjvjlV2X7ZU@j+`{*8zq`JR3gKF#EW|#+{nMyo-a>nFFTg&vhyT=b} zDa8+v0(Dgx0yRL@ZXOYIlVSZ0|MFizy0VPW8;AfA5|pe!#j zX}Py^8fl5SyS4g1WSKKtnyP+_PoOwMMwu`(i@Z)diJp~U54*-miOchy7Z35eL>^M z4p<-aIxH4VUZgS783@H%M7P9hX>t{|RU7$n4T(brCG#h9e9p! z+o`i;EGGq3&pF;~5V~eBD}lC)>if$w%Vf}AFxGqO88|ApfHf&Bvu+xdG)@vuF}Yvk z)o;~k-%+0K0g+L`Wala!$=ZV|z$e%>f0%XoLib%)!R^RoS+{!#X?h-6uu zF&&KxORdZU&EwQFITIRLo(7TA3W}y6X{?Y%y2j0It!ekU#<)$qghZtpcS>L3uh`Uj z7GY;6f$9qKynP#oS3$$a{p^{D+0oJQ71`1?OAn_m8)UGZmj3l*ZI)`V-a>MKGGFG< z&^jg#Ok%(hhm>hSrZ5;Qga4u(?^i>GiW_j9%_7M>j(^|Om$#{k+^*ULnEgzW_1gCICtAD^WpC`A z{9&DXkG#01Xo)U$OC(L5Y$DQ|Q4C6CjUKk1UkPj$nXH##J{c8e#K|&{mA*;b$r0E4 zUNo0jthwA(c&N1l=PEe8Rw_8cEl|-eya9z&H3#n`B$t#+aJ03RFMzrV@gowbe8v(c zIFM60^0&lCFO10NU4w@|61xiZ4CVXeaKjd;d?sv52XM*lS8XiVjgWpRB;&U_C0g+`6B5V&w|O6B*_q zsATxL!M}+$He)1eOWECce#eS@2n^xhlB4<_Nn?yCVEQWDs(r`|@2GqLe<#(|&P0U? z$7V5IgpWf09uIf_RazRwC?qEqRaHyL?iiS05UiGesJy%^>-C{{ypTBI&B0-iUYhk> zIk<5xpsuV@g|z(AZD+C-;A!fTG=df1=<%nxy(a(IS+U{ME4ZbDEBtcD_3V=icT6*_ z)>|J?>&6%nvHhZERBtjK+s4xnut*@>GAmA5m*OTp$!^CHTr}vM4n(X1Q*;{e-Rd2BCF-u@1ZGm z!S8hJ6L=Gl4T_SDa7Xx|-{4mxveJg=ctf`BJ*fy!yF6Dz&?w(Q_6B}WQVtNI!BVBC zKfX<>7vd6C96}XAQmF-Jd?1Q4eTfRB3q7hCh0f!(JkdWT5<{iAE#dKy*Jxq&3a1@~ z8C||Dn2mFNyrUV|<-)C^_y7@8c2Fz+2jrae9deBDu;U}tJ{^xAdxCD248(k;dCJ%o z`y3sADe>U%suxwwv~8A1+R$VB=Q?%U?4joI$um;aH+eCrBqpn- z%79D_7rb;R-;-9RTrwi9dPlg8&@tfWhhZ(Vx&1PQ+6(huX`;M9x~LrW~~#3{j0Bh2kDU$}@!fFQej4VGkJv?M4rU^x!RU zEwhu$!CA_iDjFjrJa`aocySDX16?~;+wgav;}Zut6Mg%C4>}8FL?8)Kgwc(Qlj{@#2Pt0?G`$h7P#M+qoXtlV@d}%c&OzO+QYKK`kyXaK{U(O^2DyIXCZlNQjt0^8~8JzNGrIxhj}}M z&~QZlbx%t;MJ(Vux;2tgNKGlAqphLq%pd}JG9uoVHUo?|hN{pLQ6Em%r*+7t^<);X zm~6=qChlNAVXNN*Sow->*4;}T;l;D1I-5T{Bif@4_}=>l`tK;qqDdt5zvisCKhMAH z#r}`)7VW?LZqfdmXQ%zo5bJ00{Xb9^YKrk0Nf|oIW*K@(=`o2Vndz}ZDyk{!u}PVx zzd--+_WC*U{~DH3{?GI64IB+@On&@9X>EUAo&L+G{L^dozaI4C3G#2wr~hseW@K&g zKWs{uHu-9Je!3;4pE>eBltKUXb^*hG8I&413)$J&{D4N%7PcloU6bn%jPxJyQL?g* z9g+YFFEDiE`8rW^laCNzQmi7CTnPfwyg3VDHRAl>h=In6jeaVOP@!-CP60j3+#vpL zEYmh_oP0{-gTe7Or`L6x)6w?77QVi~jD8lWN@3RHcm80iV%M1A!+Y6iHM)05iC64tb$X2lV_%Txk@0l^hZqi^%Z?#- zE;LE0uFx)R08_S-#(wC=dS&}vj6P4>5ZWjhthP=*Hht&TdLtKDR;rXEX4*z0h74FA zMCINqrh3Vq;s%3MC1YL`{WjIAPkVL#3rj^9Pj9Ss7>7duy!9H0vYF%>1jh)EPqvlr6h%R%CxDsk| z!BACz7E%j?bm=pH6Eaw{+suniuY7C9Ut~1cWfOX9KW9=H><&kQlinPV3h9R>3nJvK z4L9(DRM=x;R&d#a@oFY7mB|m8h4692U5eYfcw|QKwqRsshN(q^v$4$)HgPpAJDJ`I zkqjq(8Cd!K!+wCd=d@w%~e$=gdUgD&wj$LQ1r>-E=O@c ze+Z$x{>6(JA-fNVr)X;*)40Eym1TtUZI1Pwwx1hUi+G1Jlk~vCYeXMNYtr)1?qwyg zsX_e*$h?380O00ou?0R@7-Fc59o$UvyVs4cUbujHUA>sH!}L54>`e` zHUx#Q+Hn&Og#YVOuo*niy*GU3rH;%f``nk#NN5-xrZ34NeH$l`4@t);4(+0|Z#I>Y z)~Kzs#exIAaf--65L0UHT_SvV8O2WYeD>Mq^Y6L!Xu8%vnpofG@w!}R7M28?i1*T&zp3X4^OMCY6(Dg<-! zXmcGQrRgHXGYre7GfTJ)rhl|rs%abKT_Nt24_Q``XH{88NVPW+`x4ZdrMuO0iZ0g` z%p}y};~T5gbb9SeL8BSc`SO#ixC$@QhXxZ=B}L`tP}&k?1oSPS=4%{UOHe0<_XWln zwbl5cn(j-qK`)vGHY5B5C|QZd5)W7c@{bNVXqJ!!n$^ufc?N9C-BF2QK1(kv++h!>$QbAjq)_b$$PcJdV+F7hz0Hu@ zqj+}m0qn{t^tD3DfBb~0B36|Q`bs*xs|$i^G4uNUEBl4g;op-;Wl~iThgga?+dL7s zUP(8lMO?g{GcYpDS{NM!UA8Hco?#}eNEioRBHy4`mq!Pd-9@-97|k$hpEX>xoX+dY zDr$wfm^P&}Wu{!%?)U_(%Mn79$(ywvu*kJ9r4u|MyYLI_67U7%6Gd_vb##Nerf@>& z8W11z$$~xEZt$dPG}+*IZky+os5Ju2eRi;1=rUEeIn>t-AzC_IGM-IXWK3^6QNU+2pe=MBn4I*R@A%-iLDCOHTE-O^wo$sL_h{dcPl=^muAQb`_BRm};=cy{qSkui;`WSsj9%c^+bIDQ z0`_?KX0<-=o!t{u(Ln)v>%VGL z0pC=GB7*AQ?N7N{ut*a%MH-tdtNmNC+Yf$|KS)BW(gQJ*z$d{+{j?(e&hgTy^2|AR9vx1Xre2fagGv0YXWqtNkg*v%40v?BJBt|f9wX5 z{QTlCM}b-0{mV?IG>TW_BdviUKhtosrBqdfq&Frdz>cF~yK{P@(w{Vr7z2qKFwLhc zQuogKO@~YwyS9%+d-zD7mJG~@?EFJLSn!a&mhE5$_4xBl&6QHMzL?CdzEnC~C3$X@ zvY!{_GR06ep5;<#cKCSJ%srxX=+pn?ywDwtJ2{TV;0DKBO2t++B(tIO4)Wh`rD13P z4fE$#%zkd=UzOB74gi=-*CuID&Z3zI^-`4U^S?dHxK8fP*;fE|a(KYMgMUo`THIS1f!*6dOI2 zFjC3O=-AL`6=9pp;`CYPTdVX z8(*?V&%QoipuH0>WKlL8A*zTKckD!paN@~hh zmXzm~qZhMGVdQGd=AG8&20HW0RGV8X{$9LldFZYm zE?}`Q3i?xJRz43S?VFMmqRyvWaS#(~Lempg9nTM$EFDP(Gzx#$r)W&lpFKqcAoJh-AxEw$-bjW>`_+gEi z2w`99#UbFZGiQjS8kj~@PGqpsPX`T{YOj`CaEqTFag;$jY z8_{Wzz>HXx&G*Dx<5skhpETxIdhKH?DtY@b9l8$l?UkM#J-Snmts7bd7xayKTFJ(u zyAT&@6cAYcs{PBfpqZa%sxhJ5nSZBPji?Zlf&}#L?t)vC4X5VLp%~fz2Sx<*oN<7` z?ge=k<=X7r<~F7Tvp9#HB{!mA!QWBOf%EiSJ6KIF8QZNjg&x~-%e*tflL(ji_S^sO ztmib1rp09uon}RcsFi#k)oLs@$?vs(i>5k3YN%$T(5Or(TZ5JW9mA6mIMD08=749$ z!d+l*iu{Il7^Yu}H;lgw=En1sJpCKPSqTCHy4(f&NPelr31^*l%KHq^QE>z>Ks_bH zjbD?({~8Din7IvZeJ>8Ey=e;I?thpzD=zE5UHeO|neioJwG;IyLk?xOz(yO&0DTU~ z^#)xcs|s>Flgmp;SmYJ4g(|HMu3v7#;c*Aa8iF#UZo7CvDq4>8#qLJ|YdZ!AsH%^_7N1IQjCro

K7UpUK$>l@ zw`1S}(D?mUXu_C{wupRS-jiX~w=Uqqhf|Vb3Cm9L=T+w91Cu^ z*&Ty%sN?x*h~mJc4g~k{xD4ZmF%FXZNC;oVDwLZ_WvrnzY|{v8hc1nmx4^}Z;yriXsAf+Lp+OFLbR!&Ox?xABwl zu8w&|5pCxmu#$?Cv2_-Vghl2LZ6m7}VLEfR5o2Ou$x02uA-%QB2$c(c1rH3R9hesc zfpn#oqpbKuVsdfV#cv@5pV4^f_!WS+F>SV6N0JQ9E!T90EX((_{bSSFv9ld%I0&}9 zH&Jd4MEX1e0iqDtq~h?DBrxQX1iI0lIs<|kB$Yrh&cpeK0-^K%=FBsCBT46@h#yi!AyDq1V(#V}^;{{V*@T4WJ&U-NTq43w=|K>z8%pr_nC>%C(Wa_l78Ufib$r8Od)IIN=u>417 z`Hl{9A$mI5A(;+-Q&$F&h-@;NR>Z<2U;Y21>>Z;s@0V@SbkMQQj%_;~+qTuQ?c|AV zcWm3XZQHhP&R%QWarS%mJ!9R^&!_)*s(v+VR@I#QrAT}`17Y+l<`b-nvmDNW`De%y zrwTZ9EJrj1AFA>B`1jYDow}~*dfPs}IZMO3=a{Fy#IOILc8F0;JS4x(k-NSpbN@qM z`@aE_e}5{!$v3+qVs7u?sOV(y@1Os*Fgu`fCW9=G@F_#VQ%xf$hj0~wnnP0$hFI+@ zkQj~v#V>xn)u??YutKsX>pxKCl^p!C-o?+9;!Nug^ z{rP!|+KsP5%uF;ZCa5F;O^9TGac=M|=V z_H(PfkV1rz4jl?gJ(ArXMyWT4y(86d3`$iI4^l9`vLdZkzpznSd5Ikfrs8qcSy&>z zTIZgWZGXw0n9ibQxYWE@gI0(3#KA-dAdPcsL_|hg2@~C!VZDM}5;v_Nykfq!*@*Zf zE_wVgx82GMDryKO{U{D>vSzSc%B~|cjDQrt5BN=Ugpsf8H8f1lR4SGo#hCuXPL;QQ z#~b?C4MoepT3X`qdW2dNn& zo8)K}%Lpu>0tQei+{>*VGErz|qjbK#9 zvtd8rcHplw%YyQCKR{kyo6fgg!)6tHUYT(L>B7er5)41iG`j$qe*kSh$fY!PehLcD zWeKZHn<492B34*JUQh=CY1R~jT9Jt=k=jCU2=SL&&y5QI2uAG2?L8qd2U(^AW#{(x zThSy=C#>k+QMo^7caQcpU?Qn}j-`s?1vXuzG#j8(A+RUAY})F@=r&F(8nI&HspAy4 z4>(M>hI9c7?DCW8rw6|23?qQMSq?*Vx?v30U%luBo)B-k2mkL)Ljk5xUha3pK>EEj z@(;tH|M@xkuN?gsz;*bygizwYR!6=(Xgcg^>WlGtRYCozY<rFX2E>kaZo)O<^J7a`MX8Pf`gBd4vrtD|qKn&B)C&wp0O-x*@-|m*0egT=-t@%dD zgP2D+#WPptnc;_ugD6%zN}Z+X4=c61XNLb7L1gWd8;NHrBXwJ7s0ce#lWnnFUMTR& z1_R9Fin4!d17d4jpKcfh?MKRxxQk$@)*hradH2$3)nyXep5Z;B z?yX+-Bd=TqO2!11?MDtG0n(*T^!CIiF@ZQymqq1wPM_X$Iu9-P=^}v7npvvPBu!d$ z7K?@CsA8H38+zjA@{;{kG)#AHME>Ix<711_iQ@WWMObXyVO)a&^qE1GqpP47Q|_AG zP`(AD&r!V^MXQ^e+*n5~Lp9!B+#y3#f8J^5!iC@3Y@P`;FoUH{G*pj*q7MVV)29+j z>BC`a|1@U_v%%o9VH_HsSnM`jZ-&CDvbiqDg)tQEnV>b%Ptm)T|1?TrpIl)Y$LnG_ zzKi5j2Fx^K^PG1=*?GhK;$(UCF-tM~^=Z*+Wp{FSuy7iHt9#4n(sUuHK??@v+6*|10Csdnyg9hAsC5_OrSL;jVkLlf zHXIPukLqbhs~-*oa^gqgvtpgTk_7GypwH><53riYYL*M=Q@F-yEPLqQ&1Sc zZB%w}T~RO|#jFjMWcKMZccxm-SL)s_ig?OC?y_~gLFj{n8D$J_Kw%{r0oB8?@dWzn zB528d-wUBQzrrSSLq?fR!K%59Zv9J4yCQhhDGwhptpA5O5U?Hjqt>8nOD zi{)0CI|&Gu%zunGI*XFZh(ix)q${jT8wnnzbBMPYVJc4HX*9d^mz|21$=R$J$(y7V zo0dxdbX3N#=F$zjstTf*t8vL)2*{XH!+<2IJ1VVFa67|{?LP&P41h$2i2;?N~RA30LV`BsUcj zfO9#Pg1$t}7zpv#&)8`mis3~o+P(DxOMgz-V*(?wWaxi?R=NhtW}<#^Z?(BhSwyar zG|A#Q7wh4OfK<|DAcl9THc-W4*>J4nTevsD%dkj`U~wSUCh15?_N@uMdF^Kw+{agk zJ`im^wDqj`Ev)W3k3stasP`88-M0ZBs7;B6{-tSm3>I@_e-QfT?7|n0D~0RRqDb^G zyHb=is;IwuQ&ITzL4KsP@Z`b$d%B0Wuhioo1CWttW8yhsER1ZUZzA{F*K=wmi-sb#Ju+j z-l@In^IKnb{bQG}Ps>+Vu_W#grNKNGto+yjA)?>0?~X`4I3T@5G1)RqGUZuP^NJCq&^HykuYtMDD8qq+l8RcZNJsvN(10{ zQ1$XcGt}QH-U^WU!-wRR1d--{B$%vY{JLWIV%P4-KQuxxDeJaF#{eu&&r!3Qu{w}0f--8^H|KwE>)ORrcR+2Qf zb})DRcH>k0zWK8@{RX}NYvTF;E~phK{+F;MkIP$)T$93Ba2R2TvKc>`D??#mv9wg$ zd~|-`Qx5LwwsZ2hb*Rt4S9dsF%Cny5<1fscy~)d;0m2r$f=83<->c~!GNyb!U)PA; zq^!`@@)UaG)Ew(9V?5ZBq#c%dCWZrplmuM`o~TyHjAIMh0*#1{B>K4po-dx$Tk-Cq z=WZDkP5x2W&Os`N8KiYHRH#UY*n|nvd(U>yO=MFI-2BEp?x@=N<~CbLJBf6P)}vLS?xJXYJ2^<3KJUdrwKnJnTp{ zjIi|R=L7rn9b*D#Xxr4*R<3T5AuOS+#U8hNlfo&^9JO{VbH!v9^JbK=TCGR-5EWR@ zN8T-_I|&@A}(hKeL4_*eb!1G8p~&_Im8|wc>Cdir+gg90n1dw?QaXcx6Op_W1r=axRw>4;rM*UOpT#Eb9xU1IiWo@h?|5uP zka>-XW0Ikp@dIe;MN8B01a7+5V@h3WN{J=HJ*pe0uwQ3S&MyWFni47X32Q7SyCTNQ z+sR!_9IZa5!>f&V$`q!%H8ci!a|RMx5}5MA_kr+bhtQy{-^)(hCVa@I!^TV4RBi zAFa!Nsi3y37I5EK;0cqu|9MRj<^r&h1lF}u0KpKQD^5Y+LvFEwM zLU@@v4_Na#Axy6tn3P%sD^5P#<7F;sd$f4a7LBMk zGU^RZHBcxSA%kCx*eH&wgA?Qwazm8>9SCSz_!;MqY-QX<1@p$*T8lc?@`ikEqJ>#w zcG``^CoFMAhdEXT9qt47g0IZkaU)4R7wkGs^Ax}usqJ5HfDYAV$!=6?>J6+Ha1I<5 z|6=9soU4>E))tW$<#>F ziZ$6>KJf0bPfbx_)7-}tMINlc=}|H+$uX)mhC6-Hz+XZxsKd^b?RFB6et}O#+>Wmw9Ec9) z{q}XFWp{3@qmyK*Jvzpyqv57LIR;hPXKsrh{G?&dRjF%Zt5&m20Ll?OyfUYC3WRn{cgQ?^V~UAv+5 z&_m#&nIwffgX1*Z2#5^Kl4DbE#NrD&Hi4|7SPqZ}(>_+JMz=s|k77aEL}<=0Zfb)a z%F(*L3zCA<=xO)2U3B|pcTqDbBoFp>QyAEU(jMu8(jLA61-H!ucI804+B!$E^cQQa z)_ERrW3g!B9iLb3nn3dlkvD7KsY?sRvls3QC0qPi>o<)GHx%4Xb$5a3GBTJ(k@`e@ z$RUa^%S15^1oLEmA=sayrP5;9qtf!Z1*?e$ORVPsXpL{jL<6E)0sj&swP3}NPmR%FM?O>SQgN5XfHE< zo(4#Cv11(%Nnw_{_Ro}r6=gKd{k?NebJ~<~Kv0r(r0qe4n3LFx$5%x(BKvrz$m?LG zjLIc;hbj0FMdb9aH9Lpsof#yG$(0sG2%RL;d(n>;#jb!R_+dad+K;Ccw!|RY?uS(a zj~?=&M!4C(5LnlH6k%aYvz@7?xRa^2gml%vn&eKl$R_lJ+e|xsNfXzr#xuh(>`}9g zLHSyiFwK^-p!;p$yt7$F|3*IfO3Mlu9e>Dpx8O`37?fA`cj`C0B-m9uRhJjs^mRp# zWB;Aj6|G^1V6`jg7#7V9UFvnB4((nIwG?k%c7h`?0tS8J3Bn0t#pb#SA}N-|45$-j z$R>%7cc2ebAClXc(&0UtHX<>pd)akR3Kx_cK+n<}FhzmTx!8e9^u2e4%x{>T6pQ`6 zO182bh$-W5A3^wos0SV_TgPmF4WUP-+D25KjbC{y_6W_9I2_vNKwU(^qSdn&>^=*t z&uvp*@c8#2*paD!ZMCi3;K{Na;I4Q35zw$YrW5U@Kk~)&rw;G?d7Q&c9|x<Hg|CNMsxovmfth*|E*GHezPTWa^Hd^F4!B3sF;)? z(NaPyAhocu1jUe(!5Cy|dh|W2=!@fNmuNOzxi^tE_jAtzNJ0JR-avc_H|ve#KO}#S z#a(8secu|^Tx553d4r@3#6^MHbH)vmiBpn0X^29xEv!Vuh1n(Sr5I0V&`jA2;WS|Y zbf0e}X|)wA-Pf5gBZ>r4YX3Mav1kKY(ulAJ0Q*jB)YhviHK)w!TJsi3^dMa$L@^{` z_De`fF4;M87vM3Ph9SzCoCi$#Fsd38u!^0#*sPful^p5oI(xGU?yeYjn;Hq1!wzFk zG&2w}W3`AX4bxoVm03y>ts{KaDf!}b&7$(P4KAMP=vK5?1In^-YYNtx1f#}+2QK@h zeSeAI@E6Z8a?)>sZ`fbq9_snl6LCu6g>o)rO;ijp3|$vig+4t} zylEo7$SEW<_U+qgVcaVhk+4k+C9THI5V10qV*dOV6pPtAI$)QN{!JRBKh-D zk2^{j@bZ}yqW?<#VVuI_27*cI-V~sJiqQv&m07+10XF+#ZnIJdr8t`9s_EE;T2V;B z4UnQUH9EdX%zwh-5&wflY#ve!IWt0UE-My3?L#^Bh%kcgP1q{&26eXLn zTkjJ*w+(|_>Pq0v8{%nX$QZbf)tbJaLY$03;MO=Ic-uqYUmUCuXD>J>o6BCRF=xa% z3R4SK9#t1!K4I_d>tZgE>&+kZ?Q}1qo4&h%U$GfY058s%*=!kac{0Z+4Hwm!)pFLR zJ+5*OpgWUrm0FPI2ib4NPJ+Sk07j(`diti^i#kh&f}i>P4~|d?RFb#!JN)~D@)beox}bw?4VCf^y*`2{4`-@%SFTry2h z>9VBc9#JxEs1+0i2^LR@B1J`B9Ac=#FW=(?2;5;#U$0E0UNag_!jY$&2diQk_n)bT zl5Me_SUvqUjwCqmVcyb`igygB_4YUB*m$h5oeKv3uIF0sk}~es!{D>4r%PC*F~FN3owq5e0|YeUTSG#Vq%&Gk7uwW z0lDo#_wvflqHeRm*}l?}o;EILszBt|EW*zNPmq#?4A+&i0xx^?9obLyY4xx=Y9&^G;xYXYPxG)DOpPg!i_Ccl#3L}6xAAZzNhPK1XaC_~ z!A|mlo?Be*8Nn=a+FhgpOj@G7yYs(Qk(8&|h@_>w8Y^r&5nCqe0V60rRz?b5%J;GYeBqSAjo|K692GxD4` zRZyM2FdI+-jK2}WAZTZ()w_)V{n5tEb@>+JYluDozCb$fA4H)$bzg(Ux{*hXurjO^ zwAxc+UXu=&JV*E59}h3kzQPG4M)X8E*}#_&}w*KEgtX)cU{vm9b$atHa;s>| z+L6&cn8xUL*OSjx4YGjf6{Eq+Q3{!ZyhrL&^6Vz@jGbI%cAM9GkmFlamTbcQGvOlL zmJ?(FI)c86=JEs|*;?h~o)88>12nXlpMR4@yh%qdwFNpct;vMlc=;{FSo*apJ;p}! zAX~t;3tb~VuP|ZW;z$=IHf->F@Ml)&-&Bnb{iQyE#;GZ@C$PzEf6~q}4D>9jic@mTO5x76ulDz@+XAcm35!VSu zT*Gs>;f0b2TNpjU_BjHZ&S6Sqk6V1370+!eppV2H+FY!q*n=GHQ!9Rn6MjY!Jc77A zG7Y!lFp8?TIHN!LXO?gCnsYM-gQxsm=Ek**VmZu7vnuufD7K~GIxfxbsQ@qv2T zPa`tvHB$fFCyZl>3oYg?_wW)C>^_iDOc^B7klnTOoytQH18WkOk)L2BSD0r%xgRSW zQS9elF^?O=_@|58zKLK;(f77l-Zzu}4{fXed2saq!5k#UZAoDBqYQS{sn@j@Vtp|$ zG%gnZ$U|9@u#w1@11Sjl8ze^Co=)7yS(}=;68a3~g;NDe_X^}yJj;~s8xq9ahQ5_r zxAlTMnep*)w1e(TG%tWsjo3RR;yVGPEO4V{Zp?=a_0R#=V^ioQu4YL=BO4r0$$XTX zZfnw#_$V}sDAIDrezGQ+h?q24St0QNug_?{s-pI(^jg`#JRxM1YBV;a@@JQvH8*>> zIJvku74E0NlXkYe_624>znU0J@L<-c=G#F3k4A_)*;ky!C(^uZfj%WB3-*{*B$?9+ zDm$WFp=0(xnt6`vDQV3Jl5f&R(Mp};;q8d3I%Kn>Kx=^;uSVCw0L=gw53%Bp==8Sw zxtx=cs!^-_+i{2OK`Q;913+AXc_&Z5$@z3<)So0CU3;JAv=H?@Zpi~riQ{z-zLtVL z!oF<}@IgJp)Iyz1zVJ42!SPHSkjYNS4%ulVVIXdRuiZ@5Mx8LJS}J#qD^Zi_xQ@>DKDr-_e#>5h3dtje*NcwH_h;i{Sx7}dkdpuW z(yUCjckQsagv*QGMSi9u1`Z|V^}Wjf7B@q%j2DQXyd0nOyqg%m{CK_lAoKlJ7#8M} z%IvR?Vh$6aDWK2W!=i?*<77q&B8O&3?zP(Cs@kapc)&p7En?J;t-TX9abGT#H?TW? ztO5(lPKRuC7fs}zwcUKbRh=7E8wzTsa#Z{a`WR}?UZ%!HohN}d&xJ=JQhpO1PI#>X zHkb>pW04pU%Bj_mf~U}1F1=wxdBZu1790>3Dm44bQ#F=T4V3&HlOLsGH)+AK$cHk6 zia$=$kog?)07HCL*PI6}DRhpM^*%I*kHM<#1Se+AQ!!xyhcy6j7`iDX7Z-2i73_n# zas*?7LkxS-XSqv;YBa zW_n*32D(HTYQ0$feV_Fru1ZxW0g&iwqixPX3=9t4o)o|kOo79V$?$uh?#8Q8e>4e)V6;_(x&ViUVxma+i25qea;d-oK7ouuDsB^ab{ zu1qjQ%`n56VtxBE#0qAzb7lph`Eb-}TYpXB!H-}3Ykqyp`otprp7{VEuW*^IR2n$Fb99*nAtqT&oOFIf z@w*6>YvOGw@Ja?Pp1=whZqydzx@9X4n^2!n83C5{C?G@|E?&$?p*g68)kNvUTJ)I6 z1Q|(#UuP6pj78GUxq11m-GSszc+)X{C2eo-?8ud9sB=3(D47v?`JAa{V(IF zPZQ_0AY*9M97>Jf<o%#O_%Wq}8>YM=q0|tGY+hlXcpE=Z4Od z`NT7Hu2hnvRoqOw@g1f=bv`+nba{GwA$Ak0INlqI1k<9!x_!sL()h?hEWoWrdU3w` zZ%%)VR+Bc@_v!C#koM1p-3v_^L6)_Ktj4HE>aUh%2XZE@JFMOn)J~c`_7VWNb9c-N z2b|SZMR4Z@E7j&q&9(6H3yjEu6HV7{2!1t0lgizD;mZ9$r(r7W5G$ky@w(T_dFnOD z*p#+z$@pKE+>o@%eT(2-p_C}wbQ5s(%Sn_{$HDN@MB+Ev?t@3dPy`%TZ!z}AThZSu zN<1i$siJhXFdjV zP*y|V<`V8t=h#XTRUR~5`c`Z9^-`*BZf?WAehGdg)E2Je)hqFa!k{V(u+(hTf^Yq& zoruUh2(^3pe)2{bvt4&4Y9CY3js)PUHtd4rVG57}uFJL)D(JfSIo^{P=7liFXG zq5yqgof0V8paQcP!gy+;^pp-DA5pj=gbMN0eW=-eY+N8~y+G>t+x}oa!5r>tW$xhI zPQSv=pi;~653Gvf6~*JcQ%t1xOrH2l3Zy@8AoJ+wz@daW@m7?%LXkr!bw9GY@ns3e zSfuWF_gkWnesv?s3I`@}NgE2xwgs&rj?kH-FEy82=O8`+szN ziHch`vvS`zNfap14!&#i9H@wF7}yIPm=UB%(o(}F{wsZ(wA0nJ2aD^@B41>>o-_U6 zUqD~vdo48S8~FTb^+%#zcbQiiYoDKYcj&$#^;Smmb+Ljp(L=1Kt_J!;0s%1|JK}Wi z;={~oL!foo5n8=}rs6MmUW~R&;SIJO3TL4Ky?kh+b2rT9B1Jl4>#Uh-Bec z`Hsp<==#UEW6pGPhNk8H!!DUQR~#F9jEMI6T*OWfN^Ze&X(4nV$wa8QUJ>oTkruH# zm~O<`J7Wxseo@FqaZMl#Y(mrFW9AHM9Kb|XBMqaZ2a)DvJgYipkDD_VUF_PKd~dT7 z#02}bBfPn9a!X!O#83=lbJSK#E}K&yx-HI#T6ua)6o0{|={*HFusCkHzs|Fn&|C3H zBck1cmfcWVUN&i>X$YU^Sn6k2H;r3zuXbJFz)r5~3$d$tUj(l1?o={MM){kjgqXRO zc5R*#{;V7AQh|G|)jLM@wGAK&rm2~@{Pewv#06pHbKn#wL0P6F1!^qw9g&cW3Z=9} zj)POhOlwsh@eF=>z?#sIs*C-Nl(yU!#DaiaxhEs#iJqQ8w%(?+6lU02MYSeDkr!B- zPjMv+on6OLXgGnAtl(ao>|X2Y8*Hb}GRW5}-IzXnoo-d0!m4Vy$GS!XOLy>3_+UGs z2D|YcQx@M#M|}TDOetGi{9lGo9m-=0-^+nKE^*?$^uHkxZh}I{#UTQd;X!L+W@jm( zDg@N4+lUqI92o_rNk{3P>1gxAL=&O;x)ZT=q1mk0kLlE$WeWuY_$0`0jY-Kkt zP*|m3AF}Ubd=`<>(Xg0har*_@x2YH}bn0Wk*OZz3*e5;Zc;2uBdnl8?&XjupbkOeNZsNh6pvsq_ydmJI+*z**{I{0K)-;p1~k8cpJXL$^t!-`E}=*4G^-E8>H!LjTPxSx zcF+cS`ommfKMhNSbas^@YbTpH1*RFrBuATUR zt{oFWSk^$xU&kbFQ;MCX22RAN5F6eq9UfR$ut`Jw--p2YX)A*J69m^!oYfj2y7NYcH6&r+0~_sH^c^nzeN1AU4Ga7=FlR{S|Mm~MpzY0$Z+p2W(a={b-pR9EO1Rs zB%KY|@wLcAA@)KXi!d2_BxrkhDn`DT1=Dec}V!okd{$+wK z4E{n8R*xKyci1(CnNdhf$Dp2(Jpof0-0%-38X=Dd9PQgT+w%Lshx9+loPS~MOm%ZT zt%2B2iL_KU_ita%N>xjB!#71_3=3c}o zgeW~^U_ZTJQ2!PqXulQd=3b=XOQhwATK$y(9$#1jOQ4}4?~l#&nek)H(04f(Sr=s| zWv7Lu1=%WGk4FSw^;;!8&YPM)pQDCY9DhU`hMty1@sq1=Tj7bFsOOBZOFlpR`W>-J$-(kezWJj;`?x-v>ev{*8V z8p|KXJPV$HyQr1A(9LVrM47u-XpcrIyO`yWvx1pVYc&?154aneRpLqgx)EMvRaa#|9?Wwqs2+W8n5~79G z(}iCiLk;?enn}ew`HzhG+tu+Ru@T+K5juvZN)wY;x6HjvqD!&!)$$;1VAh~7fg0K| zEha#aN=Yv|3^~YFH}cc38ovVb%L|g@9W6fo(JtT6$fa?zf@Ct88e}m?i)b*Jgc{fl zExfdvw-BYDmH6>(4QMt#p0;FUIQqkhD}aH?a7)_%JtA~soqj{ppP_82yi9kaxuK>~ ze_)Zt>1?q=ZH*kF{1iq9sr*tVuy=u>Zev}!gEZx@O6-fjyu9X00gpIl-fS_pzjpqJ z1yqBmf9NF!jaF<+YxgH6oXBdK)sH(>VZ)1siyA$P<#KDt;8NT*l_0{xit~5j1P)FN zI8hhYKhQ)i z37^aP13B~u65?sg+_@2Kr^iWHN=U;EDSZ@2W2!5ALhGNWXnFBY%7W?1 z=HI9JzQ-pLKZDYTv<0-lt|6c-RwhxZ)mU2Os{bsX_i^@*fKUj8*aDO5pks=qn3Dv6 zwggpKLuyRCTVPwmw1r}B#AS}?X7b837UlXwp~E2|PJw2SGVueL7){Y&z!jL!XN=0i zU^Eig`S2`{+gU$68aRdWx?BZ{sU_f=8sn~>s~M?GU~`fH5kCc; z8ICp+INM3(3{#k32RZdv6b9MQYdZXNuk7ed8;G?S2nT+NZBG=Tar^KFl2SvhW$bGW#kdWL-I)s_IqVnCDDM9fm8g;P;8 z7t4yZn3^*NQfx7SwmkzP$=fwdC}bafQSEF@pd&P8@H#`swGy_rz;Z?Ty5mkS%>m#% zp_!m9e<()sfKiY(nF<1zBz&&`ZlJf6QLvLhl`_``%RW&{+O>Xhp;lwSsyRqGf=RWd zpftiR`={2(siiPAS|p}@q=NhVc0ELprt%=fMXO3B)4ryC2LT(o=sLM7hJC!}T1@)E zA3^J$3&1*M6Xq>03FX`R&w*NkrZE?FwU+Muut;>qNhj@bX17ZJxnOlPSZ=Zeiz~T_ zOu#yc3t6ONHB;?|r4w+pI)~KGN;HOGC)txxiUN8#mexj+W(cz%9a4sx|IRG=}ia zuEBuba3AHsV2feqw-3MvuL`I+2|`Ud4~7ZkN=JZ;L20|Oxna5vx1qbIh#k2O4$RQF zo`tL()zxaqibg^GbB+BS5#U{@K;WWQj~GcB1zb}zJkPwH|5hZ9iH2308!>_;%msji zJHSL~s)YHBR=Koa1mLEOHos*`gp=s8KA-C zu0aE+W!#iJ*0xqKm3A`fUGy#O+X+5W36myS>Uh2!R*s$aCU^`K&KKLCCDkejX2p=5 z%o7-fl03x`gaSNyr?3_JLv?2RLS3F*8ub>Jd@^Cc17)v8vYEK4aqo?OS@W9mt%ITJ z9=S2%R8M){CugT@k~~0x`}Vl!svYqX=E)c_oU6o}#Hb^%G1l3BudxA{F*tbjG;W_>=xV73pKY53v%>I)@D36I_@&p$h|Aw zonQS`07z_F#@T-%@-Tb|)7;;anoD_WH>9ewFy(ZcEOM$#Y)8>qi7rCnsH9GO-_7zF zu*C87{Df1P4TEOsnzZ@H%&lvV(3V@;Q!%+OYRp`g05PjY^gL$^$-t0Y>H*CDDs?FZly*oZ&dxvsxaUWF!{em4{A>n@vpXg$dwvt@_rgmHF z-MER`ABa8R-t_H*kv>}CzOpz;!>p^^9ztHMsHL|SRnS<-y5Z*r(_}c4=fXF`l^-i}>e7v!qs_jv zqvWhX^F=2sDNWA9c@P0?lUlr6ecrTKM%pNQ^?*Lq?p-0~?_j50xV%^(+H>sMul#Tw zeciF*1=?a7cI(}352%>LO96pD+?9!fNyl^9v3^v&Y4L)mNGK0FN43&Xf8jUlxW1Bw zyiu2;qW-aGNhs=zbuoxnxiwZ3{PFZM#Kw)9H@(hgX23h(`Wm~m4&TvoZoYp{plb^> z_#?vXcxd>r7K+1HKJvhed>gtK`TAbJUazUWQY6T~t2af%#<+Veyr%7-#*A#@&*;@g58{i|E%6yC_InGXCOd{L0;$)z#?n7M`re zh!kO{6=>7I?*}czyF7_frt#)s1CFJ_XE&VrDA?Dp3XbvF{qsEJgb&OLSNz_5g?HpK z9)8rsr4JN!Af3G9!#Qn(6zaUDqLN(g2g8*M)Djap?WMK9NKlkC)E2|-g|#-rp%!Gz zAHd%`iq|81efi93m3yTBw3g0j#;Yb2X{mhRAI?&KDmbGqou(2xiRNb^sV}%%Wu0?< z?($L>(#BO*)^)rSgyNRni$i`R4v;GhlCZ8$@e^ROX(p=2_v6Y!%^As zu022)fHdv_-~Yu_H6WVPLpHQx!W%^6j)cBhS`O3QBW#x(eX54d&I22op(N59b*&$v zFiSRY6rOc^(dgSV1>a7-5C;(5S5MvKcM2Jm-LD9TGqDpP097%52V+0>Xqq!! zq4e3vj53SE6i8J`XcQB|MZPP8j;PAOnpGnllH6#Ku~vS42xP*Nz@~y%db7Xi8s09P z1)e%8ys6&M8D=Dt6&t`iKG_4X=!kgRQoh%Z`dc&mlOUqXk-k`jKv9@(a^2-Upw>?< zt5*^DV~6Zedbec4NVl($2T{&b)zA@b#dUyd>`2JC0=xa_fIm8{5um zr-!ApXZhC8@=vC2WyxO|!@0Km)h8ep*`^he92$@YwP>VcdoS5OC^s38e#7RPsg4j+ zbVGG}WRSET&ZfrcR(x~k8n1rTP%CnfUNKUonD$P?FtNFF#cn!wEIab-;jU=B1dHK@ z(;(yAQJ`O$sMn>h;pf^8{JISW%d+@v6@CnXh9n5TXGC}?FI9i-D0OMaIg&mAg=0Kn zNJ7oz5*ReJukD55fUsMuaP+H4tDN&V9zfqF@ zr=#ecUk9wu{0;!+gl;3Bw=Vn^)z$ahVhhw)io!na&9}LmWurLb0zubxK=UEnU*{5P z+SP}&*(iBKSO4{alBHaY^)5Q=mZ+2OwIooJ7*Q5XJ+2|q`9#f?6myq!&oz?klihLq z4C)$XP!BNS0G_Z1&TM>?Jk{S~{F3n83ioli=IO6f%wkvCl(RFFw~j0tb{GvXTx>*sB0McY0s&SNvj4+^h`9nJ_wM>F!Uc>X}9PifQekn0sKI2SAJP!a4h z5cyGTuCj3ZBM^&{dRelIlT^9zcfaAuL5Y~bl!ppSf`wZbK$z#6U~rdclk``e+!qhe z6Qspo*%<)eu6?C;Bp<^VuW6JI|Ncvyn+LlSl;Mp22Bl7ARQ0Xc24%29(ZrdsIPw&-=yHQ7_Vle|5h>AST0 zUGX2Zk34vp?U~IHT|;$U86T+UUHl_NE4m|}>E~6q``7hccCaT^#y+?wD##Q%HwPd8 zV3x4L4|qqu`B$4(LXqDJngNy-{&@aFBvVsywt@X^}iH7P%>bR?ciC$I^U-4Foa`YKI^qDyGK7k%E%c_P=yzAi`YnxGA%DeNd++j3*h^ z=rn>oBd0|~lZ<6YvmkKY*ZJlJ;Im0tqgWu&E92eqt;+NYdxx`eS(4Hw_Jb5|yVvBg z*tbdY^!AN;luEyN4VRhS@-_DC{({ziH{&Z}iGElSV~qvT>L-8G%+yEL zX#MFOhj{InyKG=mvW-<1B@c-}x$vA(nU?>S>0*eN#!SLzQ)Ex7fvQ)S4D<8|I#N$3 zT5Ei`Z?cxBODHX8(Xp73v`IsAYC@9b;t}z0wxVuQSY1J^GRwDPN@qbM-ZF48T$GZ< z8WU+;Pqo?{ghI-KZ-i*ydXu`Ep0Xw^McH_KE9J0S7G;x8Fe`DVG?j3Pv=0YzJ}yZR z%2=oqHiUjvuk0~Ca>Kol4CFi0_xQT~;_F?=u+!kIDl-9g`#ZNZ9HCy17Ga1v^Jv9# z{T4Kb1-AzUxq*MutfOWWZgD*HnFfyYg0&e9f(5tZ>krPF6{VikNeHoc{linPPt#Si z&*g>(c54V8rT_AX!J&bNm-!umPvOR}vDai#`CX___J#=zeB*{4<&2WpaDncZsOkp* zsg<%@@rbrMkR_ux9?LsQxzoBa1s%$BBn6vk#{&&zUwcfzeCBJUwFYSF$08qDsB;gWQN*g!p8pxjofWbqNSZOEKOaTx@+* zwdt5*Q47@EOZ~EZL9s?1o?A%9TJT=Ob_13yyugvPg*e&ZU(r6^k4=2+D-@n=Hv5vu zSXG|hM(>h9^zn=eQ=$6`JO&70&2|%V5Lsx>)(%#;pcOfu>*nk_3HB_BNaH$`jM<^S zcSftDU1?nL;jy)+sfonQN}(}gUW?d_ikr*3=^{G)=tjBtEPe>TO|0ddVB zTklrSHiW+!#26frPXQQ(YN8DG$PZo?(po(QUCCf_OJC`pw*uey00%gmH!`WJkrKXj2!#6?`T25mTu9OJp2L8z3! z=arrL$ZqxuE{%yV)14Kd>k}j7pxZ6#$Dz8$@WV5p8kTqN<-7W)Q7Gt2{KoOPK_tZ| zf2WG~O5@{qPI+W<4f_;reuFVdO^5`ADC1!JQE|N`s3cq@(0WB!n0uh@*c{=LAd;~} zyGK@hbF-Oo+!nN)@i*O(`@FA#u?o=~e{`4O#5}z&=UkU*50fOrzi11D^&FOqe>wii z?*k+2|EcUs;Gx{!@KBT~>PAwLrIDT7Th=Utu?~?np@t^gFs?zgX=D${RwOY^WGh-+ z+#4$066ISh8eYW#FXWp~S`<*%O^ZuItL1Tyqt8#tZ zY120E;^VG`!lZn&3sPd$RkdHpU#|w+bYV)pJC|SH9g%|5IkxVTQcBA4CL0}$&}ef@ zW^Vtj%M;;_1xxP9x#ex17&4N*{ksO*_4O}xYu(p*JkL#yr}@7b)t5X?%CY<+s5_MJ zuiqt+N_;A(_)%lumoyRFixWa-M7qK_9s6<1X?JDa9fP!+_6u~~M$5L=ipB=7(j#f< zZ34J%=bs549%~_mA(|={uZNs_0?o7;-LBP(ZRnkd{-^|2|=4vUTmtByHL8 zEph`(LSEzQj68a+`d$V<45J7cyv^#|^|%fD#si1Nx!4NW*`l*{->HEWNh6-|g>-=r zXmQ|-i}Ku$ndUeHQ^&ieT!Lf}vf6GaqW9$DJ2NWrqwPY%%4nip$@vK$nRp*_C-v<| zuKz~ZyN&<%!NS26&x?jhy+@awJipMQ-8(X4#Ae5??U<1QMt1l9R=w9fAnEF}NYu$2 z>6}Vkc zIb*A?G*z8^IvibmBKn_u^5&T_1oey0gZS2~obf(#xk=erZGTEdQnt3DMGM+0oPwss zj5zXD;(oWhB_T@~Ig#9@v)AKtXu3>Inmgf@A|-lD-1U>cNyl3h?ADD9)GG4}zUGPk zZzaXe!~Kf?<~@$G?Uql3t8jy9{2!doq4=J}j9ktTxss{p6!9UdjyDERlA*xZ!=Q)KDs5O)phz>Vq3BNGoM(H|=1*Q4$^2fTZw z(%nq1P|5Rt81}SYJpEEzMPl5VJsV5&4e)ZWKDyoZ>1EwpkHx-AQVQc8%JMz;{H~p{=FXV>jIxvm4X*qv52e?Y-f%DJ zxEA165GikEASQ^fH6K#d!Tpu2HP{sFs%E=e$gYd$aj$+xue6N+Wc(rAz~wUsk2`(b z8Kvmyz%bKQxpP}~baG-rwYcYCvkHOi zlkR<=>ZBTU*8RF_d#Bl@zZsRIhx<%~Z@Z=ik z>adw3!DK(8R|q$vy{FTxw%#xliD~6qXmY^7_9kthVPTF~Xy1CfBqbU~?1QmxmU=+k z(ggxvEuA;0e&+ci-zQR{-f7aO{O(Pz_OsEjLh_K>MbvoZ4nxtk5u{g@nPv)cgW_R} z9}EA4K4@z0?7ue}Z(o~R(X&FjejUI2g~08PH1E4w>9o{)S(?1>Z0XMvTb|;&EuyOE zGvWNpYX)Nv<8|a^;1>bh#&znEcl-r!T#pn= z4$?Yudha6F%4b>*8@=BdtXXY4N+`U4Dmx$}>HeVJk-QdTG@t!tVT#0(LeV0gvqyyw z2sEp^9eY0N`u10Tm4n8No&A=)IeEC|gnmEXoNSzu!1<4R<%-9kY_8~5Ej?zRegMn78wuMs#;i&eUA0Zk_RXQ3b&TT} z;SCI=7-FUB@*&;8|n>(_g^HGf3@QODE3LpmX~ELnymQm{Sx9xrKS zK29p~?v@R$0=v6Dr5aW>-!{+h@?Q58|Kz8{{W`%J+lDAdb&M5VHrX_mDY;1-JLnf)ezmPau$)1;=`-FU=-r-83tX=C`S#}GZufju zQ>sXNT0Ny=k@nc%cFnvA_i4SC)?_ORXHq8B4D%el1uPX`c~uG#S1M7C+*MMqLw78E zhY2dI8@+N^qrMI1+;TUda(vGqGSRyU{Fnm`aqrr7bz42c5xsOO-~oZpkzorD1g}Y<6rk&3>PsSGy}W?MtqFky@A(X# zIuNZK0cK?^=;PUAu>j0#HtjbHCV*6?jzA&OoE$*Jlga*}LF`SF?WLhv1O|zqC<>*> zYB;#lsYKx0&kH@BFpW8n*yDcc6?;_zaJs<-jPSkCsSX-!aV=P5kUgF@Nu<{a%#K*F z134Q{9|YX7X(v$62_cY3^G%t~rD>Q0z@)1|zs)vjJ6Jq9;7#Ki`w+eS**En?7;n&7 zu==V3T&eFboN3ZiMx3D8qYc;VjFUk_H-WWCau(VFXSQf~viH0L$gwD$UfFHqNcgN`x}M+YQ6RnN<+@t>JUp#)9YOkqst-Ga?{FsDpEeX0(5v{0J~SEbWiL zXC2}M4?UH@u&|;%0y`eb33ldo4~z-x8zY!oVmV=c+f$m?RfDC35mdQ2E>Pze7KWP- z>!Bh<&57I+O_^s}9Tg^k)h7{xx@0a0IA~GAOt2yy!X%Q$1rt~LbTB6@Du!_0%HV>N zlf)QI1&gvERKwso23mJ!Ou6ZS#zCS5W`gxE5T>C#E|{i<1D35C222I33?Njaz`On7 zi<+VWFP6D{e-{yiN#M|Jgk<44u1TiMI78S5W`Sdb5f+{zu34s{CfWN7a3Cf^@L%!& zN$?|!!9j2c)j$~+R6n#891w-z8(!oBpL2K=+%a$r2|~8-(vQj5_XT`<0Ksf;oP+tz z9CObS!0m)Tgg`K#xBM8B(|Z)Wb&DYL{WTYv`;A=q6~Nnx2+!lTIXtj8J7dZE!P_{z z#f8w6F}^!?^KE#+ZDv+xd5O&3EmomZzsv?>E-~ygGum45fk!SBN&|eo1rKw^?aZJ4 E2O(~oYXATM literal 53636 zcmafaW0a=B^559DjdyHo$F^PVt zzd|cWgMz^T0YO0lQ8%TE1O06v|NZl~LH{LLQ58WtNjWhFP#}eWVO&eiP!jmdp!%24 z{&z-MK{-h=QDqf+S+Pgi=_wg$I{F28X*%lJ>A7Yl#$}fMhymMu?R9TEB?#6@|Q^e^AHhxcRL$z1gsc`-Q`3j+eYAd<4@z^{+?JM8bmu zSVlrVZ5-)SzLn&LU9GhXYG{{I+u(+6ES+tAtQUanYC0^6kWkks8cG;C&r1KGs)Cq}WZSd3k1c?lkzwLySimkP5z)T2Ox3pNs;PdQ=8JPDkT7#0L!cV? zzn${PZs;o7UjcCVd&DCDpFJvjI=h(KDmdByJuDYXQ|G@u4^Kf?7YkE67fWM97kj6F z973tGtv!k$k{<>jd~D&c(x5hVbJa`bILdy(00%lY5}HZ2N>)a|))3UZ&fUa5@uB`H z+LrYm@~t?g`9~@dFzW5l>=p0hG%rv0>(S}jEzqQg6-jImG%Pr%HPtqIV_Ym6yRydW z4L+)NhcyYp*g#vLH{1lK-hQQSScfvNiNx|?nSn-?cc8}-9~Z_0oxlr~(b^EiD`Mx< zlOLK)MH?nl4dD|hx!jBCIku-lI(&v~bCU#!L7d0{)h z;k4y^X+=#XarKzK*)lv0d6?kE1< zmCG^yDYrSwrKIn04tG)>>10%+ zEKzs$S*Zrl+GeE55f)QjY$ zD5hi~J17k;4VSF_`{lPFwf^Qroqg%kqM+Pdn%h#oOPIsOIwu?JR717atg~!)*CgXk zERAW?c}(66rnI+LqM^l7BW|9dH~5g1(_w$;+AAzSYlqop*=u5}=g^e0xjlWy0cUIT7{Fs2Xqx*8% zW71JB%hk%aV-wjNE0*$;E-S9hRx5|`L2JXxz4TX3nf8fMAn|523ssV;2&145zh{$V z#4lt)vL2%DCZUgDSq>)ei2I`*aeNXHXL1TB zC8I4!uq=YYVjAdcCjcf4XgK2_$y5mgsCdcn2U!VPljXHco>+%`)6W=gzJk0$e%m$xWUCs&Ju-nUJjyQ04QF_moED2(y6q4l+~fo845xm zE5Esx?~o#$;rzpCUk2^2$c3EBRNY?wO(F3Pb+<;qfq;JhMFuSYSxiMejBQ+l8(C-- zz?Xufw@7{qvh$;QM0*9tiO$nW(L>83egxc=1@=9Z3)G^+*JX-z92F((wYiK>f;6 zkc&L6k4Ua~FFp`x7EF;ef{hb*n8kx#LU|6{5n=A55R4Ik#sX{-nuQ}m7e<{pXq~8#$`~6| zi{+MIgsBRR-o{>)CE8t0Bq$|SF`M0$$7-{JqwFI1)M^!GMwq5RAWMP!o6G~%EG>$S zYDS?ux;VHhRSm*b^^JukYPVb?t0O%^&s(E7Rb#TnsWGS2#FdTRj_SR~YGjkaRFDI=d)+bw$rD;_!7&P2WEmn zIqdERAbL&7`iA^d?8thJ{(=)v>DgTF7rK-rck({PpYY$7uNY$9-Z< ze4=??I#p;$*+-Tm!q8z}k^%-gTm59^3$*ByyroqUe02Dne4?Fc%JlO>*f9Zj{++!^ zBz0FxuS&7X52o6-^CYq>jkXa?EEIfh?xdBPAkgpWpb9Tam^SXoFb3IRfLwanWfskJ zIbfU-rJ1zPmOV)|%;&NSWIEbbwj}5DIuN}!m7v4($I{Rh@<~-sK{fT|Wh?<|;)-Z; zwP{t@{uTsmnO@5ZY82lzwl4jeZ*zsZ7w%a+VtQXkigW$zN$QZnKw4F`RG`=@eWowO zFJ6RC4e>Y7Nu*J?E1*4*U0x^>GK$>O1S~gkA)`wU2isq^0nDb`);Q(FY<8V6^2R%= zDY}j+?mSj{bz2>F;^6S=OLqiHBy~7h4VVscgR#GILP!zkn68S^c04ZL3e$lnSU_(F zZm3e`1~?eu1>ys#R6>Gu$`rWZJG&#dsZ?^)4)v(?{NPt+_^Ak>Ap6828Cv^B84fa4 z_`l$0SSqkBU}`f*H#<14a)khT1Z5Z8;=ga^45{l8y*m|3Z60vgb^3TnuUKaa+zP;m zS`za@C#Y;-LOm&pW||G!wzr+}T~Q9v4U4ufu*fLJC=PajN?zN=?v^8TY}wrEeUygdgwr z7szml+(Bar;w*c^!5txLGKWZftqbZP`o;Kr1)zI}0Kb8yr?p6ZivtYL_KA<+9)XFE z=pLS5U&476PKY2aKEZh}%|Vb%!us(^qf)bKdF7x_v|Qz8lO7Ro>;#mxG0gqMaTudL zi2W!_#3@INslT}1DFJ`TsPvRBBGsODklX0`p-M6Mrgn~6&fF`kdj4K0I$<2Hp(YIA z)fFdgR&=qTl#sEFj6IHzEr1sYM6 zNfi!V!biByA&vAnZd;e_UfGg_={}Tj0MRt3SG%BQYnX$jndLG6>ssgIV{T3#=;RI% zE}b!9z#fek19#&nFgC->@!IJ*Fe8K$ZOLmg|6(g}ccsSBpc`)3;Ar8;3_k`FQ#N9&1tm>c|2mzG!!uWvelm zJj|oDZ6-m(^|dn3em(BF&3n12=hdtlb@%!vGuL*h`CXF?^=IHU%Q8;g8vABm=U!vX zT%Ma6gpKQC2c;@wH+A{)q+?dAuhetSxBDui+Z;S~6%oQq*IwSMu-UhMDy{pP z-#GB-a0`0+cJ%dZ7v0)3zfW$eV>w*mgU4Cma{P$DY3|w364n$B%cf()fZ;`VIiK_O zQ|q|(55+F$H(?opzr%r)BJLy6M&7Oq8KCsh`pA5^ohB@CDlMKoDVo5gO&{0k)R0b(UOfd>-(GZGeF}y?QI_T+GzdY$G{l!l% zHyToqa-x&X4;^(-56Lg$?(KYkgJn9W=w##)&CECqIxLe@+)2RhO*-Inpb7zd8txFG6mY8E?N8JP!kRt_7-&X{5P?$LAbafb$+hkA*_MfarZxf zXLpXmndnV3ubbXe*SYsx=eeuBKcDZI0bg&LL-a8f9>T(?VyrpC6;T{)Z{&|D5a`Aa zjP&lP)D)^YYWHbjYB6ArVs+4xvrUd1@f;;>*l zZH``*BxW+>Dd$be{`<&GN(w+m3B?~3Jjz}gB8^|!>pyZo;#0SOqWem%xeltYZ}KxOp&dS=bg|4 zY-^F~fv8v}u<7kvaZH`M$fBeltAglH@-SQres30fHC%9spF8Ld%4mjZJDeGNJR8+* zl&3Yo$|JYr2zi9deF2jzEC) zl+?io*GUGRp;^z+4?8gOFA>n;h%TJC#-st7#r&-JVeFM57P7rn{&k*z@+Y5 zc2sui8(gFATezp|Te|1-Q*e|Xi+__8bh$>%3|xNc2kAwTM!;;|KF6cS)X3SaO8^z8 zs5jV(s(4_NhWBSSJ}qUzjuYMKlkjbJS!7_)wwVsK^qDzHx1u*sC@C1ERqC#l%a zk>z>m@sZK{#GmsB_NkEM$$q@kBrgq%=NRBhL#hjDQHrI7(XPgFvP&~ZBJ@r58nLme zK4tD}Nz6xrbvbD6DaDC9E_82T{(WRQBpFc+Zb&W~jHf1MiBEqd57}Tpo8tOXj@LcF zwN8L-s}UO8%6piEtTrj@4bLH!mGpl5mH(UJR1r9bBOrSt0tSJDQ9oIjcW#elyMAxl7W^V(>8M~ss0^>OKvf{&oUG@uW{f^PtV#JDOx^APQKm& z{*Ysrz&ugt4PBUX@KERQbycxP%D+ApR%6jCx7%1RG2YpIa0~tqS6Xw6k#UN$b`^l6d$!I z*>%#Eg=n#VqWnW~MurJLK|hOQPTSy7G@29g@|g;mXC%MF1O7IAS8J^Q6D&Ra!h^+L&(IBYg2WWzZjT-rUsJMFh@E)g)YPW_)W9GF3 zMZz4RK;qcjpnat&J;|MShuPc4qAc)A| zVB?h~3TX+k#Cmry90=kdDoPYbhzs#z96}#M=Q0nC{`s{3ZLU)c(mqQQX;l~1$nf^c zFRQ~}0_!cM2;Pr6q_(>VqoW0;9=ZW)KSgV-c_-XdzEapeLySavTs5-PBsl-n3l;1jD z9^$^xR_QKDUYoeqva|O-+8@+e??(pRg@V|=WtkY!_IwTN~ z9Rd&##eWt_1w$7LL1$-ETciKFyHnNPjd9hHzgJh$J(D@3oYz}}jVNPjH!viX0g|Y9 zDD`Zjd6+o+dbAbUA( zEqA9mSoX5p|9sDVaRBFx_8)Ra4HD#xDB(fa4O8_J2`h#j17tSZOd3%}q8*176Y#ak zC?V8Ol<*X{Q?9j{Ys4Bc#sq!H;^HU$&F_`q2%`^=9DP9YV-A!ZeQ@#p=#ArloIgUH%Y-s>G!%V3aoXaY=f<UBrJTN+*8_lMX$yC=Vq+ zrjLn-pO%+VIvb~>k%`$^aJ1SevcPUo;V{CUqF>>+$c(MXxU12mxqyFAP>ki{5#;Q0 zx7Hh2zZdZzoxPY^YqI*Vgr)ip0xnpQJ+~R*UyFi9RbFd?<_l8GH@}gGmdB)~V7vHg z>Cjy78TQTDwh~+$u$|K3if-^4uY^|JQ+rLVX=u7~bLY29{lr>jWV7QCO5D0I>_1?; zx>*PxE4|wC?#;!#cK|6ivMzJ({k3bT_L3dHY#h7M!ChyTT`P#%3b=k}P(;QYTdrbe z+e{f@we?3$66%02q8p3;^th;9@y2vqt@LRz!DO(WMIk?#Pba85D!n=Ao$5NW0QVgS zoW)fa45>RkjU?H2SZ^#``zs6dG@QWj;MO4k6tIp8ZPminF`rY31dzv^e-3W`ZgN#7 z)N^%Rx?jX&?!5v`hb0-$22Fl&UBV?~cV*{hPG6%ml{k;m+a-D^XOF6DxPd$3;2VVY zT)E%m#ZrF=D=84$l}71DK3Vq^?N4``cdWn3 zqV=mX1(s`eCCj~#Nw4XMGW9tK>$?=cd$ule0Ir8UYzhi?%_u0S?c&j7)-~4LdolkgP^CUeE<2`3m)I^b ztV`K0k$OS^-GK0M0cNTLR22Y_eeT{<;G(+51Xx}b6f!kD&E4; z&Op8;?O<4D$t8PB4#=cWV9Q*i4U+8Bjlj!y4`j)^RNU#<5La6|fa4wLD!b6?RrBsF z@R8Nc^aO8ty7qzlOLRL|RUC-Bt-9>-g`2;@jfNhWAYciF{df9$n#a~28+x~@x0IWM zld=J%YjoKm%6Ea>iF){z#|~fo_w#=&&HRogJmXJDjCp&##oVvMn9iB~gyBlNO3B5f zXgp_1I~^`A0z_~oAa_YBbNZbDsnxLTy0@kkH!=(xt8|{$y<+|(wSZW7@)#|fs_?gU5-o%vpsQPRjIxq;AED^oG%4S%`WR}2(*!84Pe8Jw(snJ zq~#T7+m|w#acH1o%e<+f;!C|*&_!lL*^zRS`;E}AHh%cj1yR&3Grv&0I9k9v0*w8^ zXHEyRyCB`pDBRAxl;ockOh6$|7i$kzCBW$}wGUc|2bo3`x*7>B@eI=-7lKvI)P=gQ zf_GuA+36kQb$&{ZH)6o^x}wS}S^d&Xmftj%nIU=>&j@0?z8V3PLb1JXgHLq)^cTvB zFO6(yj1fl1Bap^}?hh<>j?Jv>RJdK{YpGjHxnY%d8x>A{k+(18J|R}%mAqq9Uzm8^Us#Ir_q^w9-S?W07YRD`w%D(n;|8N%_^RO`zp4 z@`zMAs>*x0keyE)$dJ8hR37_&MsSUMlGC*=7|wUehhKO)C85qoU}j>VVklO^TxK?! zO!RG~y4lv#W=Jr%B#sqc;HjhN={wx761vA3_$S>{j+r?{5=n3le|WLJ(2y_r>{)F_ z=v8Eo&xFR~wkw5v-{+9^JQukxf8*CXDWX*ZzjPVDc>S72uxAcY+(jtg3ns_5R zRYl2pz`B)h+e=|7SfiAAP;A zk0tR)3u1qy0{+?bQOa17SpBRZ5LRHz(TQ@L0%n5xJ21ri>^X420II1?5^FN3&bV?( zCeA)d9!3FAhep;p3?wLPs`>b5Cd}N!;}y`Hq3ppDs0+><{2ey0yq8o7m-4|oaMsWf zsLrG*aMh91drd-_QdX6t&I}t2!`-7$DCR`W2yoV%bcugue)@!SXM}fJOfG(bQQh++ zjAtF~zO#pFz})d8h)1=uhigDuFy`n*sbxZ$BA^Bt=Jdm}_KB6sCvY(T!MQnqO;TJs zVD{*F(FW=+v`6t^6{z<3-fx#|Ze~#h+ymBL^^GKS%Ve<)sP^<4*y_Y${06eD zH_n?Ani5Gs4&1z)UCL-uBvq(8)i!E@T_*0Sp5{Ddlpgke^_$gukJc_f9e=0Rfpta@ ze5~~aJBNK&OJSw!(rDRAHV0d+eW#1?PFbr==uG-$_fu8`!DWqQD~ef-Gx*ZmZx33_ zb0+I(0!hIK>r9_S5A*UwgRBKSd6!ieiYJHRigU@cogJ~FvJHY^DSysg)ac=7#wDBf zNLl!E$AiUMZC%%i5@g$WsN+sMSoUADKZ}-Pb`{7{S>3U%ry~?GVX!BDar2dJHLY|g zTJRo#Bs|u#8ke<3ohL2EFI*n6adobnYG?F3-#7eZZQO{#rmM8*PFycBR^UZKJWr(a z8cex$DPOx_PL^TO<%+f^L6#tdB8S^y#+fb|acQfD(9WgA+cb15L+LUdHKv)wE6={i zX^iY3N#U7QahohDP{g`IHS?D00eJC9DIx0V&nq!1T* z4$Bb?trvEG9JixrrNRKcjX)?KWR#Y(dh#re_<y*=5!J+-Wwb*D>jKXgr5L8_b6pvSAn3RIvI5oj!XF^m?otNA=t^dg z#V=L0@W)n?4Y@}49}YxQS=v5GsIF3%Cp#fFYm0Bm<}ey& zOfWB^vS8ye?n;%yD%NF8DvOpZqlB++#4KnUj>3%*S(c#yACIU>TyBG!GQl7{b8j#V z;lS})mrRtT!IRh2B-*T58%9;!X}W^mg;K&fb7?2#JH>JpCZV5jbDfOgOlc@wNLfHN z8O92GeBRjCP6Q9^Euw-*i&Wu=$>$;8Cktx52b{&Y^Ise-R1gTKRB9m0*Gze>$k?$N zua_0Hmbcj8qQy{ZyJ%`6v6F+yBGm>chZxCGpeL@os+v&5LON7;$tb~MQAbSZKG$k z8w`Mzn=cX4Hf~09q8_|3C7KnoM1^ZGU}#=vn1?1^Kc-eWv4x^T<|i9bCu;+lTQKr- zRwbRK!&XrWRoO7Kw!$zNQb#cJ1`iugR(f_vgmu!O)6tFH-0fOSBk6$^y+R07&&B!(V#ZV)CX42( zTC(jF&b@xu40fyb1=_2;Q|uPso&Gv9OSM1HR{iGPi@JUvmYM;rkv#JiJZ5-EFA%Lu zf;wAmbyclUM*D7>^nPatbGr%2aR5j55qSR$hR`c?d+z z`qko8Yn%vg)p=H`1o?=b9K0%Blx62gSy)q*8jWPyFmtA2a+E??&P~mT@cBdCsvFw4 zg{xaEyVZ|laq!sqN}mWq^*89$e6%sb6Thof;ml_G#Q6_0-zwf80?O}D0;La25A0C+ z3)w-xesp6?LlzF4V%yA9Ryl_Kq*wMk4eu&)Tqe#tmQJtwq`gI^7FXpToum5HP3@;N zpe4Y!wv5uMHUu`zbdtLys5)(l^C(hFKJ(T)z*PC>7f6ZRR1C#ao;R&_8&&a3)JLh* zOFKz5#F)hJqVAvcR#1)*AWPGmlEKw$sQd)YWdAs_W-ojA?Lm#wCd}uF0^X=?AA#ki zWG6oDQZJ5Tvifdz4xKWfK&_s`V*bM7SVc^=w7-m}jW6U1lQEv_JsW6W(| zkKf>qn^G!EWn~|7{G-&t0C6C%4)N{WRK_PM>4sW8^dDkFM|p&*aBuN%fg(I z^M-49vnMd%=04N95VO+?d#el>LEo^tvnQsMop70lNqq@%cTlht?e+B5L1L9R4R(_6 z!3dCLeGXb+_LiACNiqa^nOELJj%q&F^S+XbmdP}`KAep%TDop{Pz;UDc#P&LtMPgH zy+)P1jdgZQUuwLhV<89V{3*=Iu?u#v;v)LtxoOwV(}0UD@$NCzd=id{UuDdedeEp| z`%Q|Y<6T?kI)P|8c!K0Za&jxPhMSS!T`wlQNlkE(2B*>m{D#`hYYD>cgvsKrlcOcs7;SnVCeBiK6Wfho@*Ym9 zr0zNfrr}0%aOkHd)d%V^OFMI~MJp+Vg-^1HPru3Wvac@-QjLX9Dx}FL(l>Z;CkSvC zOR1MK%T1Edv2(b9$ttz!E7{x4{+uSVGz`uH&)gG`$)Vv0^E#b&JSZp#V)b6~$RWwe zzC3FzI`&`EDK@aKfeqQ4M(IEzDd~DS>GB$~ip2n!S%6sR&7QQ*=Mr(v*v-&07CO%# zMBTaD8-EgW#C6qFPPG1Ph^|0AFs;I+s|+A@WU}%@WbPI$S0+qFR^$gim+Fejs2f!$ z@Xdlb_K1BI;iiOUj`j+gOD%mjq^S~J0cZZwuqfzNH9}|(vvI6VO+9ZDA_(=EAo;( zKKzm`k!s!_sYCGOm)93Skaz+GF7eY@Ra8J$C)`X)`aPKym?7D^SI}Mnef4C@SgIEB z>nONSFl$qd;0gSZhNcRlq9VVHPkbakHlZ1gJ1y9W+@!V$TLpdsbKR-VwZrsSM^wLr zL9ob&JG)QDTaf&R^cnm5T5#*J3(pSpjM5~S1 z@V#E2syvK6wb?&h?{E)CoI~9uA(hST7hx4_6M(7!|BW3TR_9Q zLS{+uPoNgw(aK^?=1rFcDO?xPEk5Sm=|pW%-G2O>YWS^(RT)5EQ2GSl75`b}vRcD2 z|HX(x0#Qv+07*O|vMIV(0?KGjOny#Wa~C8Q(kF^IR8u|hyyfwD&>4lW=)Pa311caC zUk3aLCkAFkcidp@C%vNVLNUa#1ZnA~ZCLrLNp1b8(ndgB(0zy{Mw2M@QXXC{hTxr7 zbipeHI-U$#Kr>H4}+cu$#2fG6DgyWgq{O#8aa)4PoJ^;1z7b6t&zt zPei^>F1%8pcB#1`z`?f0EAe8A2C|}TRhzs*-vN^jf(XNoPN!tONWG=abD^=Lm9D?4 zbq4b(in{eZehKC0lF}`*7CTzAvu(K!eAwDNC#MlL2~&gyFKkhMIF=32gMFLvKsbLY z1d$)VSzc^K&!k#2Q?(f>pXn){C+g?vhQ0ijV^Z}p5#BGrGb%6n>IH-)SA$O)*z3lJ z1rtFlovL`cC*RaVG!p!4qMB+-f5j^1)ALf4Z;2X&ul&L!?`9Vdp@d(%(>O=7ZBV;l z?bbmyPen>!P{TJhSYPmLs759b1Ni1`d$0?&>OhxxqaU|}-?Z2c+}jgZ&vCSaCivx| z-&1gw2Lr<;U-_xzlg}Fa_3NE?o}R-ZRX->__}L$%2ySyiPegbnM{UuADqwDR{C2oS zPuo88%DNfl4xBogn((9j{;*YGE0>2YoL?LrH=o^SaAcgO39Ew|vZ0tyOXb509#6{7 z0<}CptRX5(Z4*}8CqCgpT@HY3Q)CvRz_YE;nf6ZFwEje^;Hkj0b1ESI*8Z@(RQrW4 z35D5;S73>-W$S@|+M~A(vYvX(yvLN(35THo!yT=vw@d(=q8m+sJyZMB7T&>QJ=jkwQVQ07*Am^T980rldC)j}}zf!gq7_z4dZ zHwHB94%D-EB<-^W@9;u|(=X33c(G>q;Tfq1F~-Lltp|+uwVzg?e$M96ndY{Lcou%w zWRkjeE`G*i)Bm*|_7bi+=MPm8by_};`=pG!DSGBP6y}zvV^+#BYx{<>p0DO{j@)(S zxcE`o+gZf8EPv1g3E1c3LIbw+`rO3N+Auz}vn~)cCm^DlEi#|Az$b z2}Pqf#=rxd!W*6HijC|u-4b~jtuQS>7uu{>wm)PY6^S5eo=?M>;tK`=DKXuArZvaU zHk(G??qjKYS9G6Du)#fn+ob=}C1Hj9d?V$_=J41ljM$CaA^xh^XrV-jzi7TR-{{9V zZZI0;aQ9YNEc`q=Xvz;@q$eqL<}+L(>HR$JA4mB6~g*YRSnpo zTofY;u7F~{1Pl=pdsDQx8Gg#|@BdoWo~J~j%DfVlT~JaC)he>he6`C`&@@#?;e(9( zgKcmoidHU$;pi{;VXyE~4>0{kJ>K3Uy6`s*1S--*mM&NY)*eOyy!7?9&osK*AQ~vi z{4qIQs)s#eN6j&0S()cD&aCtV;r>ykvAzd4O-fG^4Bmx2A2U7-kZR5{Qp-R^i4H2yfwC7?9(r3=?oH(~JR4=QMls>auMv*>^^!$}{}R z;#(gP+O;kn4G|totqZGdB~`9yzShMze{+$$?9%LJi>4YIsaPMwiJ{`gocu0U}$Q$vI5oeyKrgzz>!gI+XFt!#n z7vs9Pn`{{5w-@}FJZn?!%EQV!PdA3hw%Xa2#-;X4*B4?`WM;4@bj`R-yoAs_t4!!` zEaY5OrYi`3u3rXdY$2jZdZvufgFwVna?!>#t#DKAD2;U zqpqktqJ)8EPY*w~yj7r~#bNk|PDM>ZS?5F7T5aPFVZrqeX~5_1*zTQ%;xUHe#li?s zJ*5XZVERVfRjwX^s=0<%nXhULK+MdibMjzt%J7#fuh?NXyJ^pqpfG$PFmG!h*opyi zmMONjJY#%dkdRHm$l!DLeBm#_0YCq|x17c1fYJ#5YMpsjrFKyU=y>g5QcTgbDm28X zYL1RK)sn1@XtkGR;tNb}(kg#9L=jNSbJizqAgV-TtK2#?LZXrCIz({ zO^R|`ZDu(d@E7vE}df5`a zNIQRp&mDFbgyDKtyl@J|GcR9!h+_a$za$fnO5Ai9{)d7m@?@qk(RjHwXD}JbKRn|u z=Hy^z2vZ<1Mf{5ihhi9Y9GEG74Wvka;%G61WB*y7;&L>k99;IEH;d8-IR6KV{~(LZ zN7@V~f)+yg7&K~uLvG9MAY+{o+|JX?yf7h9FT%7ZrW7!RekjwgAA4jU$U#>_!ZC|c zA9%tc9nq|>2N1rg9uw-Qc89V}I5Y`vuJ(y`Ibc_?D>lPF0>d_mB@~pU`~)uWP48cT@fTxkWSw{aR!`K{v)v zpN?vQZZNPgs3ki9h{An4&Cap-c5sJ!LVLtRd=GOZ^bUpyDZHm6T|t#218}ZA zx*=~9PO>5IGaBD^XX-_2t7?7@WN7VfI^^#Csdz9&{1r z9y<9R?BT~-V8+W3kzWWQ^)ZSI+R zt^Lg`iN$Z~a27)sC_03jrD-%@{ArCPY#Pc*u|j7rE%}jF$LvO4vyvAw3bdL_mg&ei zXys_i=Q!UoF^Xp6^2h5o&%cQ@@)$J4l`AG09G6Uj<~A~!xG>KjKSyTX)zH*EdHMK0 zo;AV-D+bqWhtD-!^+`$*P0B`HokilLd1EuuwhJ?%3wJ~VXIjIE3tj653PExvIVhE& zFMYsI(OX-Q&W$}9gad^PUGuKElCvXxU_s*kx%dH)Bi&$*Q(+9j>(Q>7K1A#|8 zY!G!p0kW29rP*BNHe_wH49bF{K7tymi}Q!Vc_Ox2XjwtpM2SYo7n>?_sB=$c8O5^? z6as!fE9B48FcE`(ruNXP%rAZlDXrFTC7^aoXEX41k)tIq)6kJ*(sr$xVqsh_m3^?? zOR#{GJIr6E0Sz{-( z-R?4asj|!GVl0SEagNH-t|{s06Q3eG{kZOoPHL&Hs0gUkPc&SMY=&{C0&HDI)EHx9 zm#ySWluxwp+b~+K#VG%21%F65tyrt9RTPR$eG0afer6D`M zTW=y!@y6yi#I5V#!I|8IqU=@IfZo!@9*P+f{yLxGu$1MZ%xRY(gRQ2qH@9eMK0`Z> zgO`4DHfFEN8@m@dxYuljsmVv}c4SID+8{kr>d_dLzF$g>urGy9g+=`xAfTkVtz56G zrKNsP$yrDyP=kIqPN9~rVmC-wH672NF7xU>~j5M06Xr&>UJBmOV z%7Ie2d=K=u^D`~i3(U7x?n=h!SCSD1`aFe-sY<*oh+=;B>UVFBOHsF=(Xr(Cai{dL z4S7Y>PHdfG9Iav5FtKzx&UCgg)|DRLvq7!0*9VD`e6``Pgc z1O!qSaNeBBZnDXClh(Dq@XAk?Bd6+_rsFt`5(E+V2c)!Mx4X z47X+QCB4B7$B=Fw1Z1vnHg;x9oDV1YQJAR6Q3}_}BXTFg$A$E!oGG%`Rc()-Ysc%w za(yEn0fw~AaEFr}Rxi;if?Gv)&g~21UzXU9osI9{rNfH$gPTTk#^B|irEc<8W+|9$ zc~R${X2)N!npz1DFVa%nEW)cgPq`MSs)_I*Xwo<+ZK-2^hD(Mc8rF1+2v7&qV;5SET-ygMLNFsb~#u+LpD$uLR1o!ha67gPV5Q{v#PZK5X zUT4aZ{o}&*q7rs)v%*fDTl%}VFX?Oi{i+oKVUBqbi8w#FI%_5;6`?(yc&(Fed4Quy8xsswG+o&R zO1#lUiA%!}61s3jR7;+iO$;1YN;_*yUnJK=$PT_}Q%&0T@2i$ zwGC@ZE^A62YeOS9DU9me5#`(wv24fK=C)N$>!!6V#6rX3xiHehfdvwWJ>_fwz9l)o`Vw9yi z0p5BgvIM5o_ zgo-xaAkS_mya8FXo1Ke4;U*7TGSfm0!fb4{E5Ar8T3p!Z@4;FYT8m=d`C@4-LM121 z?6W@9d@52vxUT-6K_;1!SE%FZHcm0U$SsC%QB zxkTrfH;#Y7OYPy!nt|k^Lgz}uYudos9wI^8x>Y{fTzv9gfTVXN2xH`;Er=rTeAO1x znaaJOR-I)qwD4z%&dDjY)@s`LLSd#FoD!?NY~9#wQRTHpD7Vyyq?tKUHKv6^VE93U zt_&ePH+LM-+9w-_9rvc|>B!oT>_L59nipM-@ITy|x=P%Ezu@Y?N!?jpwP%lm;0V5p z?-$)m84(|7vxV<6f%rK3!(R7>^!EuvA&j@jdTI+5S1E{(a*wvsV}_)HDR&8iuc#>+ zMr^2z*@GTnfDW-QS38OJPR3h6U&mA;vA6Pr)MoT7%NvA`%a&JPi|K8NP$b1QY#WdMt8-CDA zyL0UXNpZ?x=tj~LeM0wk<0Dlvn$rtjd$36`+mlf6;Q}K2{%?%EQ+#FJy6v5cS+Q-~ ztk||Iwr$(CZQHi38QZF;lFFBNt+mg2*V_AhzkM<8#>E_S^xj8%T5tXTytD6f)vePG z^B0Ne-*6Pqg+rVW?%FGHLhl^ycQM-dhNCr)tGC|XyES*NK%*4AnZ!V+Zu?x zV2a82fs8?o?X} zjC1`&uo1Ti*gaP@E43NageV^$Xue3%es2pOrLdgznZ!_a{*`tfA+vnUv;^Ebi3cc$?-kh76PqA zMpL!y(V=4BGPQSU)78q~N}_@xY5S>BavY3Sez-+%b*m0v*tOz6zub9%*~%-B)lb}t zy1UgzupFgf?XyMa+j}Yu>102tP$^S9f7;b7N&8?_lYG$okIC`h2QCT_)HxG1V4Uv{xdA4k3-FVY)d}`cmkePsLScG&~@wE?ix2<(G7h zQ7&jBQ}Kx9mm<0frw#BDYR7_HvY7En#z?&*FurzdDNdfF znCL1U3#iO`BnfPyM@>;#m2Lw9cGn;(5*QN9$zd4P68ji$X?^=qHraP~Nk@JX6}S>2 zhJz4MVTib`OlEAqt!UYobU0-0r*`=03)&q7ubQXrt|t?^U^Z#MEZV?VEin3Nv1~?U zuwwSeR10BrNZ@*h7M)aTxG`D(By$(ZP#UmBGf}duX zhx;7y1x@j2t5sS#QjbEPIj95hV8*7uF6c}~NBl5|hgbB(}M3vnt zu_^>@s*Bd>w;{6v53iF5q7Em>8n&m&MXL#ilSzuC6HTzzi-V#lWoX zBOSBYm|ti@bXb9HZ~}=dlV+F?nYo3?YaV2=N@AI5T5LWWZzwvnFa%w%C<$wBkc@&3 zyUE^8xu<=k!KX<}XJYo8L5NLySP)cF392GK97(ylPS+&b}$M$Y+1VDrJa`GG7+%ToAsh z5NEB9oVv>as?i7f^o>0XCd%2wIaNRyejlFws`bXG$Mhmb6S&shdZKo;p&~b4wv$ z?2ZoM$la+_?cynm&~jEi6bnD;zSx<0BuCSDHGSssT7Qctf`0U!GDwG=+^|-a5%8Ty z&Q!%m%geLjBT*#}t zv1wDzuC)_WK1E|H?NZ&-xr5OX(ukXMYM~_2c;K}219agkgBte_#f+b9Al8XjL-p}1 z8deBZFjplH85+Fa5Q$MbL>AfKPxj?6Bib2pevGxIGAG=vr;IuuC%sq9x{g4L$?Bw+ zvoo`E)3#bpJ{Ij>Yn0I>R&&5B$&M|r&zxh+q>*QPaxi2{lp?omkCo~7ibow#@{0P> z&XBocU8KAP3hNPKEMksQ^90zB1&&b1Me>?maT}4xv7QHA@Nbvt-iWy7+yPFa9G0DP zP82ooqy_ku{UPv$YF0kFrrx3L=FI|AjG7*(paRLM0k1J>3oPxU0Zd+4&vIMW>h4O5G zej2N$(e|2Re z@8xQ|uUvbA8QVXGjZ{Uiolxb7c7C^nW`P(m*Jkqn)qdI0xTa#fcK7SLp)<86(c`A3 zFNB4y#NHe$wYc7V)|=uiW8gS{1WMaJhDj4xYhld;zJip&uJ{Jg3R`n+jywDc*=>bW zEqw(_+j%8LMRrH~+M*$V$xn9x9P&zt^evq$P`aSf-51`ZOKm(35OEUMlO^$>%@b?a z>qXny!8eV7cI)cb0lu+dwzGH(Drx1-g+uDX;Oy$cs+gz~?LWif;#!+IvPR6fa&@Gj zwz!Vw9@-Jm1QtYT?I@JQf%`=$^I%0NK9CJ75gA}ff@?I*xUD7!x*qcyTX5X+pS zAVy4{51-dHKs*OroaTy;U?zpFS;bKV7wb}8v+Q#z<^$%NXN(_hG}*9E_DhrRd7Jqp zr}2jKH{avzrpXj?cW{17{kgKql+R(Ew55YiKK7=8nkzp7Sx<956tRa(|yvHlW zNO7|;GvR(1q}GrTY@uC&ow0me|8wE(PzOd}Y=T+Ih8@c2&~6(nzQrK??I7DbOguA9GUoz3ASU%BFCc8LBsslu|nl>q8Ag(jA9vkQ`q2amJ5FfA7GoCdsLW znuok(diRhuN+)A&`rH{$(HXWyG2TLXhVDo4xu?}k2cH7QsoS>sPV)ylb45Zt&_+1& zT)Yzh#FHRZ-z_Q^8~IZ+G~+qSw-D<{0NZ5!J1%rAc`B23T98TMh9ylkzdk^O?W`@C??Z5U9#vi0d<(`?9fQvNN^ji;&r}geU zSbKR5Mv$&u8d|iB^qiLaZQ#@)%kx1N;Og8Js>HQD3W4~pI(l>KiHpAv&-Ev45z(vYK<>p6 z6#pU(@rUu{i9UngMhU&FI5yeRub4#u=9H+N>L@t}djC(Schr;gc90n%)qH{$l0L4T z;=R%r>CuxH!O@+eBR`rBLrT0vnP^sJ^+qE^C8ZY0-@te3SjnJ)d(~HcnQw@`|qAp|Trrs^E*n zY1!(LgVJfL?@N+u{*!Q97N{Uu)ZvaN>hsM~J?*Qvqv;sLnXHjKrtG&x)7tk?8%AHI zo5eI#`qV1{HmUf-Fucg1xn?Kw;(!%pdQ)ai43J3NP4{%x1D zI0#GZh8tjRy+2{m$HyI(iEwK30a4I36cSht3MM85UqccyUq6$j5K>|w$O3>`Ds;`0736+M@q(9$(`C6QZQ-vAKjIXKR(NAH88 zwfM6_nGWlhpy!_o56^BU``%TQ%tD4hs2^<2pLypjAZ;W9xAQRfF_;T9W-uidv{`B z{)0udL1~tMg}a!hzVM0a_$RbuQk|EG&(z*{nZXD3hf;BJe4YxX8pKX7VaIjjDP%sk zU5iOkhzZ&%?A@YfaJ8l&H;it@;u>AIB`TkglVuy>h;vjtq~o`5NfvR!ZfL8qS#LL` zD!nYHGzZ|}BcCf8s>b=5nZRYV{)KK#7$I06s<;RyYC3<~`mob_t2IfR*dkFJyL?FU zvuo-EE4U(-le)zdgtW#AVA~zjx*^80kd3A#?vI63pLnW2{j*=#UG}ISD>=ZGA$H&` z?Nd8&11*4`%MQlM64wfK`{O*ad5}vk4{Gy}F98xIAsmjp*9P=a^yBHBjF2*Iibo2H zGJAMFDjZcVd%6bZ`dz;I@F55VCn{~RKUqD#V_d{gc|Z|`RstPw$>Wu+;SY%yf1rI=>51Oolm>cnjOWHm?ydcgGs_kPUu=?ZKtQS> zKtLS-v$OMWXO>B%Z4LFUgw4MqA?60o{}-^6tf(c0{Y3|yF##+)RoXYVY-lyPhgn{1 z>}yF0Ab}D#1*746QAj5c%66>7CCWs8O7_d&=Ktu!SK(m}StvvBT1$8QP3O2a*^BNA z)HPhmIi*((2`?w}IE6Fo-SwzI_F~OC7OR}guyY!bOQfpNRg3iMvsFPYb9-;dT6T%R zhLwIjgiE^-9_4F3eMHZ3LI%bbOmWVe{SONpujQ;3C+58=Be4@yJK>3&@O>YaSdrevAdCLMe_tL zl8@F}{Oc!aXO5!t!|`I zdC`k$5z9Yf%RYJp2|k*DK1W@AN23W%SD0EdUV^6~6bPp_HZi0@dku_^N--oZv}wZA zH?Bf`knx%oKB36^L;P%|pf#}Tp(icw=0(2N4aL_Ea=9DMtF})2ay68V{*KfE{O=xL zf}tcfCL|D$6g&_R;r~1m{+)sutQPKzVv6Zw(%8w&4aeiy(qct1x38kiqgk!0^^X3IzI2ia zxI|Q)qJNEf{=I$RnS0`SGMVg~>kHQB@~&iT7+eR!Ilo1ZrDc3TVW)CvFFjHK4K}Kh z)dxbw7X%-9Ol&Y4NQE~bX6z+BGOEIIfJ~KfD}f4spk(m62#u%k<+iD^`AqIhWxtKGIm)l$7=L`=VU0Bz3-cLvy&xdHDe-_d3%*C|Q&&_-n;B`87X zDBt3O?Wo-Hg6*i?f`G}5zvM?OzQjkB8uJhzj3N;TM5dSM$C@~gGU7nt-XX_W(p0IA6$~^cP*IAnA<=@HVqNz=Dp#Rcj9_6*8o|*^YseK_4d&mBY*Y&q z8gtl;(5%~3Ehpz)bLX%)7|h4tAwx}1+8CBtu9f5%^SE<&4%~9EVn4*_!r}+{^2;} zwz}#@Iw?&|8F2LdXUIjh@kg3QH69tqxR_FzA;zVpY=E zcHnWh(3j3UXeD=4m_@)Ea4m#r?axC&X%#wC8FpJPDYR~@65T?pXuWdPzEqXP>|L`S zKYFF0I~%I>SFWF|&sDsRdXf$-TVGSoWTx7>7mtCVUrQNVjZ#;Krobgh76tiP*0(5A zs#<7EJ#J`Xhp*IXB+p5{b&X3GXi#b*u~peAD9vr0*Vd&mvMY^zxTD=e(`}ybDt=BC(4q)CIdp>aK z0c?i@vFWjcbK>oH&V_1m_EuZ;KjZSiW^i30U` zGLK{%1o9TGm8@gy+Rl=-5&z`~Un@l*2ne3e9B+>wKyxuoUa1qhf?-Pi= zZLCD-b7*(ybv6uh4b`s&Ol3hX2ZE<}N@iC+h&{J5U|U{u$XK0AJz)!TSX6lrkG?ris;y{s zv`B5Rq(~G58?KlDZ!o9q5t%^E4`+=ku_h@~w**@jHV-+cBW-`H9HS@o?YUUkKJ;AeCMz^f@FgrRi@?NvO3|J zBM^>4Z}}!vzNum!R~o0)rszHG(eeq!#C^wggTgne^2xc9nIanR$pH1*O;V>3&#PNa z7yoo?%T(?m-x_ow+M0Bk!@ow>A=skt&~xK=a(GEGIWo4AW09{U%(;CYLiQIY$bl3M zxC_FGKY%J`&oTS{R8MHVe{vghGEshWi!(EK*DWmoOv|(Ff#(bZ-<~{rc|a%}Q4-;w z{2gca97m~Nj@Nl{d)P`J__#Zgvc@)q_(yfrF2yHs6RU8UXxcU(T257}E#E_A}%2_IW?%O+7v((|iQ{H<|$S7w?;7J;iwD>xbZc$=l*(bzRXc~edIirlU0T&0E_EXfS5%yA zs0y|Sp&i`0zf;VLN=%hmo9!aoLGP<*Z7E8GT}%)cLFs(KHScNBco(uTubbxCOD_%P zD7XlHivrSWLth7jf4QR9`jFNk-7i%v4*4fC*A=;$Dm@Z^OK|rAw>*CI%E z3%14h-)|Q%_$wi9=p!;+cQ*N1(47<49TyB&B*bm_m$rs+*ztWStR~>b zE@V06;x19Y_A85N;R+?e?zMTIqdB1R8>(!4_S!Fh={DGqYvA0e-P~2DaRpCYf4$-Q z*&}6D!N_@s`$W(|!DOv%>R0n;?#(HgaI$KpHYpnbj~I5eeI(u4CS7OJajF%iKz)*V zt@8=9)tD1ML_CrdXQ81bETBeW!IEy7mu4*bnU--kK;KfgZ>oO>f)Sz~UK1AW#ZQ_ic&!ce~@(m2HT@xEh5u%{t}EOn8ET#*U~PfiIh2QgpT z%gJU6!sR2rA94u@xj3%Q`n@d}^iMH#X>&Bax+f4cG7E{g{vlJQ!f9T5wA6T`CgB%6 z-9aRjn$BmH=)}?xWm9bf`Yj-f;%XKRp@&7?L^k?OT_oZXASIqbQ#eztkW=tmRF$~% z6(&9wJuC-BlGrR*(LQKx8}jaE5t`aaz#Xb;(TBK98RJBjiqbZFyRNTOPA;fG$;~e` zsd6SBii3^(1Y`6^#>kJ77xF{PAfDkyevgox`qW`nz1F`&w*DH5Oh1idOTLES>DToi z8Qs4|?%#%>yuQO1#{R!-+2AOFznWo)e3~_D!nhoDgjovB%A8< zt%c^KlBL$cDPu!Cc`NLc_8>f?)!FGV7yudL$bKj!h;eOGkd;P~sr6>r6TlO{Wp1%xep8r1W{`<4am^(U} z+nCDP{Z*I?IGBE&*KjiaR}dpvM{ZFMW%P5Ft)u$FD373r2|cNsz%b0uk1T+mQI@4& zFF*~xDxDRew1Bol-*q>F{Xw8BUO;>|0KXf`lv7IUh%GgeLUzR|_r(TXZTbfXFE0oc zmGMwzNFgkdg><=+3MnncRD^O`m=SxJ6?}NZ8BR)=ag^b4Eiu<_bN&i0wUaCGi60W6 z%iMl&`h8G)y`gfrVw$={cZ)H4KSQO`UV#!@@cDx*hChXJB7zY18EsIo1)tw0k+8u; zg(6qLysbxVbLFbkYqKbEuc3KxTE+%j5&k>zHB8_FuDcOO3}FS|eTxoUh2~|Bh?pD| zsmg(EtMh`@s;`(r!%^xxDt(5wawK+*jLl>_Z3shaB~vdkJ!V3RnShluzmwn7>PHai z3avc`)jZSAvTVC6{2~^CaX49GXMtd|sbi*swkgoyLr=&yp!ASd^mIC^D;a|<=3pSt zM&0u%#%DGzlF4JpMDs~#kU;UCtyW+d3JwNiu`Uc7Yi6%2gfvP_pz8I{Q<#25DjM_D z(>8yI^s@_tG@c=cPoZImW1CO~`>l>rs=i4BFMZT`vq5bMOe!H@8q@sEZX<-kiY&@u3g1YFc zc@)@OF;K-JjI(eLs~hy8qOa9H1zb!3GslI!nH2DhP=p*NLHeh^9WF?4Iakt+b( z-4!;Q-8c|AX>t+5I64EKpDj4l2x*!_REy9L_9F~i{)1?o#Ws{YG#*}lg_zktt#ZlN zmoNsGm7$AXLink`GWtY*TZEH!J9Qv+A1y|@>?&(pb(6XW#ZF*}x*{60%wnt{n8Icp zq-Kb($kh6v_voqvA`8rq!cgyu;GaWZ>C2t6G5wk! zcKTlw=>KX3ldU}a1%XESW71))Z=HW%sMj2znJ;fdN${00DGGO}d+QsTQ=f;BeZ`eC~0-*|gn$9G#`#0YbT(>O(k&!?2jI z&oi9&3n6Vz<4RGR}h*1ggr#&0f%Op(6{h>EEVFNJ0C>I~~SmvqG+{RXDrexBz zw;bR@$Wi`HQ3e*eU@Cr-4Z7g`1R}>3-Qej(#Dmy|CuFc{Pg83Jv(pOMs$t(9vVJQJ zXqn2Ol^MW;DXq!qM$55vZ{JRqg!Q1^Qdn&FIug%O3=PUr~Q`UJuZ zc`_bE6i^Cp_(fka&A)MsPukiMyjG$((zE$!u>wyAe`gf-1Qf}WFfi1Y{^ zdCTTrxqpQE#2BYWEBnTr)u-qGSVRMV7HTC(x zb(0FjYH~nW07F|{@oy)rlK6CCCgyX?cB;19Z(bCP5>lwN0UBF}Ia|L0$oGHl-oSTZ zr;(u7nDjSA03v~XoF@ULya8|dzH<2G=n9A)AIkQKF0mn?!BU(ipengAE}6r`CE!jd z=EcX8exgDZZQ~~fgxR-2yF;l|kAfnjhz|i_o~cYRdhnE~1yZ{s zG!kZJ<-OVnO{s3bOJK<)`O;rk>=^Sj3M76Nqkj<_@Jjw~iOkWUCL+*Z?+_Jvdb!0cUBy=(5W9H-r4I zxAFts>~r)B>KXdQANyaeKvFheZMgoq4EVV0|^NR@>ea* zh%<78{}wsdL|9N1!jCN-)wH4SDhl$MN^f_3&qo?>Bz#?c{ne*P1+1 z!a`(2Bxy`S^(cw^dv{$cT^wEQ5;+MBctgPfM9kIQGFUKI#>ZfW9(8~Ey-8`OR_XoT zflW^mFO?AwFWx9mW2-@LrY~I1{dlX~jBMt!3?5goHeg#o0lKgQ+eZcIheq@A&dD}GY&1c%hsgo?z zH>-hNgF?Jk*F0UOZ*bs+MXO(dLZ|jzKu5xV1v#!RD+jRrHdQ z>>b){U(I@i6~4kZXn$rk?8j(eVKYJ2&k7Uc`u01>B&G@c`P#t#x@>Q$N$1aT514fK zA_H8j)UKen{k^ehe%nbTw}<JV6xN_|| z(bd-%aL}b z3VITE`N~@WlS+cV>C9TU;YfsU3;`+@hJSbG6aGvis{Gs%2K|($)(_VfpHB|DG8Nje+0tCNW%_cu3hk0F)~{-% zW{2xSu@)Xnc`Dc%AOH)+LT97ImFR*WekSnJ3OYIs#ijP4TD`K&7NZKsfZ;76k@VD3py?pSw~~r^VV$Z zuUl9lF4H2(Qga0EP_==vQ@f!FLC+Y74*s`Ogq|^!?RRt&9e9A&?Tdu=8SOva$dqgYU$zkKD3m>I=`nhx-+M;-leZgt z8TeyQFy`jtUg4Ih^JCUcq+g_qs?LXSxF#t+?1Jsr8c1PB#V+f6aOx@;ThTIR4AyF5 z3m$Rq(6R}U2S}~Bn^M0P&Aaux%D@ijl0kCCF48t)+Y`u>g?|ibOAJoQGML@;tn{%3IEMaD(@`{7ByXQ`PmDeK*;W?| zI8%%P8%9)9{9DL-zKbDQ*%@Cl>Q)_M6vCs~5rb(oTD%vH@o?Gk?UoRD=C-M|w~&vb z{n-B9>t0EORXd-VfYC>sNv5vOF_Wo5V)(Oa%<~f|EU7=npanpVX^SxPW;C!hMf#kq z*vGNI-!9&y!|>Zj0V<~)zDu=JqlQu+ii387D-_U>WI_`3pDuHg{%N5yzU zEulPN)%3&{PX|hv*rc&NKe(bJLhH=GPuLk5pSo9J(M9J3v)FxCo65T%9x<)x+&4Rr2#nu2?~Glz|{28OV6 z)H^`XkUL|MG-$XE=M4*fIPmeR2wFWd>5o*)(gG^Y>!P4(f z68RkX0cRBOFc@`W-IA(q@p@m>*2q-`LfujOJ8-h$OgHte;KY4vZKTxO95;wh#2ZDL zKi8aHkz2l54lZd81t`yY$Tq_Q2_JZ1d(65apMg}vqwx=ceNOWjFB)6m3Q!edw2<{O z4J6+Un(E8jxs-L-K_XM_VWahy zE+9fm_ZaxjNi{fI_AqLKqhc4IkqQ4`Ut$=0L)nzlQw^%i?bP~znsbMY3f}*nPWqQZ zz_CQDpZ?Npn_pEr`~SX1`OoSkS;bmzQ69y|W_4bH3&U3F7EBlx+t%2R02VRJ01cfX zo$$^ObDHK%bHQaOcMpCq@@Jp8!OLYVQO+itW1ZxlkmoG#3FmD4b61mZjn4H|pSmYi2YE;I#@jtq8Mhjdgl!6({gUsQA>IRXb#AyWVt7b=(HWGUj;wd!S+q z4S+H|y<$yPrrrTqQHsa}H`#eJFV2H5Dd2FqFMA%mwd`4hMK4722|78d(XV}rz^-GV(k zqsQ>JWy~cg_hbp0=~V3&TnniMQ}t#INg!o2lN#H4_gx8Tn~Gu&*ZF8#kkM*5gvPu^ zw?!M^05{7q&uthxOn?%#%RA_%y~1IWly7&_-sV!D=Kw3DP+W)>YYRiAqw^d7vG_Q%v;tRbE1pOBHc)c&_5=@wo4CJTJ1DeZErEvP5J(kc^GnGYX z|LqQjTkM{^gO2cO#-(g!7^di@$J0ibC(vsnVkHt3osnWL8?-;R1BW40q5Tmu_9L-s z7fNF5fiuS-%B%F$;D97N-I@!~c+J>nv%mzQ5vs?1MgR@XD*Gv`A{s8 z5Cr>z5j?|sb>n=c*xSKHpdy667QZT?$j^Doa%#m4ggM@4t5Oe%iW z@w~j_B>GJJkO+6dVHD#CkbC(=VMN8nDkz%44SK62N(ZM#AsNz1KW~3(i=)O;q5JrK z?vAVuL}Rme)OGQuLn8{3+V352UvEBV^>|-TAAa1l-T)oiYYD&}Kyxw73shz?Bn})7 z_a_CIPYK(zMp(i+tRLjy4dV#CBf3s@bdmwXo`Y)dRq9r9-c@^2S*YoNOmAX%@OYJOXs zT*->in!8Ca_$W8zMBb04@|Y)|>WZ)-QGO&S7Zga1(1#VR&)X+MD{LEPc%EJCXIMtr z1X@}oNU;_(dfQ_|kI-iUSTKiVzcy+zr72kq)TIp(GkgVyd%{8@^)$%G)pA@^Mfj71FG%d?sf(2Vm>k%X^RS`}v0LmwIQ7!_7cy$Q8pT?X1VWecA_W68u==HbrU& z@&L6pM0@8ZHL?k{6+&ewAj%grb6y@0$3oamTvXsjGmPL_$~OpIyIq%b$(uI1VKo zk_@{r>1p84UK3}B>@d?xUZ}dJk>uEd+-QhwFQ`U?rA=jj+$w8sD#{492P}~R#%z%0 z5dlltiAaiPKv9fhjmuy{*m!C22$;>#85EduvdSrFES{QO$bHpa7E@&{bWb@<7VhTF zXCFS_wB>7*MjJ3$_i4^A2XfF2t7`LOr3B@??OOUk=4fKkaHne4RhI~Lm$JrHfUU*h zgD9G66;_F?3>0W{pW2A^DR7Bq`ZUiSc${S8EM>%gFIqAw0du4~kU#vuCb=$I_PQv? zZfEY7X6c{jJZ@nF&T>4oyy(Zr_XqnMq)ZtGPASbr?IhZOnL|JKY()`eo=P5UK9(P-@ zOJKFogtk|pscVD+#$7KZs^K5l4gC}*CTd0neZ8L(^&1*bPrCp23%{VNp`4Ld*)Fly z)b|zb*bCzp?&X3_=qLT&0J+=p01&}9*xbk~^hd^@mV!Ha`1H+M&60QH2c|!Ty`RepK|H|Moc5MquD z=&$Ne3%WX+|7?iiR8=7*LW9O3{O%Z6U6`VekeF8lGr5vd)rsZu@X#5!^G1;nV60cz zW?9%HgD}1G{E(YvcLcIMQR65BP50)a;WI*tjRzL7diqRqh$3>OK{06VyC=pj6OiardshTnYfve5U>Tln@y{DC99f!B4> zCrZa$B;IjDrg}*D5l=CrW|wdzENw{q?oIj!Px^7DnqAsU7_=AzXxoA;4(YvN5^9ag zwEd4-HOlO~R0~zk>!4|_Z&&q}agLD`Nx!%9RLC#7fK=w06e zOK<>|#@|e2zjwZ5aB>DJ%#P>k4s0+xHJs@jROvoDQfSoE84l8{9y%5^POiP+?yq0> z7+Ymbld(s-4p5vykK@g<{X*!DZt1QWXKGmj${`@_R~=a!qPzB357nWW^KmhV!^G3i zsYN{2_@gtzsZH*FY!}}vNDnqq>kc(+7wK}M4V*O!M&GQ|uj>+8!Q8Ja+j3f*MzwcI z^s4FXGC=LZ?il4D+Y^f89wh!d7EU-5dZ}}>_PO}jXRQ@q^CjK-{KVnmFd_f&IDKmx zZ5;PDLF%_O);<4t`WSMN;Ec^;I#wU?Z?_R|Jg`#wbq;UM#50f@7F?b7ySi-$C-N;% zqXowTcT@=|@~*a)dkZ836R=H+m6|fynm#0Y{KVyYU=_*NHO1{=Eo{^L@wWr7 zjz9GOu8Fd&v}a4d+}@J^9=!dJRsCO@=>K6UCM)Xv6};tb)M#{(k!i}_0Rjq z2kb7wPcNgov%%q#(1cLykjrxAg)By+3QueBR>Wsep&rWQHq1wE!JP+L;q+mXts{j@ zOY@t9BFmofApO0k@iBFPeKsV3X=|=_t65QyohXMSfMRr7Jyf8~ogPVmJwbr@`nmml zov*NCf;*mT(5s4K=~xtYy8SzE66W#tW4X#RnN%<8FGCT{z#jRKy@Cy|!yR`7dsJ}R z!eZzPCF+^b0qwg(mE=M#V;Ud9)2QL~ z-r-2%0dbya)%ui_>e6>O3-}4+Q!D+MU-9HL2tH)O`cMC1^=rA=q$Pcc;Zel@@ss|K zH*WMdS^O`5Uv1qNTMhM(=;qjhaJ|ZC41i2!kt4;JGlXQ$tvvF8Oa^C@(q6(&6B^l) zNG{GaX?`qROHwL-F1WZDEF;C6Inuv~1&ZuP3j53547P38tr|iPH#3&hN*g0R^H;#) znft`cw0+^Lwe{!^kQat+xjf_$SZ05OD6~U`6njelvd+4pLZU(0ykS5&S$)u?gm!;} z+gJ8g12b1D4^2HH!?AHFAjDAP^q)Juw|hZfIv{3Ryn%4B^-rqIF2 zeWk^za4fq#@;re{z4_O|Zj&Zn{2WsyI^1%NW=2qA^iMH>u>@;GAYI>Bk~u0wWQrz* zdEf)7_pSYMg;_9^qrCzvv{FZYwgXK}6e6ceOH+i&+O=x&{7aRI(oz3NHc;UAxMJE2 zDb0QeNpm$TDcshGWs!Zy!shR$lC_Yh-PkQ`{V~z!AvUoRr&BAGS#_*ZygwI2-)6+a zq|?A;+-7f0Dk4uuht z6sWPGl&Q$bev1b6%aheld88yMmBp2j=z*egn1aAWd?zN=yEtRDGRW&nmv#%OQwuJ; zqKZ`L4DsqJwU{&2V9f>2`1QP7U}`6)$qxTNEi`4xn!HzIY?hDnnJZw+mFnVSry=bLH7ar+M(e9h?GiwnOM?9ZJcTJ08)T1-+J#cr&uHhXkiJ~}&(}wvzCo33 zLd_<%rRFQ3d5fzKYQy41<`HKk#$yn$Q+Fx-?{3h72XZrr*uN!5QjRon-qZh9-uZ$rWEKZ z!dJMP`hprNS{pzqO`Qhx`oXGd{4Uy0&RDwJ`hqLw4v5k#MOjvyt}IkLW{nNau8~XM z&XKeoVYreO=$E%z^WMd>J%tCdJx5-h+8tiawu2;s& zD7l`HV!v@vcX*qM(}KvZ#%0VBIbd)NClLBu-m2Scx1H`jyLYce;2z;;eo;ckYlU53 z9JcQS+CvCwj*yxM+e*1Vk6}+qIik2VzvUuJyWyO}piM1rEk%IvS;dsXOIR!#9S;G@ zPcz^%QTf9D<2~VA5L@Z@FGQqwyx~Mc-QFzT4Em?7u`OU!PB=MD8jx%J{<`tH$Kcxz zjIvb$x|`s!-^^Zw{hGV>rg&zb;=m?XYAU0LFw+uyp8v@Y)zmjj&Ib7Y1@r4`cfrS%cVxJiw`;*BwIU*6QVsBBL;~nw4`ZFqs z1YSgLVy=rvA&GQB4MDG+j^)X1N=T;Ty2lE-`zrg(dNq?=Q`nCM*o8~A2V~UPArX<| zF;e$5B0hPSo56=ePVy{nah#?e-Yi3g*z6iYJ#BFJ-5f0KlQ-PRiuGwe29fyk1T6>& zeo2lvb%h9Vzi&^QcVNp}J!x&ubtw5fKa|n2XSMlg#=G*6F|;p)%SpN~l8BaMREDQN z-c9O}?%U1p-ej%hzIDB!W_{`9lS}_U==fdYpAil1E3MQOFW^u#B)Cs zTE3|YB0bKpXuDKR9z&{4gNO3VHDLB!xxPES+)yaJxo<|}&bl`F21};xsQnc!*FPZA zSct2IU3gEu@WQKmY-vA5>MV?7W|{$rAEj4<8`*i)<%fj*gDz2=ApqZ&MP&0UmO1?q!GN=di+n(#bB_mHa z(H-rIOJqamMfwB%?di!TrN=x~0jOJtvb0e9uu$ZCVj(gJyK}Fa5F2S?VE30P{#n3eMy!-v7e8viCooW9cfQx%xyPNL*eDKL zB=X@jxulpkLfnar7D2EeP*0L7c9urDz{XdV;@tO;u`7DlN7#~ zAKA~uM2u8_<5FLkd}OzD9K zO5&hbK8yakUXn8r*H9RE zO9Gsipa2()=&x=1mnQtNP#4m%GXThu8Ccqx*qb;S{5}>bU*V5{SY~(Hb={cyTeaTM zMEaKedtJf^NnJrwQ^Bd57vSlJ3l@$^0QpX@_1>h^+js8QVpwOiIMOiSC_>3@dt*&| zV?0jRdlgn|FIYam0s)a@5?0kf7A|GD|dRnP1=B!{ldr;N5s)}MJ=i4XEqlC}w)LEJ}7f9~c!?It(s zu>b=YBlFRi(H-%8A!@Vr{mndRJ z_jx*?BQpK>qh`2+3cBJhx;>yXPjv>dQ0m+nd4nl(L;GmF-?XzlMK zP(Xeyh7mFlP#=J%i~L{o)*sG7H5g~bnL2Hn3y!!r5YiYRzgNTvgL<(*g5IB*gcajK z86X3LoW*5heFmkIQ-I_@I_7b!Xq#O;IzOv(TK#(4gd)rmCbv5YfA4koRfLydaIXUU z8(q?)EWy!sjsn-oyUC&uwJqEXdlM}#tmD~*Ztav=mTQyrw0^F=1I5lj*}GSQTQOW{ z=O12;?fJfXxy`)ItiDB@0sk43AZo_sRn*jc#S|(2*%tH84d|UTYN!O4R(G6-CM}84 zpiyYJ^wl|w@!*t)dwn0XJv2kuHgbfNL$U6)O-k*~7pQ?y=sQJdKk5x`1>PEAxjIWn z{H$)fZH4S}%?xzAy1om0^`Q$^?QEL}*ZVQK)NLgmnJ`(we z21c23X1&=^>k;UF-}7}@nzUf5HSLUcOYW&gsqUrj7%d$)+d8ZWwTZq)tOgc%fz95+ zl%sdl)|l|jXfqIcjKTFrX74Rbq1}osA~fXPSPE?XO=__@`7k4Taa!sHE8v-zfx(AM zXT_(7u;&_?4ZIh%45x>p!(I&xV|IE**qbqCRGD5aqLpCRvrNy@uT?iYo-FPpu`t}J zSTZ}MDrud+`#^14r`A%UoMvN;raizytxMBV$~~y3i0#m}0F}Dj_fBIz+)1RWdnctP z>^O^vd0E+jS+$V~*`mZWER~L^q?i-6RPxxufWdrW=%prbCYT{5>Vgu%vPB)~NN*2L zB?xQg2K@+Xy=sPh$%10LH!39p&SJG+3^i*lFLn=uY8Io6AXRZf;p~v@1(hWsFzeKzx99_{w>r;cypkPVJCKtLGK>?-K0GE zGH>$g?u`)U_%0|f#!;+E>?v>qghuBwYZxZ*Q*EE|P|__G+OzC-Z+}CS(XK^t!TMoT zc+QU|1C_PGiVp&_^wMxfmMAuJDQ%1p4O|x5DljN6+MJiO%8s{^ts8$uh5`N~qK46c`3WY#hRH$QI@*i1OB7qBIN*S2gK#uVd{ zik+wwQ{D)g{XTGjKV1m#kYhmK#?uy)g@idi&^8mX)Ms`^=hQGY)j|LuFr8SJGZjr| zzZf{hxYg)-I^G|*#dT9Jj)+wMfz-l7ixjmwHK9L4aPdXyD-QCW!2|Jn(<3$pq-BM; zs(6}egHAL?8l?f}2FJSkP`N%hdAeBiD{3qVlghzJe5s9ZUMd`;KURm_eFaK?d&+TyC88v zCv2R(Qg~0VS?+p+l1e(aVq`($>|0b{{tPNbi} zaZDffTZ7N|t2D5DBv~aX#X+yGagWs1JRsqbr4L8a`B`m) z1p9?T`|*8ZXHS7YD8{P1Dk`EGM`2Yjsy0=7M&U6^VO30`Gx!ZkUoqmc3oUbd&)V*iD08>dk=#G!*cs~^tOw^s8YQqYJ z!5=-4ZB7rW4mQF&YZw>T_in-c9`0NqQ_5Q}fq|)%HECgBd5KIo`miEcJ>~a1e2B@) zL_rqoQ;1MowD34e6#_U+>D`WcnG5<2Q6cnt4Iv@NC$*M+i3!c?6hqPJLsB|SJ~xo! zm>!N;b0E{RX{d*in3&0w!cmB&TBNEjhxdg!fo+}iGE*BWV%x*46rT@+cXU;leofWy zxst{S8m!_#hIhbV7wfWN#th8OI5EUr3IR_GOIzBgGW1u4J*TQxtT7PXp#U#EagTV* zehVkBFF06`@5bh!t%L)-)`p|d7D|^kED7fsht#SN7*3`MKZX};Jh0~nCREL_BGqNR zxpJ4`V{%>CAqEE#Dt95u=;Un8wLhrac$fao`XlNsOH%&Ey2tK&vAcriS1kXnntDuttcN{%YJz@!$T zD&v6ZQ>zS1`o!qT=JK-Y+^i~bZkVJpN8%<4>HbuG($h9LP;{3DJF_Jcl8CA5M~<3s^!$Sg62zLEnJtZ z0`)jwK75Il6)9XLf(64~`778D6-#Ie1IR2Ffu+_Oty%$8u+bP$?803V5W6%(+iZzp zp5<&sBV&%CJcXUIATUakP1czt$&0x$lyoLH!ueNaIpvtO z*eCijxOv^-D?JaLzH<3yhOfDENi@q#4w(#tl-19(&Yc2K%S8Y&r{3~-)P17sC1{rQ zOy>IZ6%814_UoEi+w9a4XyGXF66{rgE~UT)oT4x zg9oIx@|{KL#VpTyE=6WK@Sbd9RKEEY)5W{-%0F^6(QMuT$RQRZ&yqfyF*Z$f8>{iT zq(;UzB-Ltv;VHvh4y%YvG^UEkvpe9ugiT97ErbY0ErCEOWs4J=kflA!*Q}gMbEP`N zY#L`x9a?E)*~B~t+7c8eR}VY`t}J;EWuJ-6&}SHnNZ8i0PZT^ahA@@HXk?c0{)6rC zP}I}_KK7MjXqn1E19gOwWvJ3i9>FNxN67o?lZy4H?n}%j|Dq$p%TFLUPJBD;R|*0O z3pLw^?*$9Ax!xy<&fO@;E2w$9nMez{5JdFO^q)B0OmGwkxxaDsEU+5C#g+?Ln-Vg@ z-=z4O*#*VJa*nujGnGfK#?`a|xfZsuiO+R}7y(d60@!WUIEUt>K+KTI&I z9YQ6#hVCo}0^*>yr-#Lisq6R?uI=Ms!J7}qm@B}Zu zp%f-~1Cf!-5S0xXl`oqq&fS=tt0`%dDWI&6pW(s zJXtYiY&~t>k5I0RK3sN;#8?#xO+*FeK#=C^%{Y>{k{~bXz%(H;)V5)DZRk~(_d0b6 zV!x54fwkl`1y;%U;n|E#^Vx(RGnuN|T$oJ^R%ZmI{8(9>U-K^QpDcT?Bb@|J0NAfvHtL#wP ziYupr2E5=_KS{U@;kyW7oy*+UTOiF*e+EhYqVcV^wx~5}49tBNSUHLH1=x}6L2Fl^4X4633$k!ZHZTL50Vq+a5+ z<}uglXQ<{x&6ey)-lq6;4KLHbR)_;Oo^FodsYSw3M-)FbLaBcPI=-ao+|))T2ksKb z{c%Fu`HR1dqNw8%>e0>HI2E_zNH1$+4RWfk}p-h(W@)7LC zwVnUO17y+~kw35CxVtokT44iF$l8XxYuetp)1Br${@lb(Q^e|q*5%7JNxp5B{r<09 z-~8o#rI1(Qb9FhW-igcsC6npf5j`-v!nCrAcVx5+S&_V2D>MOWp6cV$~Olhp2`F^Td{WV`2k4J`djb#M>5D#k&5XkMu*FiO(uP{SNX@(=)|Wm`@b> z_D<~{ip6@uyd7e3Rn+qM80@}Cl35~^)7XN?D{=B-4@gO4mY%`z!kMIZizhGtCH-*7 z{a%uB4usaUoJwbkVVj%8o!K^>W=(ZzRDA&kISY?`^0YHKe!()(*w@{w7o5lHd3(Us zUm-K=z&rEbOe$ackQ3XH=An;Qyug2g&vqf;zsRBldxA+=vNGoM$Zo9yT?Bn?`Hkiq z&h@Ss--~+=YOe@~JlC`CdSHy zcO`;bgMASYi6`WSw#Z|A;wQgH@>+I3OT6(*JgZZ_XQ!LrBJfVW2RK%#02|@V|H4&8DqslU6Zj(x!tM{h zRawG+Vy63_8gP#G!Eq>qKf(C&!^G$01~baLLk#)ov-Pqx~Du>%LHMv?=WBx2p2eV zbj5fjTBhwo&zeD=l1*o}Zs%SMxEi9yokhbHhY4N!XV?t8}?!?42E-B^Rh&ABFxovs*HeQ5{{*)SrnJ%e{){Z_#JH+jvwF7>Jo zE+qzWrugBwVOZou~oFa(wc7?`wNde>~HcC@>fA^o>ll?~aj-e|Ju z+iJzZg0y1@eQ4}rm`+@hH(|=gW^;>n>ydn!8%B4t7WL)R-D>mMw<7Wz6>ulFnM7QA ze2HEqaE4O6jpVq&ol3O$46r+DW@%glD8Kp*tFY#8oiSyMi#yEpVIw3#t?pXG?+H>v z$pUwT@0ri)_Bt+H(^uzp6qx!P(AdAI_Q?b`>0J?aAKTPt>73uL2(WXws9+T|%U)Jq zP?Oy;y6?{%J>}?ZmfcnyIQHh_jL;oD$`U#!v@Bf{5%^F`UiOX%)<0DqQ^nqA5Ac!< z1DPO5C>W0%m?MN*x(k>lDT4W3;tPi=&yM#Wjwc5IFNiLkQf`7GN+J*MbB4q~HVePM zeDj8YyA*btY&n!M9$tuOxG0)2um))hsVsY+(p~JnDaT7x(s2If0H_iRSju7!z7p|8 zzI`NV!1hHWX3m)?t68k6yNKvop{Z>kl)f5GV(~1InT4%9IxqhDX-rgj)Y|NYq_NTlZgz-)=Y$=x9L7|k0=m@6WQ<4&r=BX@pW25NtCI+N{e&`RGSpR zeb^`@FHm5?pWseZ6V08{R(ki}--13S2op~9Kzz;#cPgL}Tmrqd+gs(fJLTCM8#&|S z^L+7PbAhltJDyyxAVxqf(2h!RGC3$;hX@YNz@&JRw!m5?Q)|-tZ8u0D$4we+QytG^ zj0U_@+N|OJlBHdWPN!K={a$R1Zi{2%5QD}s&s-Xn1tY1cwh)8VW z$pjq>8sj4)?76EJs6bA0E&pfr^Vq`&Xc;Tl2T!fm+MV%!H|i0o;7A=zE?dl)-Iz#P zSY7QRV`qRc6b&rON`BValC01zSLQpVemH5y%FxK8m^PeNN(Hf1(%C}KPfC*L?Nm!nMW0@J3(J=mYq3DPk;TMs%h`-amWbc%7{1Lg3$ z^e=btuqch-lydbtLvazh+fx?87Q7!YRT(=-Vx;hO)?o@f1($e5B?JB9jcRd;zM;iE zu?3EqyK`@_5Smr#^a`C#M>sRwq2^|ym)X*r;0v6AM`Zz1aK94@9Ti)Lixun2N!e-A z>w#}xPxVd9AfaF$XTTff?+#D(xwOpjZj9-&SU%7Z-E2-VF-n#xnPeQH*67J=j>TL# z<v}>AiTXrQ(fYa%82%qlH=L z6Fg8@r4p+BeTZ!5cZlu$iR?EJpYuTx>cJ~{{B7KODY#o*2seq=p2U0Rh;3mX^9sza zk^R_l7jzL5BXWlrVkhh!+LQ-Nc0I`6l1mWkp~inn)HQWqMTWl4G-TBLglR~n&6J?4 z7J)IO{wkrtT!Csntw3H$Mnj>@;QbrxC&Shqn^VVu$Ls*_c~TTY~fri6fO-=eJsC*8(3(H zSyO>=B;G`qA398OvCHRvf3mabrPZaaLhn*+jeA`qI!gP&i8Zs!*bBqMXDJpSZG$N) zx0rDLvcO>EoqCTR)|n7eOp-jmd>`#w`6`;+9+hihW2WnKVPQ20LR94h+(p)R$Y!Q zj_3ZEY+e@NH0f6VjLND)sh+Cvfo3CpcXw?`$@a^@CyLrAKIpjL8G z`;cDLqvK=ER)$q)+6vMKlxn!!SzWl>Ib9Ys9L)L0IWr*Ox;Rk#(Dpqf;wapY_EYL8 zKFrV)Q8BBKO4$r2hON%g=r@lPE;kBUVYVG`uxx~QI>9>MCXw_5vnmDsm|^KRny929 zeKx>F(LDs#K4FGU*k3~GX`A!)l8&|tyan-rBHBm6XaB5hc5sGKWwibAD7&3M-gh1n z2?eI7E2u{(^z#W~wU~dHSfy|m)%PY454NBxED)y-T3AO`CLQxklcC1I@Y`v4~SEI#Cm> z-cjqK6I?mypZapi$ZK;y&G+|#D=woItrajg69VRD+Fu8*UxG6KdfFmFLE}HvBJ~Y) zC&c-hr~;H2Idnsz7_F~MKpBZldh)>itc1AL0>4knbVy#%pUB&9vqL1Kg*^aU`k#(p z=A%lur(|$GWSqILaWZ#2xj(&lheSiA|N6DOG?A|$!aYM)?oME6ngnfLw0CA79WA+y zhUeLbMw*VB?drVE_D~3DWVaD>8x?_q>f!6;)i3@W<=kBZBSE=uIU60SW)qct?AdM zXgti8&O=}QNd|u%Fpxr172Kc`sX^@fm>Fxl8fbFalJYci_GGoIzU*~U*I!QLz? z4NYk^=JXBS*Uph@51da-v;%?))cB^(ps}y8yChu7CzyC9SX{jAq13zdnqRHRvc{ha zcPmgCUqAJ^1RChMCCz;ZN*ap{JPoE<1#8nNObDbAt6Jr}Crq#xGkK@w2mLhIUecvy z#?s~?J()H*?w9K`_;S+8TNVkHSk}#yvn+|~jcB|he}OY(zH|7%EK%-Tq=)18730)v zM3f|=oFugXq3Lqn={L!wx|u(ycZf(Te11c3?^8~aF; zNMC)gi?nQ#S$s{46yImv_7@4_qu|XXEza~);h&cr*~dO@#$LtKZa@@r$8PD^jz{D6 zk~5;IJBuQjsKk+8i0wzLJ2=toMw4@rw7(|6`7*e|V(5-#ZzRirtkXBO1oshQ&0>z&HAtSF8+871e|ni4gLs#`3v7gnG#^F zDv!w100_HwtU}B2T!+v_YDR@-9VmoGW+a76oo4yy)o`MY(a^GcIvXW+4)t{lK}I-& zl-C=(w_1Z}tsSFjFd z3iZjkO6xnjLV3!EE?ex9rb1Zxm)O-CnWPat4vw08!GtcQ3lHD+ySRB*3zQu-at$rj zzBn`S?5h=JlLXX8)~Jp%1~YS6>M8c-Mv~E%s7_RcvIYjc-ia`3r>dvjxZ6=?6=#OM zfsv}?hGnMMdi9C`J9+g)5`M9+S79ug=!xE_XcHdWnIRr&hq$!X7aX5kJV8Q(6Lq?|AE8N2H z37j{DPDY^Jw!J>~>Mwaja$g%q1sYfH4bUJFOR`x=pZQ@O(-4b#5=_Vm(0xe!LW>YF zO4w`2C|Cu%^C9q9B>NjFD{+qt)cY3~(09ma%mp3%cjFsj0_93oVHC3)AsbBPuQNBO z`+zffU~AgGrE0K{NVR}@oxB4&XWt&pJ-mq!JLhFWbnXf~H%uU?6N zWJ7oa@``Vi$pMWM#7N9=sX1%Y+1qTGnr_G&h3YfnkHPKG}p>i{fAG+(klE z(g~u_rJXF48l1D?;;>e}Ra{P$>{o`jR_!s{hV1Wk`vURz`W2c$-#r9GM7jgs2>um~ zouGlCm92rOiLITzf`jgl`v2qYw^!Lh0YwFHO1|3Krp8ztE}?#2+>c)yQlNw%5e6w5 zIm9BKZN5Q9b!tX`Zo$0RD~B)VscWp(FR|!a!{|Q$={;ZWl%10vBzfgWn}WBe!%cug z^G%;J-L4<6&aCKx@@(Grsf}dh8fuGT+TmhhA)_16uB!t{HIAK!B-7fJLe9fsF)4G- zf>(~ⅅ8zCNKueM5c!$)^mKpZNR!eIlFST57ePGQcqCqedAQ3UaUEzpjM--5V4YO zY22VxQm%$2NDnwfK+jkz=i2>NjAM6&P1DdcO<*Xs1-lzdXWn#LGSxwhPH7N%D8-zCgpFWt@`LgNYI+Fh^~nSiQmwH0^>E>*O$47MqfQza@Ce z1wBw;igLc#V2@y-*~Hp?jA1)+MYYyAt|DV_8RQCrRY@sAviO}wv;3gFdO>TE(=9o? z=S(r=0oT`w24=ihA=~iFV5z$ZG74?rmYn#eanx(!Hkxcr$*^KRFJKYYB&l6$WVsJ^ z-Iz#HYmE)Da@&seqG1fXsTER#adA&OrD2-T(z}Cwby|mQf{0v*v3hq~pzF`U`jenT z=XHXeB|fa?Ws$+9ADO0rco{#~+`VM?IXg7N>M0w1fyW1iiKTA@p$y zSiAJ%-Mg{m>&S4r#Tw@?@7ck}#oFo-iZJCWc`hw_J$=rw?omE{^tc59ftd`xq?jzf zo0bFUI=$>O!45{!c4?0KsJmZ#$vuYpZLo_O^oHTmmLMm0J_a{Nn`q5tG1m=0ecv$T z5H7r0DZGl6be@aJ+;26EGw9JENj0oJ5K0=^f-yBW2I0jqVIU};NBp*gF7_KlQnhB6 z##d$H({^HXj@il`*4^kC42&3)(A|tuhs;LygA-EWFSqpe+%#?6HG6}mE215Z4mjO2 zY2^?5$<8&k`O~#~sSc5Fy`5hg5#e{kG>SAbTxCh{y32fHkNryU_c0_6h&$zbWc63T z7|r?X7_H!9XK!HfZ+r?FvBQ$x{HTGS=1VN<>Ss-7M3z|vQG|N}Frv{h-q623@Jz*@ ziXlZIpAuY^RPlu&=nO)pFhML5=ut~&zWDSsn%>mv)!P1|^M!d5AwmSPIckoY|0u9I zTDAzG*U&5SPf+@c_tE_I!~Npfi$?gX(kn=zZd|tUZ_ez(xP+)xS!8=k(<{9@<+EUx zYQgZhjn(0qA#?~Q+EA9oh_Jx5PMfE3#KIh#*cFIFQGi)-40NHbJO&%ZvL|LAqU=Rw zf?Vr4qkUcKtLr^g-6*N-tfk+v8@#Lpl~SgKyH!+m9?T8B>WDWK22;!i5&_N=%f{__ z-LHb`v-LvKqTJZCx~z|Yg;U_f)VZu~q7trb%C6fOKs#eJosw&b$nmwGwP;Bz`=zK4 z>U3;}T_ptP)w=vJaL8EhW;J#SHA;fr13f=r#{o)`dRMOs-T;lp&Toi@u^oB_^pw=P zp#8Geo2?@!h2EYHY?L;ayT}-Df0?TeUCe8Cto{W0_a>!7Gxmi5G-nIIS;X{flm2De z{SjFG%knZoVa;mtHR_`*6)KEf=dvOT3OgT7C7&-4P#4X^B%VI&_57cBbli()(%zZC?Y0b;?5!f22UleQ=9h4_LkcA!Xsqx@q{ko&tvP_V@7epFs}AIpM{g??PA>U(sk$Gum>2Eu zD{Oy{$OF%~?B6>ixQeK9I}!$O0!T3#Ir8MW)j2V*qyJ z8Bg17L`rg^B_#rkny-=<3fr}Y42+x0@q6POk$H^*p3~Dc@5uYTQ$pfaRnIT}Wxb;- zl!@kkZkS=l)&=y|21veY8yz$t-&7ecA)TR|=51BKh(@n|d$EN>18)9kSQ|GqP?aeM ztXd9C&Md$PPF*FVs*GhoHM2L@D$(Qf%%x zwQBUt!jM~GgwluBcwkgwQ!249uPkNz3u@LSYZgmpHgX|P#8!iKk^vSKZ;?)KE$92d z2U>y}VWJ0&zjrIqddM3dz-nU%>bL&KU%SA|LiiUU7Ka|c=jF|vQ1V)Jz`JZe*j<5U6~RVuBEVJoY~ z&GE+F$f>4lN=X4-|9v*5O*Os>>r87u z!_1NSV?_X&HeFR1fOFb8_P)4lybJ6?1BWK`Tv2;4t|x1<#@17UO|hLGnrB%nu)fDk zfstJ4{X4^Y<8Lj<}g2^kksSefQTMuTo?tJLCh zC~>CR#a0hADw!_Vg*5fJwV{~S(j8)~sn>Oyt(ud2$1YfGck77}xN@3U_#T`q)f9!2 zf>Ia;Gwp2_C>WokU%(z2ec8z94pZyhaK+e>3a9sj^-&*V494;p9-xk+u1Jn#N_&xs z59OI2w=PuTErv|aNcK*>3l^W*p3}fjXJjJAXtBA#%B(-0--s;1U#f8gFYW!JL+iVG zV0SSx5w8eVgE?3Sg@eQv)=x<+-JgpVixZQNaZr}3b8sVyVs$@ndkF5FYKka@b+YAh z#nq_gzlIDKEs_i}H4f)(VQ!FSB}j>5znkVD&W0bOA{UZ7h!(FXrBbtdGA|PE1db>s z$!X)WY)u#7P8>^7Pjjj-kXNBuJX3(pJVetTZRNOnR5|RT5D>xmwxhAn)9KF3J05J; z-Mfb~dc?LUGqozC2p!1VjRqUwwDBnJhOua3vCCB-%ykW_ohSe?$R#dz%@Gym-8-RA zjMa_SJSzIl8{9dV+&63e9$4;{=1}w2=l+_j_Dtt@<(SYMbV-18&%F@Zl7F_5! z@xwJ0wiDdO%{}j9PW1(t+8P7Ud79yjY>x>aZYWJL_NI?bI6Y02`;@?qPz_PRqz(7v``20`- z033Dy|4;y6di|>cz|P-z|6c&3f&g^OAt8aN0Zd&0yZ>dq2aFCsE<~Ucf$v{sL=*++ zBxFSa2lfA+Y%U@B&3D=&CBO&u`#*nNc|PCY7XO<}MnG0VR764XrHtrb5zwC*2F!Lp zE<~Vj0;z!S-|3M4DFxuQ=`ShTf28<9p!81(0hFbGNqF%0gg*orez9!qt8e%o@Yfl@ zhvY}{@3&f??}7<`p>FyU;7?VkKbh8_=csozU=|fH&szgZ{=NDCylQ>EH^x5!K3~-V z)_2Y>0uJ`Z0Pb58y`RL+&n@m9tJ)O<%q#&u#DAIt+-rRt0eSe1MTtMl@W)H$b3D)@ z*A-1bUgZI)>HdcI4&W>P4W5{-j=s5p5`cbQ+{(g0+RDnz!TR^mxSLu_y#SDVKrj8i zA^hi6>jMGM;`$9Vfb-Yf!47b)Ow`2OKtNB=z|Kxa$5O}WPo;(Dc^`q(7X8kkeFyO8 z{XOq^07=u|7*P2`m;>PIFf=i80MKUxsN{d2cX0M+REsE*20+WQ79T9&cqT>=I_U% z{=8~^Isg(Nzo~`4iQfIb_#CVCD>#5h>=-Z#5dH}WxYzn%0)GAm6L2WdUdP=0_h>7f z(jh&7%1i(ZOn+}D8$iGK4Vs{pmHl_w4Qm-46H9>4^{3dz^DZDh+dw)6Xd@CpQNK$j z{CU;-cmpK=egplZ3y3%y=sEnCJ^eYVKXzV8H2_r*fJ*%*B;a1_lOpt6)IT1IAK2eB z{rie|uDJUrbgfUE>~C>@RO|m5ex55F{=~Bb4Cucp{ok7Yf9V}QuZ`#Gc|WaqsQlK- zKaV)iMRR__&Ak2Z=IM9R9g5$WM4u{a^C-7uX*!myEym z#_#p^T!P~#Dx$%^K>Y_nj_3J*E_LwJ60-5Xu=LkJAwcP@|0;a&+|+ZX`Jbj9P5;T% z|KOc}4*#4o{U?09`9Hz`Xo-I!P=9XfIrr*MQ}y=$!qgv?_J38^bNb4kM&_OVg^_=Eu-qG5U(fw0KMgH){C8pazq~51rN97hf#20-7=aK0)N|UM H-+%o-(+5aQ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b3f9f3c3f9..05679dc3c1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Feb 19 18:03:32 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip \ No newline at end of file diff --git a/gradlew b/gradlew index 9d82f78915..4f906e0c81 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,20 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## ## @@ -6,20 +22,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +64,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,28 +75,14 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -85,7 +106,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -105,10 +126,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -134,27 +156,30 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282aa6..ac1b06f938 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,90 +1,89 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 3f0fb6b73e8038a636004da9388faebe99e36494 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 30 Nov 2021 16:43:33 +0100 Subject: [PATCH 006/253] [ADD_COMPOSE_TO_ANDROID_APP] Explicit androidX parameter in build.gradle --- gradle.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a910d729f2..238e030f0f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,4 +7,5 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx1536m \ No newline at end of file +org.gradle.jvmargs=-Xmx1536m +android.useAndroidX=true \ No newline at end of file From 652e54a516ad1f872daac3ecaf191ff51246207e Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 1 Dec 2021 16:39:46 +0100 Subject: [PATCH 007/253] [ADD_COMPOSE_TO_ANDROID_APP] Fix integration tests --- core/build.gradle | 5 +++-- .../common/IdentifiableObjectStoreIntegrationShould.java | 4 ++-- .../android/core/common/ObjectStoreIntegrationShould.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index 6e61ce43b5..a95b12ab0f 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -68,7 +68,7 @@ ext { expressionParser: "1.0.18", // test dependencies - coreTesting : "1.1.1", + coreTesting : "2.1.0", jUnit : "4.13", mockito : "3.4.6", mockitoKotlin : "2.2.0", @@ -228,7 +228,7 @@ dependencies { // Android test dependencies androidTestImplementation "commons-logging:commons-logging:${libraries.commonsLogging}" androidTestImplementation "org.mockito:mockito-core:${libraries.mockito}" - androidTestImplementation "android.arch.core:core-testing:${libraries.coreTesting}" + androidTestImplementation "androidx.arch.core:core-testing:${libraries.coreTesting}" androidTestImplementation "com.jraska.livedata:testing:${libraries.liveDataTesting}" androidTestImplementation "androidx.test:runner:${libraries.testRunner}" androidTestImplementation "com.squareup.okhttp3:logging-interceptor:${libraries.okHttp}" @@ -244,6 +244,7 @@ dependencies { releaseImplementation "com.facebook.flipper:flipper-noop:${libraries.flipper}" implementation "net.openid:appauth:${libraries.appauth}" + implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' } apply from: project.file("plugins/gradle-mvn-push.gradle") diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java index 9600b3a47a..1eac3f7d10 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java @@ -73,7 +73,7 @@ public void insert_option_set() { optionSetCursorAssert(cursor, optionSet); } - @Test(expected = IllegalArgumentException.class) + @Test(expected = NullPointerException.class) public void throw_exception_for_null_when_inserting() { OptionSet optionSet = null; store.insert(optionSet); @@ -103,7 +103,7 @@ public void throw_exception_deleting_non_existing_option_set() { store.delete("new-id"); } - @Test(expected = IllegalArgumentException.class) + @Test(expected = NullPointerException.class) public void throw_exception_deleting_with_null_uid() { store.delete(null); } diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java index 7872cba709..7fa5072957 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java @@ -66,7 +66,7 @@ public void insert_option_set() { optionSetCursorAssert(cursor, optionSet); } - @Test(expected = IllegalArgumentException.class) + @Test(expected = NullPointerException.class) public void throw_exception_for_null_when_inserting() { OptionSet optionSet = null; store.insert(optionSet); From 56fa21e377c54267c5e72ccb934c3154ae671c56 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 1 Dec 2021 16:41:29 +0100 Subject: [PATCH 008/253] [ADD_COMPOSE_TO_ANDROID_APP] Version 1.5.1-SNAPSHOT --- core/build.gradle | 4 ++-- core/gradle.properties | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index a95b12ab0f..4fa0990887 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -42,8 +42,8 @@ ext { buildToolsVersion: "30.0.2", minSdkVersion : 19, targetSdkVersion : 30, - versionCode : 250, - versionName : "1.5.0" + versionCode : 251, + versionName : "1.5.1-SNAPSHOT" ] libraries = [ diff --git a/core/gradle.properties b/core/gradle.properties index 3ff58b008c..ee7d60a1ff 100644 --- a/core/gradle.properties +++ b/core/gradle.properties @@ -29,8 +29,8 @@ # Properties which are consumed by plugins/gradle-mvn-push.gradle plugin. # They are used for publishing artifact to snapshot repository. -VERSION_NAME=1.5.0 -VERSION_CODE=250 +VERSION_NAME=1.5.1-SNAPSHOT +VERSION_CODE=251 GROUP=org.hisp.dhis From 5a436b27478b4575e9c4dd86024ec0f27693edca Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Mon, 13 Dec 2021 14:41:29 +0100 Subject: [PATCH 009/253] [ADD_COMPOSE_TO_ANDROID_APP] Explictly set jdk 11 in gradle.xml --- .idea/gradle.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index a5d4ff484a..e719f145a9 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -6,7 +6,7 @@

downloadPartitionedWithCustomHandling( - uids: Set, - pageSize: Int, - customHandling: Consumer>, - pageDownloader: (Set) -> Single> - ): Single> - fun

downloadPartitioned( uids: Set, pageSize: Int, @@ -50,12 +42,12 @@ internal interface APIDownloader { pageDownloader: (Set) -> Single> ): Single> - fun

downloadPartitioned( + fun downloadPartitioned( uids: Set, pageSize: Int, handler: Handler

, - pageDownloader: (Set) -> Single>, - transform: ((P) -> P)? + pageDownloader: (Set) -> Single>, + transform: (O) -> P ): Single> fun downloadPartitionedMap( diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt index 5fe86c4de6..063d64951b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt @@ -31,7 +31,6 @@ import androidx.annotation.VisibleForTesting import dagger.Reusable import io.reactivex.Observable import io.reactivex.Single -import io.reactivex.functions.Consumer import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.payload.internal.Payload import org.hisp.dhis.android.core.arch.handlers.internal.Handler @@ -45,67 +44,58 @@ import org.hisp.dhis.android.core.resource.internal.ResourceHandler @VisibleForTesting internal class APIDownloaderImpl @Inject constructor(private val resourceHandler: ResourceHandler) : APIDownloader { - override fun

downloadPartitionedWithCustomHandling( - uids: Set, - pageSize: Int, - customHandling: Consumer>, - pageDownloader: (Set) -> Single> - ): Single> { - return downloadPartitionedWithCustomHandling(uids, pageSize, customHandling, pageDownloader, null) - } - - private fun

downloadPartitionedWithCustomHandling( - uids: Set, - pageSize: Int, - customHandling: Consumer>, - pageDownloader: (Set) -> Single>, - transform: ((P) -> P)? - ): Single> { - val partitions = CollectionsHelper.setPartition(uids, pageSize) - return Observable.fromIterable(partitions) - .flatMapSingle(pageDownloader) - .map { obj: Payload

-> obj.items() } - .reduce( - listOf(), - { items: List

, items2: List

-> - items + items2 - } - ) - .map { items: List

-> - if (transform == null) { - items - } else { - items.map { transform(it) } - } - } - .doOnSuccess(customHandling) - } - override fun

downloadPartitioned( uids: Set, pageSize: Int, handler: Handler

, pageDownloader: (Set) -> Single> ): Single> { - return downloadPartitioned(uids, pageSize, handler, pageDownloader, null) + return downloadPartitionedWithCustomHandling( + uids, + pageSize, + handler, + pageDownloader + ) { it } } - override fun

downloadPartitioned( + override fun downloadPartitioned( uids: Set, pageSize: Int, handler: Handler

, - pageDownloader: (Set) -> Single>, - transform: ((P) -> P)? + pageDownloader: (Set) -> Single>, + transform: (O) -> P ): Single> { return downloadPartitionedWithCustomHandling( uids, pageSize, - Consumer { oCollection: List

-> handler.handleMany(oCollection) }, + handler, pageDownloader, transform ) } + private fun downloadPartitionedWithCustomHandling( + uids: Set, + pageSize: Int, + handler: Handler

, + pageDownloader: (Set) -> Single>, + transform: (O) -> P + ): Single> { + val partitions = CollectionsHelper.setPartition(uids, pageSize) + return Observable.fromIterable(partitions) + .flatMapSingle(pageDownloader) + .map { obj: Payload -> obj.items() } + .reduce(emptyList()) { items: List, items2: List -> + items + items2 + } + .map { items: List -> + items.map { transform(it) } + } + .doOnSuccess { oCollection: List

-> + handler.handleMany(oCollection) + } + } + override fun downloadPartitionedMap( uids: Set, pageSize: Int, diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36.kt index f3be38cedb..cd293c5064 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36.kt @@ -28,9 +28,9 @@ package org.hisp.dhis.android.core.visualization +import java.util.* import org.hisp.dhis.android.core.common.ObjectWithUid import org.hisp.dhis.android.core.common.RelativePeriod -import java.util.* internal data class VisualizationAPI36( val id: String, @@ -127,11 +127,13 @@ internal data class VisualizationAPI36( .userOrganisationUnitGrandChildren(userOrganisationUnitGrandChildren) .organisationUnits(organisationUnits) .periods(periods) - .legend(VisualizationLegend.builder() - .set(legendSet) - .style(legendDisplayStyle) - .strategy(legendDisplayStrategy) - .showKey(false) - .build()) + .legend( + VisualizationLegend.builder() + .set(legendSet) + .style(legendDisplayStyle) + .strategy(legendDisplayStrategy) + .showKey(false) + .build() + ) .build() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java index b8d7f9b0f6..c29e488993 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java @@ -81,8 +81,8 @@ public StringFilterConnector bySubtitle() { return cf.string(Columns.SUBTITLE); } - public StringFilterConnector byLegendShowKey() { - return cf.string(Columns.LEGEND_SHOW_KEY); + public BooleanFilterConnector byLegendShowKey() { + return cf.bool(Columns.LEGEND_SHOW_KEY); } public StringFilterConnector byLegendStrategy() { diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt index 96ee2b5a8e..f1dbf13960 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt @@ -51,15 +51,31 @@ internal class VisualizationCall @Inject constructor( override fun download(uids: Set): Single> { return if (dhis2VersionManager.isGreaterOrEqualThan(DHISVersion.V2_34)) { - apiDownloader.downloadPartitioned( - uids, - MAX_UID_LIST_SIZE, - handler - ) { partitionUids: Set -> - service.getVisualizations( - VisualizationFields.allFields, - VisualizationFields.uid.`in`(partitionUids), - paging = false + if (dhis2VersionManager.isGreaterOrEqualThan(DHISVersion.V2_37)) { + apiDownloader.downloadPartitioned( + uids, + MAX_UID_LIST_SIZE, + handler + ) { partitionUids: Set -> + service.getVisualizations( + VisualizationFields.allFields, + VisualizationFields.uid.`in`(partitionUids), + paging = false + ) + } + } else { + apiDownloader.downloadPartitioned( + uids, + MAX_UID_LIST_SIZE, + handler, + { partitionUids: Set -> + service.getVisualizations36( + VisualizationFields.allFieldsAPI36, + VisualizationFields.uid.`in`(partitionUids), + paging = false + ) + }, + { it.toVisualization() } ) } } else { diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt index baaf97bf20..aea2af873a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt @@ -35,10 +35,32 @@ internal object VisualizationFields { internal const val CATEGORY_DIMENSIONS = "categoryDimensions" internal const val DATA_DIMENSION_ITEMS = "dataDimensionItems" internal const val LEGEND = "legend" + + private const val LEGEND_DISPLAY_STRATEGY = "legendDisplayStrategy" + private const val LEGEND_DISPLAY_STYLE = "legendDisplayStyle" + private const val LEGEND_SET = "legendSet" + private val fh = FieldsHelper() val uid = fh.uid() - val allFields: Fields = + val allFields: Fields + get() = + commonFields() + .fields( + fh.field(LEGEND) + ) + .build() + + val allFieldsAPI36: Fields + get() = + commonFields() + .fields( + fh.field(LEGEND_DISPLAY_STRATEGY), + fh.field(LEGEND_DISPLAY_STYLE), + fh.nestedFieldWithUid(LEGEND_SET) + ).build() + + private fun commonFields(): Fields.Builder = Fields.builder() .fields(fh.getIdentifiableFields()) .fields( @@ -74,8 +96,6 @@ internal object VisualizationFields { fh.field(VisualizationTableInfo.Columns.USER_ORGANISATION_UNIT_CHILDREN), fh.field(VisualizationTableInfo.Columns.USER_ORGANISATION_UNIT_GRAND_CHILDREN), fh.nestedFieldWithUid(VisualizationTableInfo.Columns.ORGANISATION_UNITS), - fh.nestedFieldWithUid(VisualizationTableInfo.Columns.PERIODS), - fh.field(LEGEND) + fh.nestedFieldWithUid(VisualizationTableInfo.Columns.PERIODS) ) - .build() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt index 85b3f06fe8..f3c7ef1a72 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt @@ -34,6 +34,7 @@ import org.hisp.dhis.android.core.arch.api.filters.internal.Where import org.hisp.dhis.android.core.arch.api.filters.internal.Which import org.hisp.dhis.android.core.arch.api.payload.internal.Payload import org.hisp.dhis.android.core.visualization.Visualization +import org.hisp.dhis.android.core.visualization.VisualizationAPI36 import retrofit2.http.GET import retrofit2.http.Query @@ -45,4 +46,11 @@ internal interface VisualizationService { @Query("filter") @Where uids: Filter, @Query("paging") paging: Boolean ): Single> + + @GET("visualizations") + fun getVisualizations36( + @Query("fields") @Which fields: Fields, + @Query("filter") @Where uids: Filter, + @Query("paging") paging: Boolean + ): Single> } diff --git a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt index d1c668d64e..5cb5283ab6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt @@ -28,11 +28,11 @@ package org.hisp.dhis.android.core.visualization import com.google.common.truth.Truth.assertThat +import java.io.IOException +import java.text.ParseException import org.hisp.dhis.android.core.common.BaseObjectShould import org.hisp.dhis.android.core.common.ObjectShould import org.junit.Test -import java.io.IOException -import java.text.ParseException class VisualizationAPI36Should : BaseObjectShould("visualization/visualization_api_36.json"), ObjectShould { @@ -57,4 +57,4 @@ class VisualizationAPI36Should : BaseObjectShould("visualization/visualization_a assertThat(visualizationAPI36.toVisualization()).isEqualTo(visualization) } -} \ No newline at end of file +} From ce4f2133bc7903f242a6e9f8618338672462cbec Mon Sep 17 00:00:00 2001 From: Pablo Date: Mon, 21 Feb 2022 14:44:30 +0100 Subject: [PATCH 100/253] build: bump expression parser version to 1.0.25 --- core/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/build.gradle b/core/build.gradle index c6c21ca27e..19a35079f3 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -65,7 +65,7 @@ ext { jexl : "2.1.1", jodaTime : "2.10.6", smsCompression : "0.2.0", - expressionParser: "1.0.18", + expressionParser: "1.0.25", // test dependencies coreTesting : "2.1.0", From 8a828f178ff254d092971750a1c6831776a5b527 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Mon, 21 Feb 2022 16:35:44 +0100 Subject: [PATCH 101/253] [ANTLR_UPDATE] Adapt filter unit test --- .../internal/ProgramIndicatorExecutorShould.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt index 2edfea7238..44bf6559b6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt @@ -396,12 +396,12 @@ class ProgramIndicatorExecutorShould { } @Test - fun evaluate_invalid_filter() { + fun evaluate_truthy_filter() { setExpression("4") setFilter("1") val result = programIndicatorExecutor.getProgramIndicatorValue(programIndicator) - assertThat(result).isNull() + assertThat(result).isEqualTo("4") } @Test From c2e2dae9fa0c680273ec588529633a29e5bdd478 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 22 Feb 2022 16:51:35 +0100 Subject: [PATCH 102/253] [ANDROSDK-1175] Catch OWNERSHIP_ERROR in tei download --- ...rorCatcher.java => APICallErrorCatcher.kt} | 21 ++- ... TrackedEntityInstanceCallErrorCatcher.kt} | 47 +++-- ...ackedEntityInstanceDownloadInternalCall.kt | 110 ++++++++---- .../TrackedEntityInstanceService.java | 153 ---------------- .../internal/TrackedEntityInstanceService.kt | 163 ++++++++++++++++++ ...ackedEntityInstancesEndpointCallFactory.kt | 14 ++ .../internal/TrackerQueryCommonParams.kt | 1 + .../TrackerQueryFactoryCommonHelper.kt | 1 + .../importer/internal/JobQueryErrorCatcher.kt | 2 +- .../TrackerQueryCommonParamsSamples.kt | 2 +- ...TrackedEntityInstanceQueryFactoryShould.kt | 20 ++- 11 files changed, 303 insertions(+), 231 deletions(-) rename core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/{APICallErrorCatcher.java => APICallErrorCatcher.kt} (81%) rename core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/{TrackedEntityInstanceCallErrorCatcher.java => TrackedEntityInstanceCallErrorCatcher.kt} (69%) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt similarity index 81% rename from core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.java rename to core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt index 550f271201..d0b8a2e4ab 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt @@ -25,17 +25,16 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.arch.api.executors.internal -package org.hisp.dhis.android.core.arch.api.executors.internal; +import kotlin.Throws +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import retrofit2.Response +import java.io.IOException -import org.hisp.dhis.android.core.maintenance.D2ErrorCode; +internal interface APICallErrorCatcher { + fun mustBeStored(): Boolean? -import java.io.IOException; - -import retrofit2.Response; - -public interface APICallErrorCatcher { - Boolean mustBeStored(); - - D2ErrorCode catchError(Response response) throws IOException; -} + @Throws(IOException::class) + fun catchError(response: Response<*>): D2ErrorCode? +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt similarity index 69% rename from core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.java rename to core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt index 7a8b347a8d..6214695753 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt @@ -25,34 +25,31 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory; -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher; -import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse; -import org.hisp.dhis.android.core.maintenance.D2ErrorCode; - -import java.io.IOException; - -import retrofit2.Response; - -final class TrackedEntityInstanceCallErrorCatcher implements APICallErrorCatcher { - - @Override - public Boolean mustBeStored() { - return false; +package org.hisp.dhis.android.core.trackedentity.internal + +import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher +import kotlin.Throws +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import retrofit2.Response +import java.io.IOException + +internal class TrackedEntityInstanceCallErrorCatcher : APICallErrorCatcher { + override fun mustBeStored(): Boolean { + return false } - @Override - public D2ErrorCode catchError(Response response) throws IOException { - HttpMessageResponse parsed = ObjectMapperFactory.objectMapper().readValue(response.errorBody().string(), - HttpMessageResponse.class); - - if (parsed.httpStatusCode() == 401 && parsed.message().equals("OWNERSHIP_ACCESS_DENIED")) { - return D2ErrorCode.OWNERSHIP_ACCESS_DENIED; + @Throws(IOException::class) + override fun catchError(response: Response<*>): D2ErrorCode? { + val parsed = objectMapper().readValue( + response.errorBody()!!.string(), + HttpMessageResponse::class.java + ) + return if (parsed.httpStatusCode() == 401 && parsed.message() == "OWNERSHIP_ACCESS_DENIED") { + D2ErrorCode.OWNERSHIP_ACCESS_DENIED } else { - return null; + null } } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index dc104799ad..56fcc2de4b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable import io.reactivex.Observable +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import javax.inject.Inject import kotlin.math.ceil import kotlin.math.max @@ -50,7 +51,8 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( private val queryFactory: TrackerQueryBundleFactory, private val persistenceCallFactory: TrackedEntityInstancePersistenceCallFactory, private val endpointCallFactory: TrackedEntityInstancesEndpointCallFactory, - private val apiCallExecutor: RxAPICallExecutor, + private val rxApiCallExecutor: RxAPICallExecutor, + private val apiCallExecutor: APICallExecutor, private val lastUpdatedManager: TrackedEntityInstanceLastUpdatedManager ) { @@ -67,26 +69,34 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( val bundles: List = queryFactory.getQueries(params) for (bundle in bundles) { - iterables.teisCount = 0 - iterables.bundleOrgUnitPrograms = mutableMapOf() - iterables.orgUnitsBundleToDownload = bundle.orgUnits().toMutableList() - bundle.orgUnits() - .ifEmpty { listOf(null) } - .forEach { orgUnit -> - iterables.bundleOrgUnitPrograms[orgUnit] = when (orgUnit) { - null -> listOf(TEIsByProgramCount(null, 0)) - else -> - bundle.commonParams().programs - .map { TEIsByProgramCount(it, 0) } - }.toMutableList() + if (bundle.commonParams().uids.isNotEmpty()) { + val result = queryByUids(bundle, params.overwrite(), relatives) + + result.d2Error?.let { + emitter.onError(it) + return@create } - var iterationCount = 0 - do { - iterateBundle(bundle, params, iterables, relatives) - iterationCount++ - } while (iterationNotFinished(bundle, params, iterables, iterationCount)) + } else { + iterables.teisCount = 0 + iterables.bundleOrgUnitPrograms = mutableMapOf() + iterables.orgUnitsBundleToDownload = bundle.orgUnits().toMutableList() + + bundle.orgUnits() + .ifEmpty { listOf(null) } + .forEach { orgUnit -> + iterables.bundleOrgUnitPrograms[orgUnit] = when (orgUnit) { + null -> listOf(TEIsByProgramCount(null, 0)) + else -> + bundle.commonParams().programs + .map { TEIsByProgramCount(it, 0) } + }.toMutableList() + } + var iterationCount = 0 + do { + iterateBundle(bundle, params, iterables, relatives) + iterationCount++ + } while (iterationNotFinished(bundle, params, iterables, iterationCount)) - if (params.uids().isEmpty()) { lastUpdatedManager.update(bundle) } } @@ -102,9 +112,9 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( iterationCount: Int ): Boolean { return params.limitByProgram() != true && - iterables.teisCount < bundle.commonParams().limit && - iterables.orgUnitsBundleToDownload.isNotEmpty() && - iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) + iterables.teisCount < bundle.commonParams().limit && + iterables.orgUnitsBundleToDownload.isNotEmpty() && + iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) } private fun iterateBundle( @@ -115,9 +125,8 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( ) { val limitPerCombo = getBundleLimit(bundle, params, iterables) - for (orgUnitUid in iterables.bundleOrgUnitPrograms.keys) { + for ((orgUnitUid, orgunitPrograms) in iterables.bundleOrgUnitPrograms.entries) { iterables.emptyOrCorruptedPrograms = emptyList().toMutableList() - val orgunitPrograms = iterables.bundleOrgUnitPrograms[orgUnitUid] val pendingTeis = bundle.commonParams().limit - iterables.teisCount iterables.bundleLimit = min(limitPerCombo, pendingTeis) @@ -201,15 +210,12 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( overwrite: Boolean, relatives: RelationshipItemRelatives ): TEIsWithPagingResult { - var result = TEIsWithPagingResult(0, successfulSync = true, emptyProgram = false) - - try { - result = getTEIsWithPaging(trackerQueryBuilder, combinationLimit, downloadedTEIs, overwrite, relatives) + return try { + getTEIsWithPaging(trackerQueryBuilder, combinationLimit, downloadedTEIs, overwrite, relatives) } catch (ignored: D2Error) { - result.successfulSync = false + // TODO Build result + TEIsWithPagingResult(0, false, null, false) } - - return result } @Throws(D2Error::class) @@ -231,7 +237,7 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( teiQueryBuilder.pageSize(paging.pageSize()) teiQueryBuilder.page(paging.page()) - val pageTEIs = apiCallExecutor.wrapSingle( + val pageTEIs = rxApiCallExecutor.wrapSingle( endpointCallFactory.getCall(teiQueryBuilder.build()), true ).blockingGet().items() @@ -248,7 +254,38 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( } } - return TEIsWithPagingResult(downloadedTEIsForCombination, true, emptyProgram) + return TEIsWithPagingResult(downloadedTEIsForCombination, true, null, emptyProgram) + } + + private fun queryByUids(bundle: TrackerQueryBundle, + overwrite: Boolean, + relatives: RelationshipItemRelatives): TEIsWithPagingResult { + val result = TEIsWithPagingResult(0, true, null, false) + val teiQuery = TrackerQuery.builder() + .commonParams(bundle.commonParams()) + .programStatus(bundle.programStatus()) + .orgUnit(null) + .build() + + for (uid in bundle.commonParams().uids) { + try { + val tei = apiCallExecutor.executeObjectCallWithErrorCatcher( + endpointCallFactory.getSingleCall(uid, teiQuery), TrackedEntityInstanceCallErrorCatcher() + ) + + if (tei != null) { + val isFullUpdate = teiQuery.commonParams().program == null + persistenceCallFactory.persistTEIs(listOf(tei), isFullUpdate, overwrite, relatives).blockingAwait() + result.teiCount++ + } + } catch (d2Error: D2Error) { + result.successfulSync = false + if (result.d2Error == null) { + result.d2Error = d2Error + } + } + } + return result } private fun getTEIsToPersist(paging: Paging, pageTEIs: List): List { @@ -264,7 +301,12 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( } } - private class TEIsWithPagingResult(var teiCount: Int, var successfulSync: Boolean, var emptyProgram: Boolean) + private class TEIsWithPagingResult( + var teiCount: Int, + var successfulSync: Boolean, + var d2Error: D2Error?, + var emptyProgram: Boolean + ) private class TEIsByProgramCount(val program: String?, var teiCount: Int) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.java deleted file mode 100644 index 31a131895f..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; -import org.hisp.dhis.android.core.arch.api.filters.internal.Which; -import org.hisp.dhis.android.core.arch.api.payload.internal.Payload; -import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse; -import org.hisp.dhis.android.core.imports.internal.TEIWebResponse; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; -import org.hisp.dhis.android.core.trackedentity.search.SearchGrid; - -import java.util.List; - -import io.reactivex.Single; -import retrofit2.Call; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.POST; -import retrofit2.http.Path; -import retrofit2.http.Query; - -public interface TrackedEntityInstanceService { - String TRACKED_ENTITY_INSTANCES = "trackedEntityInstances"; - - String TRACKED_ENTITY_INSTACE = "trackedEntityInstance"; - String OU = "ou"; - String OU_MODE = "ouMode"; - String FIELDS = "fields"; - String QUERY = "query"; - String ATTRIBUTE = "attribute"; - String PAGING = "paging"; - String PAGE = "page"; - String PAGE_SIZE = "pageSize"; - String PROGRAM = "program"; - String PROGRAM_START_DATE = "programStartDate"; - String PROGRAM_END_DATE = "programEndDate"; - String PROGRAM_STATUS = "programStatus"; - String FOLLOW_UP = "followUp"; - String EVENT_STATUS = "eventStatus"; - String EVENT_START_DATE = "eventStartDate"; - String EVENT_END_DATE = "eventEndDate"; - String TRACKED_ENTITY_TYPE = "trackedEntityType"; - String INCLUDE_ALL_ATTRIBUTES = "includeAllAttributes"; - String FILTER = "filter"; - String STRATEGY = "strategy"; - String LAST_UPDATED_START_DATE = "lastUpdatedStartDate"; - String REASON = "reason"; - String INCLUDE_DELETED = "includeDeleted"; - String ASSIGNED_USER_MODE = "assignedUserMode"; - String ORDER = "order"; - - Integer DEFAULT_PAGE_SIZE = 20; - - @POST(TRACKED_ENTITY_INSTANCES) - Call postTrackedEntityInstances( - @Body TrackedEntityInstancePayload trackedEntityInstances, - @Query(STRATEGY) String strategy); - - @GET(TRACKED_ENTITY_INSTANCES) - Single> getTrackedEntityInstance( - @Query(TRACKED_ENTITY_INSTACE) String trackedEntityInstance, - @Query(OU_MODE) String orgUnitMode, - @Query(FIELDS) @Which Fields fields, - @Query(INCLUDE_ALL_ATTRIBUTES) boolean includeAllAttributes, - @Query(INCLUDE_DELETED) boolean includeDeleted); - - @GET(TRACKED_ENTITY_INSTANCES) - Call> getTrackedEntityInstanceAsCall( - @Query(TRACKED_ENTITY_INSTACE) String trackedEntityInstance, - @Query(FIELDS) @Which Fields fields, - @Query(INCLUDE_ALL_ATTRIBUTES) boolean includeAllAttributes, - @Query(INCLUDE_DELETED) boolean includeDeleted); - - @GET(TRACKED_ENTITY_INSTANCES + "/{" + TRACKED_ENTITY_INSTACE + "}") - Call getTrackedEntityInstanceByProgram( - @Path(TRACKED_ENTITY_INSTACE) String trackedEntityInstanceUid, - @Query(PROGRAM) String program, - @Query(FIELDS) @Which Fields fields, - @Query(INCLUDE_ALL_ATTRIBUTES) boolean includeAllAttributes, - @Query(INCLUDE_DELETED) boolean includeDeleted); - - @GET(TRACKED_ENTITY_INSTANCES) - Single> getTrackedEntityInstances( - @Query(TRACKED_ENTITY_INSTACE) String trackedEntityInstances, - @Query(OU) String orgUnits, - @Query(OU_MODE) String orgUnitMode, - @Query(PROGRAM) String program, - @Query(PROGRAM_STATUS) String programStatus, - @Query(PROGRAM_START_DATE) String programStartDate, - @Query(FIELDS) @Which Fields fields, - @Query(PAGING) Boolean paging, - @Query(PAGE) int page, - @Query(PAGE_SIZE) int pageSize, - @Query(LAST_UPDATED_START_DATE) String lastUpdatedStartDate, - @Query(INCLUDE_ALL_ATTRIBUTES) boolean includeAllAttributes, - @Query(INCLUDE_DELETED) boolean includeDeleted); - - @GET(TRACKED_ENTITY_INSTANCES + "/query") - Call query( - @Query(OU) String orgUnit, - @Query(OU_MODE) String orgUnitMode, - @Query(PROGRAM) String program, - @Query(PROGRAM_START_DATE) String programStartDate, - @Query(PROGRAM_END_DATE) String programEndDate, - @Query(PROGRAM_STATUS) String enrollmentStatus, - @Query(FOLLOW_UP) Boolean followUp, - @Query(EVENT_START_DATE) String eventStartDate, - @Query(EVENT_END_DATE) String eventEndDate, - @Query(EVENT_STATUS) String eventStatus, - @Query(TRACKED_ENTITY_TYPE) String trackedEntityType, - @Query(QUERY) String query, - @Query(ATTRIBUTE) List attribute, - @Query(FILTER) List filter, - @Query(ASSIGNED_USER_MODE) String assignedUserMode, - @Query(ORDER) String order, - @Query(PAGING) Boolean paging, - @Query(PAGE) int page, - @Query(PAGE_SIZE) int pageSize); - - @POST("tracker/ownership/override") - Call breakGlass( - @Query(TRACKED_ENTITY_INSTACE) String trackedEntityInstance, - @Query(PROGRAM) String program, - @Query(REASON) String reason - ); -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt new file mode 100644 index 0000000000..8ffa8f70a5 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.api.fields.internal.Fields +import org.hisp.dhis.android.core.imports.internal.TEIWebResponse +import org.hisp.dhis.android.core.arch.api.filters.internal.Which +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.arch.api.payload.internal.Payload +import org.hisp.dhis.android.core.trackedentity.search.SearchGrid +import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import retrofit2.Call +import retrofit2.http.* + +internal interface TrackedEntityInstanceService { + @POST(TRACKED_ENTITY_INSTANCES) + fun postTrackedEntityInstances( + @Body trackedEntityInstances: TrackedEntityInstancePayload?, + @Query(STRATEGY) strategy: String? + ): Call + + @GET(TRACKED_ENTITY_INSTANCES) + fun getTrackedEntityInstance( + @Query(TRACKED_ENTITY_INSTACE) trackedEntityInstance: String?, + @Query(OU_MODE) orgUnitMode: String?, + @Query(FIELDS) @Which fields: Fields?, + @Query(INCLUDE_ALL_ATTRIBUTES) includeAllAttributes: Boolean, + @Query(INCLUDE_DELETED) includeDeleted: Boolean + ): Single> + + @GET(TRACKED_ENTITY_INSTANCES) + fun getTrackedEntityInstanceAsCall( + @Query(TRACKED_ENTITY_INSTACE) trackedEntityInstance: String?, + @Query(FIELDS) @Which fields: Fields?, + @Query(INCLUDE_ALL_ATTRIBUTES) includeAllAttributes: Boolean, + @Query(INCLUDE_DELETED) includeDeleted: Boolean + ): Call> + + @GET("$TRACKED_ENTITY_INSTANCES/{$TRACKED_ENTITY_INSTACE}") + fun getTrackedEntityInstanceByProgram( + @Path(TRACKED_ENTITY_INSTACE) trackedEntityInstanceUid: String, + @Query(PROGRAM) program: String, + @Query(FIELDS) @Which fields: Fields, + @Query(INCLUDE_ALL_ATTRIBUTES) includeAllAttributes: Boolean, + @Query(INCLUDE_DELETED) includeDeleted: Boolean + ): Call + + @GET("$TRACKED_ENTITY_INSTANCES/{$TRACKED_ENTITY_INSTACE}") + fun getSingleTrackedEntityInstance( + @Path(TRACKED_ENTITY_INSTACE) trackedEntityInstanceUid: String, + @Query(OU_MODE) orgUnitMode: String?, + @Query(PROGRAM) program: String?, + @Query(PROGRAM_STATUS) programStatus: String?, + @Query(PROGRAM_START_DATE) programStartDate: String?, + @Query(FIELDS) @Which fields: Fields, + @Query(INCLUDE_ALL_ATTRIBUTES) includeAllAttributes: Boolean, + @Query(INCLUDE_DELETED) includeDeleted: Boolean + ): Call + + @GET(TRACKED_ENTITY_INSTANCES) + fun getTrackedEntityInstances( + @Query(TRACKED_ENTITY_INSTACE) trackedEntityInstances: String?, + @Query(OU) orgUnits: String?, + @Query(OU_MODE) orgUnitMode: String?, + @Query(PROGRAM) program: String?, + @Query(PROGRAM_STATUS) programStatus: String?, + @Query(PROGRAM_START_DATE) programStartDate: String?, + @Query(FIELDS) @Which fields: Fields, + @Query(PAGING) paging: Boolean, + @Query(PAGE) page: Int, + @Query(PAGE_SIZE) pageSize: Int, + @Query(LAST_UPDATED_START_DATE) lastUpdatedStartDate: String?, + @Query(INCLUDE_ALL_ATTRIBUTES) includeAllAttributes: Boolean, + @Query(INCLUDE_DELETED) includeDeleted: Boolean + ): Single> + + @GET("$TRACKED_ENTITY_INSTANCES/query") + fun query( + @Query(OU) orgUnit: String?, + @Query(OU_MODE) orgUnitMode: String?, + @Query(PROGRAM) program: String?, + @Query(PROGRAM_START_DATE) programStartDate: String?, + @Query(PROGRAM_END_DATE) programEndDate: String?, + @Query(PROGRAM_STATUS) enrollmentStatus: String?, + @Query(FOLLOW_UP) followUp: Boolean?, + @Query(EVENT_START_DATE) eventStartDate: String?, + @Query(EVENT_END_DATE) eventEndDate: String?, + @Query(EVENT_STATUS) eventStatus: String?, + @Query(TRACKED_ENTITY_TYPE) trackedEntityType: String?, + @Query(QUERY) query: String?, + @Query(ATTRIBUTE) attribute: List?, + @Query(FILTER) filter: List?, + @Query(ASSIGNED_USER_MODE) assignedUserMode: String?, + @Query(ORDER) order: String?, + @Query(PAGING) paging: Boolean, + @Query(PAGE) page: Int, + @Query(PAGE_SIZE) pageSize: Int + ): Call + + @POST("tracker/ownership/override") + fun breakGlass( + @Query(TRACKED_ENTITY_INSTACE) trackedEntityInstance: String, + @Query(PROGRAM) program: String, + @Query(REASON) reason: String + ): Call + + companion object { + const val TRACKED_ENTITY_INSTANCES = "trackedEntityInstances" + const val TRACKED_ENTITY_INSTACE = "trackedEntityInstance" + const val OU = "ou" + const val OU_MODE = "ouMode" + const val FIELDS = "fields" + const val QUERY = "query" + const val ATTRIBUTE = "attribute" + const val PAGING = "paging" + const val PAGE = "page" + const val PAGE_SIZE = "pageSize" + const val PROGRAM = "program" + const val PROGRAM_START_DATE = "programStartDate" + const val PROGRAM_END_DATE = "programEndDate" + const val PROGRAM_STATUS = "programStatus" + const val FOLLOW_UP = "followUp" + const val EVENT_STATUS = "eventStatus" + const val EVENT_START_DATE = "eventStartDate" + const val EVENT_END_DATE = "eventEndDate" + const val TRACKED_ENTITY_TYPE = "trackedEntityType" + const val INCLUDE_ALL_ATTRIBUTES = "includeAllAttributes" + const val FILTER = "filter" + const val STRATEGY = "strategy" + const val LAST_UPDATED_START_DATE = "lastUpdatedStartDate" + const val REASON = "reason" + const val INCLUDE_DELETED = "includeDeleted" + const val ASSIGNED_USER_MODE = "assignedUserMode" + const val ORDER = "order" + const val DEFAULT_PAGE_SIZE = 20 + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt index 30f376d3af..3d112dd41e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt @@ -33,6 +33,7 @@ import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.payload.internal.Payload import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import retrofit2.Call @Reusable internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( @@ -74,4 +75,17 @@ internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( else -> null } } + + fun getSingleCall(uid: String, query: TrackerQuery): Call { + return trackedEntityInstanceService.getSingleTrackedEntityInstance( + uid, + query.commonParams().ouMode.name, + query.commonParams().program, + getProgramStatus(query), + getProgramStartDate(query), + TrackedEntityInstanceFields.allFields, + true, + true + ) + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt index ba50367f34..496a4435c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.trackedentity.internal import org.hisp.dhis.android.core.organisationunit.OrganisationUnitMode internal data class TrackerQueryCommonParams( + val uids: List, val programs: List, val program: String?, val startDate: String?, diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt index ca8fc790a3..5e5ab8dd58 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt @@ -259,6 +259,7 @@ internal class TrackerQueryFactoryCommonHelper @Inject constructor( ) return TrackerQueryCommonParams( + params.uids(), programs, programUid, getStartDate(programSettings, programUid, periodExtractor), diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt index 22cc4ce936..5a36621f1f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt @@ -33,7 +33,7 @@ import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatche import org.hisp.dhis.android.core.maintenance.D2ErrorCode import retrofit2.Response -class JobQueryErrorCatcher : APICallErrorCatcher { +internal class JobQueryErrorCatcher : APICallErrorCatcher { override fun mustBeStored(): Boolean = false diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt index 2bfa90807b..20ac07ff63 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt @@ -35,7 +35,7 @@ internal object TrackerQueryCommonParamsSamples { @JvmStatic fun get(): TrackerQueryCommonParams { return TrackerQueryCommonParams( - listOf(), null, "start-date", false, + listOf(), listOf(), null, "start-date", false, OrganisationUnitMode.ACCESSIBLE, listOf(), 50 ) } diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt index 483adb8c00..469d252cd6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt @@ -72,11 +72,10 @@ class TrackedEntityInstanceQueryFactoryShould { ) // Object to test - private var queryFactory: TrackerQueryBundleFactory? = null + private lateinit var queryFactory: TrackerQueryBundleFactory @Before @Throws(Exception::class) fun setUp() { - MockitoAnnotations.initMocks(this) whenever(userOrganisationUnitLinkStore.queryRootCaptureOrganisationUnitUids()).thenReturn(rootOrgUnits) whenever(userOrganisationUnitLinkStore.queryOrganisationUnitUidsByScope(any())) .thenReturn(captureOrgUnits) @@ -98,7 +97,7 @@ class TrackedEntityInstanceQueryFactoryShould { @Test fun create_a_single_bundle_when_global() { val params = ProgramDataDownloadParams.builder().build() - val queries = queryFactory!!.getQueries(params) + val queries = queryFactory.getQueries(params) assertThat(queries.size).isEqualTo(1) val query = queries[0] assertThat(query.orgUnits()).isEqualTo(rootOrgUnits) @@ -113,7 +112,7 @@ class TrackedEntityInstanceQueryFactoryShould { val settings = ProgramSetting.builder().uid(p1).enrollmentDateDownload(DownloadPeriod.LAST_3_MONTHS).build() whenever(programSettings.specificSettings()).thenReturn(mapOf(p1 to settings)) - val queries = queryFactory!!.getQueries(params) + val queries = queryFactory.getQueries(params) assertThat(queries.size).isEqualTo(2) for (query in queries) { if (query.commonParams().program != null) { @@ -126,7 +125,7 @@ class TrackedEntityInstanceQueryFactoryShould { @Test fun single_query_if_program_provided_by_user() { val params = ProgramDataDownloadParams.builder().limit(5000).program(p1).build() - val queries = queryFactory!!.getQueries(params) + val queries = queryFactory.getQueries(params) assertThat(queries.size).isEqualTo(1) for (query in queries) { assertThat(query.commonParams().program).isEqualTo(p1) @@ -141,7 +140,7 @@ class TrackedEntityInstanceQueryFactoryShould { val settings = ProgramSetting.builder().uid(p1).teiDownload(100).build() whenever(programSettings.specificSettings()).thenReturn(mapOf(p1 to settings)) - val queries = queryFactory!!.getQueries(params) + val queries = queryFactory.getQueries(params) assertThat(queries.size).isEqualTo(2) for (query in queries) { if (query.commonParams().program != null) { @@ -152,4 +151,13 @@ class TrackedEntityInstanceQueryFactoryShould { } } } + + @Test + fun single_query_if_tei_provided_by_user() { + val params = ProgramDataDownloadParams.builder().uids(listOf("tei_uid")).build() + + val queries = queryFactory.getQueries(params) + + + } } From 39b72ed57ce33f5e44f3d4f589a73b80f42e341a Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 22 Feb 2022 17:02:31 +0100 Subject: [PATCH 103/253] [ANDROSDK-1175] Catch Closed program error --- .../android/core/maintenance/D2ErrorCode.java | 1 + .../TrackedEntityInstanceCallErrorCatcher.kt | 8 +++- .../glass/closed_program_failure.json | 6 +++ .../glass/glass_protected_tei_failure.json | 2 +- .../event/internal/EventEndpointCallShould.kt | 1 + ... HttpMessageBreakGlassSuccessfulShould.kt} | 37 ++++++--------- .../HttpMessageClosedProgramShould.kt | 47 +++++++++++++++++++ .../HttpMessageOwnershipDeniedShould.kt | 47 +++++++++++++++++++ 8 files changed, 123 insertions(+), 26 deletions(-) create mode 100644 core/src/sharedTest/resources/trackedentity/glass/closed_program_failure.json rename core/src/test/java/org/hisp/dhis/android/core/imports/internal/{HttpMessageResponseShould.java => HttpMessageBreakGlassSuccessfulShould.kt} (64%) create mode 100644 core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt create mode 100644 core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java index 505cdfdeec..3041757c74 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java @@ -68,6 +68,7 @@ public enum D2ErrorCode { OBJECT_CANT_BE_INSERTED, ORGUNIT_NOT_IN_SEARCH_SCOPE, OWNERSHIP_ACCESS_DENIED, + PROGRAM_ACCESS_CLOSED, SEARCH_GRID_PARSE, SERVER_URL_NULL, SERVER_URL_MALFORMED, diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt index 6214695753..09e621e118 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt @@ -46,8 +46,12 @@ internal class TrackedEntityInstanceCallErrorCatcher : APICallErrorCatcher { response.errorBody()!!.string(), HttpMessageResponse::class.java ) - return if (parsed.httpStatusCode() == 401 && parsed.message() == "OWNERSHIP_ACCESS_DENIED") { - D2ErrorCode.OWNERSHIP_ACCESS_DENIED + return if (parsed.httpStatusCode() == 401) { + when(parsed.message()) { + "OWNERSHIP_ACCESS_DENIED" -> D2ErrorCode.OWNERSHIP_ACCESS_DENIED + "PROGRAM_ACCESS_CLOSED" -> D2ErrorCode.PROGRAM_ACCESS_CLOSED + else -> null + } } else { null } diff --git a/core/src/sharedTest/resources/trackedentity/glass/closed_program_failure.json b/core/src/sharedTest/resources/trackedentity/glass/closed_program_failure.json new file mode 100644 index 0000000000..c76e794b91 --- /dev/null +++ b/core/src/sharedTest/resources/trackedentity/glass/closed_program_failure.json @@ -0,0 +1,6 @@ +{ + "httpStatus": "Unauthorized", + "httpStatusCode": 401, + "status": "ERROR", + "message": "PROGRAM_ACCESS_CLOSED" +} \ No newline at end of file diff --git a/core/src/sharedTest/resources/trackedentity/glass/glass_protected_tei_failure.json b/core/src/sharedTest/resources/trackedentity/glass/glass_protected_tei_failure.json index 2b2a980346..6e8182bc42 100644 --- a/core/src/sharedTest/resources/trackedentity/glass/glass_protected_tei_failure.json +++ b/core/src/sharedTest/resources/trackedentity/glass/glass_protected_tei_failure.json @@ -2,5 +2,5 @@ "httpStatus": "Unauthorized", "httpStatusCode": 401, "status": "ERROR", - "message": "OWNERSHIP_ACCESS_DENIED", + "message": "OWNERSHIP_ACCESS_DENIED" } \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt index 809cb0f398..ca6a31e353 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt @@ -126,6 +126,7 @@ class EventEndpointCallShould { .orgUnit(orgUnit) .commonParams( TrackerQueryCommonParams( + listOf(), listOfNotNull(program), program, startDate, diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageResponseShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt similarity index 64% rename from core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageResponseShould.java rename to core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt index 5dfcd3e182..67daf31b4d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageResponseShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt @@ -25,32 +25,23 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.imports.internal -package org.hisp.dhis.android.core.imports.internal; +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.common.BaseObjectShould +import org.hisp.dhis.android.core.common.ObjectShould +import org.junit.Test -import org.hisp.dhis.android.core.common.BaseObjectShould; -import org.hisp.dhis.android.core.common.ObjectShould; -import org.junit.Test; +class HttpMessageBreakGlassSuccessfulShould : BaseObjectShould("trackedentity/glass/break_glass_successful.json"), + ObjectShould { -import java.io.IOException; -import java.text.ParseException; - -import static com.google.common.truth.Truth.assertThat; - -public class HttpMessageResponseShould extends BaseObjectShould implements ObjectShould { - - public HttpMessageResponseShould() { - super("trackedentity/glass/break_glass_successful.json"); - } - - @Override @Test - public void map_from_json_string() throws IOException, ParseException { - HttpMessageResponse response = objectMapper.readValue(jsonStream, HttpMessageResponse.class); + override fun map_from_json_string() { + val response = objectMapper.readValue(jsonStream, HttpMessageResponse::class.java) - assertThat(response.httpStatus()).isEqualTo("OK"); - assertThat(response.httpStatusCode()).isEqualTo(200); - assertThat(response.status()).isEqualTo("OK"); - assertThat(response.message()).isEqualTo("Temporary Ownership granted"); + assertThat(response.httpStatus()).isEqualTo("OK") + assertThat(response.httpStatusCode()).isEqualTo(200) + assertThat(response.status()).isEqualTo("OK") + assertThat(response.message()).isEqualTo("Temporary Ownership granted") } -} +} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt new file mode 100644 index 0000000000..f5a6fa04da --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.imports.internal + +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.common.BaseObjectShould +import org.hisp.dhis.android.core.common.ObjectShould +import org.junit.Test + +class HttpMessageClosedProgramShould : BaseObjectShould("trackedentity/glass/closed_program_failure.json"), + ObjectShould { + + @Test + override fun map_from_json_string() { + val response = objectMapper.readValue(jsonStream, HttpMessageResponse::class.java) + + assertThat(response.httpStatus()).isEqualTo("Unauthorized") + assertThat(response.httpStatusCode()).isEqualTo(401) + assertThat(response.status()).isEqualTo("ERROR") + assertThat(response.message()).isEqualTo("PROGRAM_ACCESS_CLOSED") + } +} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt new file mode 100644 index 0000000000..f056c71fad --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.imports.internal + +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.common.BaseObjectShould +import org.hisp.dhis.android.core.common.ObjectShould +import org.junit.Test + +class HttpMessageOwnershipDeniedShould : BaseObjectShould("trackedentity/glass/glass_protected_tei_failure.json"), + ObjectShould { + + @Test + override fun map_from_json_string() { + val response = objectMapper.readValue(jsonStream, HttpMessageResponse::class.java) + + assertThat(response.httpStatus()).isEqualTo("Unauthorized") + assertThat(response.httpStatusCode()).isEqualTo(401) + assertThat(response.status()).isEqualTo("ERROR") + assertThat(response.message()).isEqualTo("OWNERSHIP_ACCESS_DENIED") + } +} \ No newline at end of file From 98fc45e0f0673b9c1b8135e2ab022cebc3d9addf Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 22 Feb 2022 17:33:15 +0100 Subject: [PATCH 104/253] [ANDROSDK-1175] Expose ownership manager --- .../api/BreakTheGlassAPIShould.java | 5 +- .../trackedentity/TrackedEntityModule.java | 3 + .../TrackedEntityPackageDIModule.java | 2 + ...anceListDownloadAndPersistCallFactory.java | 144 -------------- .../internal/TrackedEntityInstanceService.kt | 18 -- .../internal/TrackedEntityModuleImpl.java | 181 ------------------ .../internal/TrackedEntityModuleImpl.kt | 100 ++++++++++ .../ownership/OwnershipEntityDIModule.kt | 49 +++++ .../ownership/OwnershipManager.kt | 36 ++++ .../ownership/OwnershipManagerImpl.kt | 56 ++++++ .../ownership/OwnershipService.kt | 49 +++++ 11 files changed, 299 insertions(+), 344 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceListDownloadAndPersistCallFactory.java delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java index 63df0a05a7..e26df16baf 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java @@ -48,6 +48,7 @@ import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstancePayload; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceService; +import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipService; import org.junit.Before; import java.io.IOException; @@ -95,6 +96,7 @@ public class BreakTheGlassAPIShould extends BaseRealIntegrationTest { private APICallExecutor executor; private TrackedEntityInstanceService trackedEntityInstanceService; + private OwnershipService ownershipService; private UidGenerator uidGenerator = new UidGeneratorImpl(); @@ -107,6 +109,7 @@ public void setUp() throws IOException { executor = APICallExecutorImpl.create(d2.databaseAdapter()); trackedEntityInstanceService = d2.retrofit().create(TrackedEntityInstanceService.class); + ownershipService = d2.retrofit().create(OwnershipService.class); try { login(); @@ -217,7 +220,7 @@ public void tei_with_enrollment_in_search_scope_in_protected_program_breaking_gl } HttpMessageResponse glassResponse = - executor.executeObjectCall(trackedEntityInstanceService.breakGlass(tei.uid(), program, "Sync")); + executor.executeObjectCall(ownershipService.breakGlass(tei.uid(), program, "Sync")); TEIWebResponse response2 = executor.executeObjectCallWithAcceptedErrorCodes(trackedEntityInstanceService .postTrackedEntityInstances(wrapPayload(tei), this.strategy), Collections.singletonList(409), diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java index f0e552e107..6691ff3225 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.trackedentity; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceDownloader; +import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipManager; import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryCollectionRepository; public interface TrackedEntityModule { @@ -48,4 +49,6 @@ public interface TrackedEntityModule { TrackedEntityInstanceDownloader trackedEntityInstanceDownloader(); TrackedEntityInstanceService trackedEntityInstanceService(); + + OwnershipManager ownershipManager(); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java index 6dea644930..fd13368fba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java @@ -50,6 +50,7 @@ import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityTypeCall; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityTypeEntityDIModule; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityTypeService; +import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipEntityDIModule; import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryEntityDIModule; import dagger.Module; @@ -58,6 +59,7 @@ import retrofit2.Retrofit; @Module(includes = { + OwnershipEntityDIModule.class, ReservedValueSettingDIModule.class, TrackedEntityAttributeEntityDIModule.class, TrackedEntityAttributeReservedValueEntityDIModule.class, diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceListDownloadAndPersistCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceListDownloadAndPersistCallFactory.java deleted file mode 100644 index 141e5b14fe..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceListDownloadAndPersistCallFactory.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor; -import org.hisp.dhis.android.core.arch.call.executors.internal.D2CallExecutor; -import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse; -import org.hisp.dhis.android.core.maintenance.D2Error; -import org.hisp.dhis.android.core.maintenance.D2ErrorCode; -import org.hisp.dhis.android.core.maintenance.internal.ForeignKeyCleaner; -import org.hisp.dhis.android.core.relationship.internal.RelationshipDownloadAndPersistCallFactory; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import javax.inject.Inject; - -import dagger.Reusable; -import io.reactivex.Single; -import retrofit2.Call; - -@Reusable -public final class TrackedEntityInstanceListDownloadAndPersistCallFactory { - - private final ForeignKeyCleaner foreignKeyCleaner; - private final RelationshipDownloadAndPersistCallFactory relationshipDownloadAndPersistCallFactory; - private final TrackedEntityInstancePersistenceCallFactory persistenceCallFactory; - private final D2CallExecutor d2CallExecutor; - private final APICallExecutor apiCallExecutor; - private final DHISVersionManager versionManager; - private final TrackedEntityInstanceService trackedEntityInstanceService; - - - @Inject - TrackedEntityInstanceListDownloadAndPersistCallFactory( - ForeignKeyCleaner foreignKeyCleaner, - RelationshipDownloadAndPersistCallFactory relationshipDownloadAndPersistCallFactory, - TrackedEntityInstancePersistenceCallFactory persistenceCallFactory, - D2CallExecutor d2CallExecutor, - APICallExecutor apiCallExecutor, - DHISVersionManager versionManager, - TrackedEntityInstanceService trackedEntityInstanceService) { - this.foreignKeyCleaner = foreignKeyCleaner; - this.relationshipDownloadAndPersistCallFactory = relationshipDownloadAndPersistCallFactory; - this.persistenceCallFactory = persistenceCallFactory; - this.d2CallExecutor = d2CallExecutor; - this.apiCallExecutor = apiCallExecutor; - this.versionManager = versionManager; - this.trackedEntityInstanceService = trackedEntityInstanceService; - } - - public Single> getCall(final Collection trackedEntityInstanceUids, - final String program) { - return Single.fromCallable(() -> downloadAndPersistBlocking(trackedEntityInstanceUids, program)); - } - - private List downloadAndPersistBlocking(final Collection trackedEntityInstanceUids, - final String program) throws D2Error { - - return d2CallExecutor.executeD2CallTransactionally(() -> { - if (trackedEntityInstanceUids == null) { - throw new IllegalArgumentException("UID list is null"); - } - - List teis = new ArrayList<>(); - - for (String uid : trackedEntityInstanceUids) { - List teiList; - teiList = downloadGlassAware(uid, program); - teis.addAll(teiList); - } - - - RelationshipItemRelatives relatives = new RelationshipItemRelatives(); - persistenceCallFactory.persistTEIs(teis, true, false, relatives).blockingGet(); - - if (!versionManager.is2_29()) { - relationshipDownloadAndPersistCallFactory.downloadAndPersist(relatives).blockingGet(); - } - - foreignKeyCleaner.cleanForeignKeyErrors(); - - return teis; - }); - } - - private List downloadGlassAware(String uid, String program) throws D2Error { - try { - TrackedEntityInstance tei = apiCallExecutor.executeObjectCallWithErrorCatcher(getTeiByProgram(uid, program), - new TrackedEntityInstanceCallErrorCatcher()); - - return Collections.singletonList(tei); - } catch (D2Error d2Error) { - if (!d2Error.errorCode().equals(D2ErrorCode.OWNERSHIP_ACCESS_DENIED)) { - return Collections.emptyList(); - } - - HttpMessageResponse breakGlassResponse = apiCallExecutor.executeObjectCall( - trackedEntityInstanceService.breakGlass(uid, program, "Android sync download")); - - if (!breakGlassResponse.httpStatusCode().equals(200)) { - return Collections.emptyList(); - } - - return Collections.singletonList(apiCallExecutor.executeObjectCall(getTeiByProgram(uid, program))); - } - } - - private Call getTeiByProgram(String uid, String program) { - return trackedEntityInstanceService.getTrackedEntityInstanceByProgram(uid, program, - TrackedEntityInstanceFields.allFields, true, true); - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt index 8ffa8f70a5..91611d8295 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt @@ -34,7 +34,6 @@ import org.hisp.dhis.android.core.arch.api.filters.internal.Which import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.arch.api.payload.internal.Payload import org.hisp.dhis.android.core.trackedentity.search.SearchGrid -import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import retrofit2.Call import retrofit2.http.* @@ -62,15 +61,6 @@ internal interface TrackedEntityInstanceService { @Query(INCLUDE_DELETED) includeDeleted: Boolean ): Call> - @GET("$TRACKED_ENTITY_INSTANCES/{$TRACKED_ENTITY_INSTACE}") - fun getTrackedEntityInstanceByProgram( - @Path(TRACKED_ENTITY_INSTACE) trackedEntityInstanceUid: String, - @Query(PROGRAM) program: String, - @Query(FIELDS) @Which fields: Fields, - @Query(INCLUDE_ALL_ATTRIBUTES) includeAllAttributes: Boolean, - @Query(INCLUDE_DELETED) includeDeleted: Boolean - ): Call - @GET("$TRACKED_ENTITY_INSTANCES/{$TRACKED_ENTITY_INSTACE}") fun getSingleTrackedEntityInstance( @Path(TRACKED_ENTITY_INSTACE) trackedEntityInstanceUid: String, @@ -123,13 +113,6 @@ internal interface TrackedEntityInstanceService { @Query(PAGE_SIZE) pageSize: Int ): Call - @POST("tracker/ownership/override") - fun breakGlass( - @Query(TRACKED_ENTITY_INSTACE) trackedEntityInstance: String, - @Query(PROGRAM) program: String, - @Query(REASON) reason: String - ): Call - companion object { const val TRACKED_ENTITY_INSTANCES = "trackedEntityInstances" const val TRACKED_ENTITY_INSTACE = "trackedEntityInstance" @@ -154,7 +137,6 @@ internal interface TrackedEntityInstanceService { const val FILTER = "filter" const val STRATEGY = "strategy" const val LAST_UPDATED_START_DATE = "lastUpdatedStartDate" - const val REASON = "reason" const val INCLUDE_DELETED = "includeDeleted" const val ASSIGNED_USER_MODE = "assignedUserMode" const val ORDER = "order" diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.java deleted file mode 100644 index 20fc04ba47..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeCollectionRepository; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeReservedValueManager; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValueCollectionRepository; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValueCollectionRepository; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceCollectionRepository; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceFilterCollectionRepository; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceService; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityModule; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityTypeAttributeCollectionRepository; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityTypeCollectionRepository; -import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryCollectionRepository; - -import java.util.Collection; -import java.util.List; - -import javax.inject.Inject; - -import dagger.Reusable; -import io.reactivex.Single; - -@Reusable -public final class TrackedEntityModuleImpl implements TrackedEntityModule { - - private final TrackedEntityTypeCollectionRepository trackedEntityTypes; - private final TrackedEntityInstanceCollectionRepository trackedEntityInstances; - private final TrackedEntityDataValueCollectionRepository trackedEntityDataValues; - private final TrackedEntityAttributeValueCollectionRepository trackedEntityAttributeValues; - private final TrackedEntityAttributeCollectionRepository trackedEntityAttributes; - private final TrackedEntityTypeAttributeCollectionRepository trackedEntityTypeAttributes; - private final TrackedEntityInstanceFilterCollectionRepository trackedEntityInstanceFilters; - - private final TrackedEntityInstanceQueryCollectionRepository trackedEntityInstanceQuery; - - private final TrackedEntityAttributeReservedValueManager reservedValueManager; - - private final TrackedEntityInstanceDownloader trackedEntityInstanceDownloader; - private final TrackedEntityInstanceListDownloadAndPersistCallFactory downloadAndPersistCallFactory; - - private final TrackedEntityInstanceService trackedEntityInstanceService; - - @Inject - TrackedEntityModuleImpl( - TrackedEntityTypeCollectionRepository trackedEntityTypes, - TrackedEntityInstanceCollectionRepository trackedEntityInstances, - TrackedEntityDataValueCollectionRepository trackedEntityDataValues, - TrackedEntityAttributeValueCollectionRepository trackedEntityAttributeValues, - TrackedEntityAttributeCollectionRepository trackedEntityAttributes, - TrackedEntityTypeAttributeCollectionRepository trackedEntityTypeAttributes, - TrackedEntityInstanceFilterCollectionRepository trackedEntityInstanceFilters, - TrackedEntityAttributeReservedValueManager reservedValueManager, - TrackedEntityInstanceDownloader trackedEntityInstanceDownloader, - TrackedEntityInstanceListDownloadAndPersistCallFactory downloadAndPersistCallFactory, - TrackedEntityInstanceQueryCollectionRepository trackedEntityInstanceQuery, - TrackedEntityInstanceService trackedEntityInstanceService) { - this.trackedEntityTypes = trackedEntityTypes; - this.trackedEntityInstances = trackedEntityInstances; - this.trackedEntityDataValues = trackedEntityDataValues; - this.trackedEntityAttributeValues = trackedEntityAttributeValues; - this.trackedEntityAttributes = trackedEntityAttributes; - this.trackedEntityTypeAttributes =trackedEntityTypeAttributes; - this.trackedEntityInstanceFilters = trackedEntityInstanceFilters; - this.reservedValueManager = reservedValueManager; - this.trackedEntityInstanceDownloader = trackedEntityInstanceDownloader; - this.downloadAndPersistCallFactory = downloadAndPersistCallFactory; - this.trackedEntityInstanceQuery = trackedEntityInstanceQuery; - this.trackedEntityInstanceService = trackedEntityInstanceService; - } - - /** - * Download and persists a list of TrackedEntityInstances for a specific program. This method is required to - * download glass-protected TrackedEntityInstances. - * - * @param uids List of TrackedEntityInstance uids - * @param program Program uid - * @return - - */ - Single> downloadTrackedEntityInstancesByUid(Collection uids, - String program) { - return downloadAndPersistCallFactory.getCall(uids, program); - } - - - /** - * Download and persists a list of TrackedEntityInstances for a specific program. This method is required to - * download glass-protected TrackedEntityInstances. - * - * @param uids List of TrackedEntityInstance uids - * @param program Program uid - * @return - - */ - List blockingDownloadTrackedEntityInstancesByUid(Collection uids, - String program) { - return downloadTrackedEntityInstancesByUid(uids, program).blockingGet(); - } - - @Override - public TrackedEntityTypeCollectionRepository trackedEntityTypes() { - return trackedEntityTypes; - } - - @Override - public TrackedEntityInstanceCollectionRepository trackedEntityInstances() { - return trackedEntityInstances; - } - - @Override - public TrackedEntityDataValueCollectionRepository trackedEntityDataValues() { - return trackedEntityDataValues; - } - - @Override - public TrackedEntityAttributeValueCollectionRepository trackedEntityAttributeValues() { - return trackedEntityAttributeValues; - } - - @Override - public TrackedEntityAttributeCollectionRepository trackedEntityAttributes() { - return trackedEntityAttributes; - } - - @Override - public TrackedEntityTypeAttributeCollectionRepository trackedEntityTypeAttributes() { - return trackedEntityTypeAttributes; - } - - @Override - public TrackedEntityInstanceFilterCollectionRepository trackedEntityInstanceFilters() { - return trackedEntityInstanceFilters; - } - - @Override - public TrackedEntityInstanceQueryCollectionRepository trackedEntityInstanceQuery() { - return trackedEntityInstanceQuery; - } - - @Override - public TrackedEntityAttributeReservedValueManager reservedValueManager() { - return reservedValueManager; - } - - @Override - public TrackedEntityInstanceDownloader trackedEntityInstanceDownloader() { - return trackedEntityInstanceDownloader; - } - - @Override - public TrackedEntityInstanceService trackedEntityInstanceService() { - return trackedEntityInstanceService; - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt new file mode 100644 index 0000000000..607259b410 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import dagger.Reusable +import org.hisp.dhis.android.core.trackedentity.* +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceService +import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipManager +import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryCollectionRepository +import javax.inject.Inject + +@Reusable +internal class TrackedEntityModuleImpl @Inject constructor( + private val trackedEntityTypes: TrackedEntityTypeCollectionRepository, + private val trackedEntityInstances: TrackedEntityInstanceCollectionRepository, + private val trackedEntityDataValues: TrackedEntityDataValueCollectionRepository, + private val trackedEntityAttributeValues: TrackedEntityAttributeValueCollectionRepository, + private val trackedEntityAttributes: TrackedEntityAttributeCollectionRepository, + private val trackedEntityTypeAttributes: TrackedEntityTypeAttributeCollectionRepository, + private val trackedEntityInstanceFilters: TrackedEntityInstanceFilterCollectionRepository, + private val reservedValueManager: TrackedEntityAttributeReservedValueManager, + private val trackedEntityInstanceDownloader: TrackedEntityInstanceDownloader, + private val trackedEntityInstanceQuery: TrackedEntityInstanceQueryCollectionRepository, + private val trackedEntityInstanceService: TrackedEntityInstanceService, + private val ownershipManager: OwnershipManager +) : TrackedEntityModule { + + override fun trackedEntityTypes(): TrackedEntityTypeCollectionRepository { + return trackedEntityTypes + } + + override fun trackedEntityInstances(): TrackedEntityInstanceCollectionRepository { + return trackedEntityInstances + } + + override fun trackedEntityDataValues(): TrackedEntityDataValueCollectionRepository { + return trackedEntityDataValues + } + + override fun trackedEntityAttributeValues(): TrackedEntityAttributeValueCollectionRepository { + return trackedEntityAttributeValues + } + + override fun trackedEntityAttributes(): TrackedEntityAttributeCollectionRepository { + return trackedEntityAttributes + } + + override fun trackedEntityTypeAttributes(): TrackedEntityTypeAttributeCollectionRepository { + return trackedEntityTypeAttributes + } + + override fun trackedEntityInstanceFilters(): TrackedEntityInstanceFilterCollectionRepository { + return trackedEntityInstanceFilters + } + + override fun trackedEntityInstanceQuery(): TrackedEntityInstanceQueryCollectionRepository { + return trackedEntityInstanceQuery + } + + override fun reservedValueManager(): TrackedEntityAttributeReservedValueManager { + return reservedValueManager + } + + override fun trackedEntityInstanceDownloader(): TrackedEntityInstanceDownloader { + return trackedEntityInstanceDownloader + } + + override fun trackedEntityInstanceService(): TrackedEntityInstanceService { + return trackedEntityInstanceService + } + + override fun ownershipManager(): OwnershipManager { + return ownershipManager + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt new file mode 100644 index 0000000000..cd73edf8e7 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.ownership + +import dagger.Module +import dagger.Provides +import dagger.Reusable +import retrofit2.Retrofit + +@Module +internal class OwnershipEntityDIModule { + + @Provides + @Reusable + fun empty(impl: OwnershipManagerImpl): OwnershipManager { + return impl + } + + @Provides + @Reusable + fun service(retrofit: Retrofit): OwnershipService { + return retrofit.create(OwnershipService::class.java) + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt new file mode 100644 index 0000000000..338898e12b --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.trackedentity.ownership + +import io.reactivex.Completable + +interface OwnershipManager { + fun breakGlass(trackedEntityInstance: String, program: String, reason: String): Completable + fun blockingBreakGlass(trackedEntityInstance: String, program: String, reason: String) +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt new file mode 100644 index 0000000000..2fade5ed4e --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.trackedentity.ownership + +import io.reactivex.Completable +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor +import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import javax.inject.Inject + +internal class OwnershipManagerImpl @Inject constructor( + private val apiCallExecutor: APICallExecutor, + private val ownershipService: OwnershipService +) : OwnershipManager { + + override fun breakGlass(trackedEntityInstance: String, program: String, reason: String): Completable { + return Completable.fromCallable { blockingBreakGlass(trackedEntityInstance, program, reason) } + } + + override fun blockingBreakGlass(trackedEntityInstance: String, program: String, reason: String) { + val breakGlassResponse: HttpMessageResponse = apiCallExecutor.executeObjectCall( + ownershipService.breakGlass(trackedEntityInstance, program, reason) + ) + + if (breakGlassResponse.httpStatusCode() == 200) { + // TODO Save record + } else { + throw RuntimeException("") + } + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt new file mode 100644 index 0000000000..f58d276374 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.ownership + +import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import retrofit2.Call +import retrofit2.http.POST +import retrofit2.http.Query + +internal interface OwnershipService { + + @POST("tracker/ownership/override") + fun breakGlass( + @Query(TRACKED_ENTITY_INSTACE) trackedEntityInstance: String, + @Query(PROGRAM) program: String, + @Query(REASON) reason: String + ): Call + + companion object { + const val TRACKED_ENTITY_INSTACE = "trackedEntityInstance" + const val PROGRAM = "program" + const val REASON = "reason" + } +} \ No newline at end of file From 1fa6dd7af3e18cb647d71afec589a77f06ba8607 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 23 Feb 2022 15:21:38 +0100 Subject: [PATCH 105/253] [ANDROSDK-1175] Adapt integration test --- ...tityInstanceCallMockIntegrationShould.java | 295 -------------- ...EntityInstanceCallMockIntegrationShould.kt | 236 ++++++++++++ ...PayloadGenerator29MockIntegrationShould.kt | 2 +- .../executors/internal/APICallErrorCatcher.kt | 4 +- .../core/mockwebserver/Dhis2MockServer.java | 17 +- .../TrackedEntityInstanceCallErrorCatcher.kt | 14 +- ...ackedEntityInstanceDownloadInternalCall.kt | 16 +- .../internal/TrackedEntityInstanceService.kt | 7 +- .../internal/TrackedEntityModuleImpl.kt | 5 +- .../ownership/OwnershipEntityDIModule.kt | 2 +- .../ownership/OwnershipManager.kt | 2 +- .../ownership/OwnershipManagerImpl.kt | 6 +- .../ownership/OwnershipService.kt | 2 +- .../tracked_entity_instance_payload.json | 155 -------- .../tracked_entity_instance_single.json | 151 ++++++++ ...ty_instance_with_removed_data_payload.json | 362 ------------------ ...ity_instance_with_removed_data_single.json | 358 +++++++++++++++++ .../HttpMessageBreakGlassSuccessfulShould.kt | 5 +- .../HttpMessageClosedProgramShould.kt | 5 +- .../HttpMessageOwnershipDeniedShould.kt | 5 +- ...TrackedEntityInstanceQueryFactoryShould.kt | 3 - 21 files changed, 801 insertions(+), 851 deletions(-) delete mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.java create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt delete mode 100644 core/src/sharedTest/resources/trackedentity/tracked_entity_instance_payload.json create mode 100644 core/src/sharedTest/resources/trackedentity/tracked_entity_instance_single.json delete mode 100644 core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_payload.json create mode 100644 core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_single.json diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.java deleted file mode 100644 index df1bb7cfbf..0000000000 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import androidx.annotation.NonNull; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import org.hisp.dhis.android.core.arch.api.payload.internal.Payload; -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder; -import org.hisp.dhis.android.core.arch.file.ResourcesFileReader; -import org.hisp.dhis.android.core.common.BaseIdentifiableObject; -import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor; -import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo; -import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore; -import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStoreImpl; -import org.hisp.dhis.android.core.event.Event; -import org.hisp.dhis.android.core.event.internal.EventStore; -import org.hisp.dhis.android.core.event.internal.EventStoreImpl; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor; -import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestMetadataEnqueable; -import org.junit.Test; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static com.google.common.truth.Truth.assertThat; - -public class TrackedEntityInstanceCallMockIntegrationShould extends BaseMockIntegrationTestMetadataEnqueable { - - @Test - public void download_tracked_entity_instance_enrollments_and_events() throws Exception { - - String teiUid = "PgmUFEQYZdt"; - - dhis2MockServer.enqueueSystemInfoResponse(); - dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_payload.json"); - - d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload(); - - verifyDownloadedTrackedEntityInstancePayload("trackedentity/tracked_entity_instance_payload.json", teiUid); - } - - @Test - public void remove_data_removed_in_server_after_second_download() - throws Exception { - String teiUid = "PgmUFEQYZdt"; - - dhis2MockServer.enqueueSystemInfoResponse(); - dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_payload.json"); - - d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload(); - - dhis2MockServer.enqueueSystemInfoResponse(); - dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_with_removed_data_payload.json"); - - d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload(); - - verifyDownloadedTrackedEntityInstancePayload("trackedentity/tracked_entity_instance_with_removed_data_payload.json", - teiUid); - } - - // @Test - public void download_glass_protected_tracked_entity_instance() throws Exception { - String teiUid = "PgmUFEQYZdt"; - - - dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance.json"); - // TODO disabled since it makes the previous test fail (enqueue too many). Review - //dhis2MockServer.enqueueMockResponse("trackedentity/glass/break_glass_successful.json"); - //dhis2MockServer.enqueueMockResponse(401, "trackedentity/glass/glass_protected_tei_failure.json"); - - // d2.trackedEntityModule().downloadTrackedEntityInstancesByUid(Lists.newArrayList(teiUid), "program").blockingGet(); - - verifyDownloadedTrackedEntityInstance("trackedentity/tracked_entity_instance.json", teiUid); - } - - private void verifyDownloadedTrackedEntityInstancePayload(String file, String teiUid) - throws IOException { - Payload parsed = parseTrackedEntityInstanceResponse(file, - new TypeReference>() { - }); - - TrackedEntityInstance expectedEnrollmentResponse = removeDeletedData(parsed.items().get(0)); - - TrackedEntityInstance downloadedTei = getDownloadedTei(teiUid); - - assertThat(downloadedTei.uid()).isEqualTo(expectedEnrollmentResponse.uid()); - assertThat(downloadedTei.trackedEntityAttributeValues().size()) - .isEqualTo(expectedEnrollmentResponse.trackedEntityAttributeValues().size()); - assertThat(getEnrollments(downloadedTei).size()) - .isEqualTo(getEnrollments(expectedEnrollmentResponse).size()); - } - - private void verifyDownloadedTrackedEntityInstance(String file, String teiUid) - throws IOException { - TrackedEntityInstance parsed = parseTrackedEntityInstanceResponse(file, - new TypeReference() { - }); - - TrackedEntityInstance expectedEnrollmentResponse = removeDeletedData(parsed); - - TrackedEntityInstance downloadedTei = getDownloadedTei(teiUid); - - assertThat(downloadedTei.uid()).isEqualTo(expectedEnrollmentResponse.uid()); - assertThat(downloadedTei.trackedEntityAttributeValues().size()) - .isEqualTo(expectedEnrollmentResponse.trackedEntityAttributeValues().size()); - } - - private M parseTrackedEntityInstanceResponse(String file, TypeReference reference) - throws IOException { - String expectedEventsResponseJson = new ResourcesFileReader().getStringFromFile(file); - - ObjectMapper objectMapper = new ObjectMapper().setDateFormat( - BaseIdentifiableObject.DATE_FORMAT.raw()); - - return objectMapper.readValue(expectedEventsResponseJson, reference); - } - - @NonNull - private TrackedEntityInstance removeDeletedData(TrackedEntityInstance trackedEntityInstance) { - Map> expectedEvents = new HashMap<>(); - List expectedEnrollments = new ArrayList<>(); - - - for (Enrollment enrollment : getEnrollments(trackedEntityInstance)) { - for (Event event : EnrollmentInternalAccessor.accessEvents(enrollment)) { - if (!event.deleted()) { - if (expectedEvents.get(event.enrollment()) == null) { - expectedEvents.put(event.enrollment(), new ArrayList<>()); - } - - expectedEvents.get(event.enrollment()).add(event); - - } - } - if (!enrollment.deleted()) { - enrollment = EnrollmentInternalAccessor.insertEvents(enrollment.toBuilder(), - expectedEvents.get(enrollment.uid())) - .trackedEntityInstance(trackedEntityInstance.uid()) - .build(); - - expectedEnrollments.add(enrollment); - } - } - - trackedEntityInstance = TrackedEntityInstanceInternalAccessor - .insertEnrollments(trackedEntityInstance.toBuilder(), expectedEnrollments) - .build(); - - return trackedEntityInstance; - } - - private TrackedEntityInstance getDownloadedTei(String teiUid) { - TrackedEntityInstance downloadedTei; - - TrackedEntityAttributeValueStore teiAttributeValuesStore = - TrackedEntityAttributeValueStoreImpl.create(databaseAdapter); - - List attValues = teiAttributeValuesStore.queryByTrackedEntityInstance(teiUid); - List attValuesWithoutIdAndTEI = new ArrayList<>(); - for (TrackedEntityAttributeValue trackedEntityAttributeValue : attValues) { - attValuesWithoutIdAndTEI.add( - trackedEntityAttributeValue.toBuilder().id(null).trackedEntityInstance(null).build()); - } - - TrackedEntityInstanceStore teiStore = TrackedEntityInstanceStoreImpl.create(databaseAdapter); - - downloadedTei = teiStore.selectByUid(teiUid); - - EnrollmentStore enrollmentStore = EnrollmentStoreImpl.create(databaseAdapter); - - List downloadedEnrollments = enrollmentStore.selectWhere(new WhereClauseBuilder() - .appendKeyStringValue(EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE, teiUid).build()); - List downloadedEnrollmentsWithoutIdAndDeleteFalse = new ArrayList<>(); - for (Enrollment enrollment : downloadedEnrollments) { - downloadedEnrollmentsWithoutIdAndDeleteFalse.add( - enrollment.toBuilder().id(null).deleted(false).notes(new ArrayList<>()).build()); - } - - EventStore eventStore = EventStoreImpl.create(databaseAdapter); - - List downloadedEventsWithoutValues = eventStore.selectAll(); - List downloadedEventsWithoutValuesAndDeleteFalse = new ArrayList<>(); - for (Event event : downloadedEventsWithoutValues) { - downloadedEventsWithoutValuesAndDeleteFalse.add( - event.toBuilder().id(null).deleted(false).build()); - } - - List dataValueList = TrackedEntityDataValueStoreImpl.create(databaseAdapter).selectAll(); - Map> downloadedValues = new HashMap<>(); - for (TrackedEntityDataValue dataValue : dataValueList) { - if (downloadedValues.get(dataValue.event()) == null) { - downloadedValues.put(dataValue.event(), new ArrayList<>()); - } - - downloadedValues.get(dataValue.event()).add(dataValue); - } - - return createTei(downloadedTei, attValuesWithoutIdAndTEI, downloadedEnrollmentsWithoutIdAndDeleteFalse, - downloadedEventsWithoutValuesAndDeleteFalse, downloadedValues); - } - - private TrackedEntityInstance createTei(TrackedEntityInstance downloadedTei, - List attValuesWithoutIdAndTEI, - List downloadedEnrollmentsWithoutEvents, - List downloadedEventsWithoutValues, - Map> downloadedValues) { - - Map> downloadedEvents = new HashMap<>(); - - List downloadedEnrollments = new ArrayList<>(); - - for (Event event : downloadedEventsWithoutValues) { - List trackedEntityDataValuesWithNullIdsAndEvents = new ArrayList<>(); - - for (TrackedEntityDataValue trackedEntityDataValue : downloadedValues.get(event.uid())) { - trackedEntityDataValuesWithNullIdsAndEvents.add( - trackedEntityDataValue.toBuilder().id(null).event(null).build()); - } - - event = event.toBuilder().trackedEntityDataValues(trackedEntityDataValuesWithNullIdsAndEvents).build(); - - if (downloadedEvents.get(event.enrollment()) == null) { - downloadedEvents.put(event.enrollment(), new ArrayList<>()); - } - - downloadedEvents.get(event.enrollment()).add(event); - } - - for (Enrollment enrollment : downloadedEnrollmentsWithoutEvents) { - enrollment = EnrollmentInternalAccessor.insertEvents(enrollment.toBuilder(), - downloadedEvents.get(enrollment.uid())) - .trackedEntityInstance(downloadedTei.uid()) - .build(); - - downloadedEnrollments.add(enrollment); - } - - List relationships = - TrackedEntityInstanceInternalAccessor.accessRelationships(downloadedTei); - relationships = relationships == null ? new ArrayList<>() : relationships; - - downloadedTei = - TrackedEntityInstanceInternalAccessor.insertEnrollments( - TrackedEntityInstanceInternalAccessor.insertRelationships( - downloadedTei.toBuilder(), relationships), - downloadedEnrollments) - .id(null) - .deleted(false) - .trackedEntityAttributeValues(attValuesWithoutIdAndTEI) - .build(); - - return downloadedTei; - } - - private List getEnrollments(TrackedEntityInstance trackedEntityInstance) { - return TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance); - } -} \ No newline at end of file diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt new file mode 100644 index 0000000000..158cc0174f --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import com.fasterxml.jackson.core.type.TypeReference +import com.fasterxml.jackson.databind.ObjectMapper +import com.google.common.truth.Truth.assertThat +import java.io.IOException +import junit.framework.Assert.fail +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.file.ResourcesFileReader +import org.hisp.dhis.android.core.arch.helpers.DateUtils +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor +import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStoreImpl +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.event.internal.EventStoreImpl +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue +import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor +import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestMetadataEnqueable +import org.junit.Test + +class TrackedEntityInstanceCallMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueable() { + + @Test + fun download_tracked_entity_instance_enrollments_and_events() { + val teiUid = "PgmUFEQYZdt" + + dhis2MockServer.enqueueSystemInfoResponse() + dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_single.json") + + d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + + verifyDownloadedTrackedEntityInstanceSingle("trackedentity/tracked_entity_instance_single.json", teiUid) + } + + @Test + fun remove_data_removed_in_server_after_second_download() { + val teiUid = "PgmUFEQYZdt" + + dhis2MockServer.enqueueSystemInfoResponse() + dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_single.json") + + d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + + dhis2MockServer.enqueueSystemInfoResponse() + dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_with_removed_data_single.json") + + d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + + verifyDownloadedTrackedEntityInstanceSingle( + "trackedentity/tracked_entity_instance_with_removed_data_single.json", + teiUid + ) + } + + @Test + fun download_glass_protected_tracked_entity_instance() { + val teiUid = "PgmUFEQYZdt" + + dhis2MockServer.enqueueSystemInfoResponse() + dhis2MockServer.enqueueMockResponse(401, "trackedentity/glass/glass_protected_tei_failure.json") + try { + d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + fail("It should throw ownership error") + } catch (e: RuntimeException) { + assertThat(e.cause is D2Error).isTrue() + assertThat((e.cause as D2Error).errorCode()).isEqualTo(D2ErrorCode.OWNERSHIP_ACCESS_DENIED) + } + + dhis2MockServer.enqueueMockResponse("trackedentity/glass/break_glass_successful.json") + d2.trackedEntityModule().ownershipManager().blockingBreakGlass(teiUid, "program_uid", "Reason") + + dhis2MockServer.enqueueSystemInfoResponse() + dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance.json") + d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + + verifyDownloadedTrackedEntityInstance("trackedentity/tracked_entity_instance.json", teiUid) + } + + private fun verifyDownloadedTrackedEntityInstanceSingle(file: String, teiUid: String) { + val parsed = parseTrackedEntityInstanceResponse( + file, + object : TypeReference() {} + ) + val expectedEnrollmentResponse = removeDeletedData(parsed) + val downloadedTei = getDownloadedTei(teiUid) + + assertThat(downloadedTei!!.uid()).isEqualTo(expectedEnrollmentResponse.uid()) + assertThat(downloadedTei.trackedEntityAttributeValues()!!.size) + .isEqualTo(expectedEnrollmentResponse.trackedEntityAttributeValues()!!.size) + assertThat(getEnrollments(downloadedTei).size).isEqualTo(getEnrollments(expectedEnrollmentResponse).size) + } + + @Throws(IOException::class) + private fun verifyDownloadedTrackedEntityInstance(file: String, teiUid: String) { + val parsed = parseTrackedEntityInstanceResponse( + file, + object : TypeReference() {} + ) + val expectedEnrollmentResponse = removeDeletedData(parsed) + val downloadedTei = getDownloadedTei(teiUid) + + assertThat(downloadedTei!!.uid()).isEqualTo(expectedEnrollmentResponse.uid()) + assertThat(downloadedTei.trackedEntityAttributeValues()!!.size) + .isEqualTo(expectedEnrollmentResponse.trackedEntityAttributeValues()!!.size) + } + + private fun parseTrackedEntityInstanceResponse(file: String, reference: TypeReference): M { + val expectedEventsResponseJson = ResourcesFileReader().getStringFromFile(file) + val objectMapper = ObjectMapper().setDateFormat(DateUtils.DATE_FORMAT.raw()) + return objectMapper.readValue(expectedEventsResponseJson, reference) + } + + private fun removeDeletedData(trackedEntityInstance: TrackedEntityInstance): TrackedEntityInstance { + val enrollments = getEnrollments(trackedEntityInstance) + .filter { it.deleted() != true } + .map { enrollment -> + val events = EnrollmentInternalAccessor.accessEvents(enrollment) + .filter { it?.deleted() != true } + + EnrollmentInternalAccessor.insertEvents(enrollment.toBuilder(), events) + .trackedEntityInstance(trackedEntityInstance.uid()) + .build() + } + + return TrackedEntityInstanceInternalAccessor + .insertEnrollments(trackedEntityInstance.toBuilder(), enrollments) + .build() + } + + private fun getDownloadedTei(teiUid: String): TrackedEntityInstance? { + val teiAttributeValuesStore = TrackedEntityAttributeValueStoreImpl.create(databaseAdapter) + val attValues = teiAttributeValuesStore.queryByTrackedEntityInstance(teiUid) + val attValuesWithoutIdAndTEI = attValues.map { + it.toBuilder().id(null).trackedEntityInstance(null).build() + } + + val teiStore = TrackedEntityInstanceStoreImpl.create(databaseAdapter) + val downloadedTei = teiStore.selectByUid(teiUid) + val enrollmentStore = EnrollmentStoreImpl.create(databaseAdapter) + val downloadedEnrollments = enrollmentStore.selectWhere( + WhereClauseBuilder() + .appendKeyStringValue(EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE, teiUid).build() + ) + val downloadedEnrollmentsWithoutIdAndDeleteFalse = downloadedEnrollments.map { + it.toBuilder().id(null).deleted(false).notes(ArrayList()).build() + } + + val eventStore = EventStoreImpl.create(databaseAdapter) + val downloadedEventsWithoutValues = eventStore.selectAll() + val downloadedEventsWithoutValuesAndDeleteFalse = downloadedEventsWithoutValues.map { + it.toBuilder().id(null).deleted(false).build() + } + + val dataValueList = TrackedEntityDataValueStoreImpl.create(databaseAdapter).selectAll() + val downloadedValues = dataValueList.groupBy { it.event() } + + return createTei( + downloadedTei, attValuesWithoutIdAndTEI, downloadedEnrollmentsWithoutIdAndDeleteFalse, + downloadedEventsWithoutValuesAndDeleteFalse, downloadedValues + ) + } + + private fun createTei( + downloadedTei: TrackedEntityInstance?, + attValuesWithoutIdAndTEI: List, + downloadedEnrollmentsWithoutEvents: List, + downloadedEventsWithoutValues: List, + downloadedValues: Map?> + ): TrackedEntityInstance? { + val downloadedEvents = downloadedEventsWithoutValues.map { event -> + val trackedEntityDataValuesWithNullIdsAndEvents = downloadedValues[event.uid()]!!.map { + it.toBuilder().id(null).event(null).build() + } + + event.toBuilder().trackedEntityDataValues(trackedEntityDataValuesWithNullIdsAndEvents).build() + }.groupBy { it.enrollment() } + + val downloadedEnrollments = downloadedEnrollmentsWithoutEvents.map { enrollment -> + EnrollmentInternalAccessor.insertEvents( + enrollment.toBuilder(), + downloadedEvents[enrollment.uid()] + ) + .trackedEntityInstance(downloadedTei!!.uid()) + .build() + } + + val relationships = TrackedEntityInstanceInternalAccessor.accessRelationships(downloadedTei) ?: ArrayList() + + return TrackedEntityInstanceInternalAccessor.insertEnrollments( + TrackedEntityInstanceInternalAccessor.insertRelationships( + downloadedTei!!.toBuilder(), relationships + ), + downloadedEnrollments + ) + .id(null) + .deleted(false) + .trackedEntityAttributeValues(attValuesWithoutIdAndTEI) + .build() + } + + private fun getEnrollments(trackedEntityInstance: TrackedEntityInstance?): List { + return TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance) + } +} diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt index 9a9aadad8c..97fe27691d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt @@ -149,7 +149,7 @@ class TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould : BasePay fun restore_payload_states_when_error_500() { storeTrackerData() - dhis2MockServer.enqueueMockResponse(500, "Internal Server Error") + dhis2MockServer.enqueueMockResponseText(500, "Internal Server Error") d2.trackedEntityModule().trackedEntityInstances().blockingUpload() val instance = teiStore.selectFirst() diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt index d0b8a2e4ab..4e4db04b90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt @@ -27,14 +27,14 @@ */ package org.hisp.dhis.android.core.arch.api.executors.internal +import java.io.IOException import kotlin.Throws import org.hisp.dhis.android.core.maintenance.D2ErrorCode import retrofit2.Response -import java.io.IOException internal interface APICallErrorCatcher { fun mustBeStored(): Boolean? @Throws(IOException::class) fun catchError(response: Response<*>): D2ErrorCode? -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java index 18bd3e1924..4f58002cfa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java @@ -137,16 +137,21 @@ public void enqueueMockResponse() { } public void enqueueMockResponse(int code) { - enqueueMockResponse(code, "{}"); + enqueueMockResponseText(code, "{}"); } - public void enqueueMockResponse(int code, String response) { + public void enqueueMockResponseText(int code, String response) { MockResponse mockResponse = new MockResponse(); mockResponse.setResponseCode(code); mockResponse.setBody(response); server.enqueue(mockResponse); } + public void enqueueMockResponse(int code, String fileName) { + MockResponse response = createMockResponse(fileName, code); + server.enqueue(response); + } + public void enqueueMockResponse(String fileName) { MockResponse response = createMockResponse(fileName); server.enqueue(response); @@ -316,12 +321,16 @@ public void enqueueMetadataResponses() { enqueueMockResponse(INDICATOR_TYPES_JSON); } - @NonNull private MockResponse createMockResponse(String fileName) { + return createMockResponse(fileName, OK_CODE); + } + + @NonNull + private MockResponse createMockResponse(String fileName, int code) { try { String body = fileReader.getStringFromFile(fileName); MockResponse response = new MockResponse(); - response.setResponseCode(OK_CODE); + response.setResponseCode(code); response.setBody(body); return response; } catch (IOException e) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt index 09e621e118..99d0be8e06 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt @@ -27,13 +27,13 @@ */ package org.hisp.dhis.android.core.trackedentity.internal -import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher +import java.io.IOException import kotlin.Throws -import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher +import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import org.hisp.dhis.android.core.maintenance.D2ErrorCode import retrofit2.Response -import java.io.IOException internal class TrackedEntityInstanceCallErrorCatcher : APICallErrorCatcher { override fun mustBeStored(): Boolean { @@ -46,8 +46,10 @@ internal class TrackedEntityInstanceCallErrorCatcher : APICallErrorCatcher { response.errorBody()!!.string(), HttpMessageResponse::class.java ) + + @Suppress("MagicNumber") return if (parsed.httpStatusCode() == 401) { - when(parsed.message()) { + when (parsed.message()) { "OWNERSHIP_ACCESS_DENIED" -> D2ErrorCode.OWNERSHIP_ACCESS_DENIED "PROGRAM_ACCESS_CLOSED" -> D2ErrorCode.PROGRAM_ACCESS_CLOSED else -> null @@ -56,4 +58,4 @@ internal class TrackedEntityInstanceCallErrorCatcher : APICallErrorCatcher { null } } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index 56fcc2de4b..72102bf283 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -30,12 +30,12 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable import io.reactivex.Observable -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import javax.inject.Inject import kotlin.math.ceil import kotlin.math.max import kotlin.math.min import kotlin.math.roundToInt +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.api.executors.internal.RxAPICallExecutor import org.hisp.dhis.android.core.arch.api.paging.internal.ApiPagingEngine import org.hisp.dhis.android.core.arch.api.paging.internal.Paging @@ -112,9 +112,9 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( iterationCount: Int ): Boolean { return params.limitByProgram() != true && - iterables.teisCount < bundle.commonParams().limit && - iterables.orgUnitsBundleToDownload.isNotEmpty() && - iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) + iterables.teisCount < bundle.commonParams().limit && + iterables.orgUnitsBundleToDownload.isNotEmpty() && + iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) } private fun iterateBundle( @@ -257,9 +257,11 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( return TEIsWithPagingResult(downloadedTEIsForCombination, true, null, emptyProgram) } - private fun queryByUids(bundle: TrackerQueryBundle, - overwrite: Boolean, - relatives: RelationshipItemRelatives): TEIsWithPagingResult { + private fun queryByUids( + bundle: TrackerQueryBundle, + overwrite: Boolean, + relatives: RelationshipItemRelatives + ): TEIsWithPagingResult { val result = TEIsWithPagingResult(0, true, null, false) val teiQuery = TrackerQuery.builder() .commonParams(bundle.commonParams()) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt index 91611d8295..d5e1d6bedb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt @@ -29,14 +29,15 @@ package org.hisp.dhis.android.core.trackedentity.internal import io.reactivex.Single import org.hisp.dhis.android.core.arch.api.fields.internal.Fields -import org.hisp.dhis.android.core.imports.internal.TEIWebResponse import org.hisp.dhis.android.core.arch.api.filters.internal.Which -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.arch.api.payload.internal.Payload +import org.hisp.dhis.android.core.imports.internal.TEIWebResponse +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.search.SearchGrid import retrofit2.Call import retrofit2.http.* +@Suppress("LongParameterList") internal interface TrackedEntityInstanceService { @POST(TRACKED_ENTITY_INSTANCES) fun postTrackedEntityInstances( @@ -142,4 +143,4 @@ internal interface TrackedEntityInstanceService { const val ORDER = "order" const val DEFAULT_PAGE_SIZE = 20 } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt index 607259b410..753e07b9f6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt @@ -28,13 +28,14 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.trackedentity.* import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceService import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipManager import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryCollectionRepository -import javax.inject.Inject @Reusable +@Suppress("LongParameterList", "TooManyFunctions") internal class TrackedEntityModuleImpl @Inject constructor( private val trackedEntityTypes: TrackedEntityTypeCollectionRepository, private val trackedEntityInstances: TrackedEntityInstanceCollectionRepository, @@ -97,4 +98,4 @@ internal class TrackedEntityModuleImpl @Inject constructor( override fun ownershipManager(): OwnershipManager { return ownershipManager } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt index cd73edf8e7..f5bb5676dc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt @@ -46,4 +46,4 @@ internal class OwnershipEntityDIModule { fun service(retrofit: Retrofit): OwnershipService { return retrofit.create(OwnershipService::class.java) } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt index 338898e12b..8f3d424d7d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManager.kt @@ -33,4 +33,4 @@ import io.reactivex.Completable interface OwnershipManager { fun breakGlass(trackedEntityInstance: String, program: String, reason: String): Completable fun blockingBreakGlass(trackedEntityInstance: String, program: String, reason: String) -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt index 2fade5ed4e..f6b8d3ea39 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt @@ -29,9 +29,9 @@ package org.hisp.dhis.android.core.trackedentity.ownership import io.reactivex.Completable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse -import javax.inject.Inject internal class OwnershipManagerImpl @Inject constructor( private val apiCallExecutor: APICallExecutor, @@ -47,10 +47,12 @@ internal class OwnershipManagerImpl @Inject constructor( ownershipService.breakGlass(trackedEntityInstance, program, reason) ) + @Suppress("MagicNumber") if (breakGlassResponse.httpStatusCode() == 200) { // TODO Save record } else { + @Suppress("TooGenericExceptionThrown") throw RuntimeException("") } } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt index f58d276374..e56941fe09 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt @@ -46,4 +46,4 @@ internal interface OwnershipService { const val PROGRAM = "program" const val REASON = "reason" } -} \ No newline at end of file +} diff --git a/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_payload.json b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_payload.json deleted file mode 100644 index f6f46928a1..0000000000 --- a/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_payload.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "trackedEntityInstances":[ - { - "lastUpdated": "2015-10-15T11:32:27.242", - "created": "2014-06-06T20:44:21.375", - "trackedEntityType": "nEenWmSyUEp", - "orgUnit": "DiszpKrYNg8", - "trackedEntityInstance": "PgmUFEQYZdt", - "coordinates": "[9,9]", - "geometry": { - "type": "Point", - "coordinates": [ - 9.0, - 9.0 - ] - }, - "deleted": false, - "relationships": [], - "attributes": [ - { - "lastUpdated": "2017-12-12T07:35:12.904", - "created": "2017-12-12T07:35:11.366", - "attribute": "cejWyOfXge6", - "value": "1972-11-08" - } - ], - "enrollments": [ - { - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "p6xHz0sbDlx", - "trackedEntityInstance": "PgmUFEQYZdt", - "enrollmentDate": "2017-12-12T01:00:00.000", - "followup": false, - "deleted": false, - "incidentDate": "2017-12-12T07:33:52.993", - "status": "ACTIVE", - "events": [ - { - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T00:00:00.000", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "p6xHz0sbDlx", - "event": "yVTi4EG84wp", - "eventDate": "2017-12-12T00:00:00.000", - "status": "SCHEDULE", - "created": "2017-12-12T07:33:53.613", - "lastUpdated": "2017-12-12T07:35:11.917", - "deleted": false, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:35:12.167", - "storedBy": "android", - "created": "2017-12-12T07:35:12.166", - "dataElement": "sWoqcoByYmD", - "value": "false", - "providedElsewhere": false - } - ] - } - ], - "notes": [] - }, - { - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "trackedEntityInstance": "PgmUFEQYZdt", - "enrollmentDate": "2017-01-20T00:00:00.000", - "followup": false, - "deleted": false, - "incidentDate": "2017-01-20T00:00:00.000", - "status": "CANCELLED", - "events": [ - { - "attributeOptionCombo": "bRowv6yZOF2", - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T07:30:12.535", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "event": "AUEQ24HuW4H", - "eventDate": "2017-01-20T00:00:00.000", - "status": "ACTIVE", - "created": "2017-01-20T12:14:46.389", - "lastUpdated": "2017-12-12T07:30:12.536", - "deleted": false, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:30:12.541", - "storedBy": "android", - "created": "2017-12-12T07:30:12.541", - "dataElement": "sWoqcoByYmD", - "value": "medication 1", - "providedElsewhere": false - } - ] - }, - { - "attributeOptionCombo": "bRowv6yZOF2", - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T07:30:41.755", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "event": "LN9rXOMdkDM", - "eventDate": "2017-12-12T00:00:00.000", - "status": "ACTIVE", - "created": "2017-12-12T07:30:16.658", - "lastUpdated": "2017-12-12T07:30:41.756", - "deleted": false, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:30:41.762", - "storedBy": "android", - "created": "2017-12-12T07:30:41.762", - "dataElement": "sWoqcoByYmD", - "value": "Sufficiently immunized", - "providedElsewhere": false - } - ] - }, - { - "attributeOptionCombo": "bRowv6yZOF2", - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T07:32:16.006", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "event": "S4OBgYm4bOP", - "eventDate": "2017-12-12T00:00:00.000", - "status": "COMPLETED", - "created": "2017-12-12T07:31:30.874", - "completedDate": "2017-12-12T00:00:00.000", - "lastUpdated": "2017-12-12T07:32:16.012", - "deleted": false, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:32:16.046", - "storedBy": "android", - "created": "2017-12-12T07:31:58.340", - "dataElement": "sWoqcoByYmD", - "value": "false", - "providedElsewhere": false - } - ] - } - ], - "notes": [] - } - ] - } - ] -} diff --git a/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_single.json b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_single.json new file mode 100644 index 0000000000..8e5908a096 --- /dev/null +++ b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_single.json @@ -0,0 +1,151 @@ +{ + "lastUpdated": "2015-10-15T11:32:27.242", + "created": "2014-06-06T20:44:21.375", + "trackedEntityType": "nEenWmSyUEp", + "orgUnit": "DiszpKrYNg8", + "trackedEntityInstance": "PgmUFEQYZdt", + "coordinates": "[9,9]", + "geometry": { + "type": "Point", + "coordinates": [ + 9.0, + 9.0 + ] + }, + "deleted": false, + "relationships": [], + "attributes": [ + { + "lastUpdated": "2017-12-12T07:35:12.904", + "created": "2017-12-12T07:35:11.366", + "attribute": "cejWyOfXge6", + "value": "1972-11-08" + } + ], + "enrollments": [ + { + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "p6xHz0sbDlx", + "trackedEntityInstance": "PgmUFEQYZdt", + "enrollmentDate": "2017-12-12T01:00:00.000", + "followup": false, + "deleted": false, + "incidentDate": "2017-12-12T07:33:52.993", + "status": "ACTIVE", + "events": [ + { + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T00:00:00.000", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "p6xHz0sbDlx", + "event": "yVTi4EG84wp", + "eventDate": "2017-12-12T00:00:00.000", + "status": "SCHEDULE", + "created": "2017-12-12T07:33:53.613", + "lastUpdated": "2017-12-12T07:35:11.917", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:35:12.167", + "storedBy": "android", + "created": "2017-12-12T07:35:12.166", + "dataElement": "sWoqcoByYmD", + "value": "false", + "providedElsewhere": false + } + ] + } + ], + "notes": [] + }, + { + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "trackedEntityInstance": "PgmUFEQYZdt", + "enrollmentDate": "2017-01-20T00:00:00.000", + "followup": false, + "deleted": false, + "incidentDate": "2017-01-20T00:00:00.000", + "status": "CANCELLED", + "events": [ + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:30:12.535", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "AUEQ24HuW4H", + "eventDate": "2017-01-20T00:00:00.000", + "status": "ACTIVE", + "created": "2017-01-20T12:14:46.389", + "lastUpdated": "2017-12-12T07:30:12.536", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:30:12.541", + "storedBy": "android", + "created": "2017-12-12T07:30:12.541", + "dataElement": "sWoqcoByYmD", + "value": "medication 1", + "providedElsewhere": false + } + ] + }, + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:30:41.755", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "LN9rXOMdkDM", + "eventDate": "2017-12-12T00:00:00.000", + "status": "ACTIVE", + "created": "2017-12-12T07:30:16.658", + "lastUpdated": "2017-12-12T07:30:41.756", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:30:41.762", + "storedBy": "android", + "created": "2017-12-12T07:30:41.762", + "dataElement": "sWoqcoByYmD", + "value": "Sufficiently immunized", + "providedElsewhere": false + } + ] + }, + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:32:16.006", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "S4OBgYm4bOP", + "eventDate": "2017-12-12T00:00:00.000", + "status": "COMPLETED", + "created": "2017-12-12T07:31:30.874", + "completedDate": "2017-12-12T00:00:00.000", + "lastUpdated": "2017-12-12T07:32:16.012", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:32:16.046", + "storedBy": "android", + "created": "2017-12-12T07:31:58.340", + "dataElement": "sWoqcoByYmD", + "value": "false", + "providedElsewhere": false + } + ] + } + ], + "notes": [] + } + ] +} diff --git a/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_payload.json b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_payload.json deleted file mode 100644 index 40d84d9128..0000000000 --- a/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_payload.json +++ /dev/null @@ -1,362 +0,0 @@ -{ - "trackedEntityInstances": [ - { - "trackedEntityType": "nEenWmSyUEp", - "orgUnit": "DiszpKrYNg8", - "trackedEntityInstance": "PgmUFEQYZdt", - "deleted": false, - "relationships": [], - "attributes": [ - { - "lastUpdated": "2017-12-12T07:35:12.904", - "created": "2017-12-12T07:35:11.366", - "attribute": "cejWyOfXge6", - "value": "1972-11-08" - } - ], - "enrollments": [ - { - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "p6xHz0sbDlx", - "trackedEntityInstance": "PgmUFEQYZdt", - "enrollmentDate": "2017-12-12T01:00:00.000", - "followup": false, - "deleted": true, - "incidentDate": "2017-12-12T07:33:52.993", - "status": "ACTIVE", - "events": [ - { - "attributeOptionCombo": "bRowv6yZOF2", - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T00:00:00.000", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "p6xHz0sbDlx", - "event": "yVTi4EG84wp", - "eventDate": "2017-12-12T00:00:00.000", - "status": "SCHEDULE", - "created": "2017-12-12T07:33:53.613", - "lastUpdated": "2017-12-12T07:35:11.917", - "deleted": false, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:35:12.167", - "storedBy": "android", - "created": "2017-12-12T07:35:12.166", - "dataElement": "dpOtt7HUQXa", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:35:12.135", - "storedBy": "android", - "created": "2017-12-12T07:35:12.135", - "dataElement": "de0FEHSIoxh", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:35:12.106", - "storedBy": "android", - "created": "2017-12-12T07:35:12.106", - "dataElement": "QFX1FLWBwtq", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:35:12.078", - "storedBy": "android", - "created": "2017-12-12T07:35:12.078", - "dataElement": "E6QaDtrQP5e", - "value": "false", - "providedElsewhere": false - } - ] - } - ], - "notes": [] - }, - { - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "trackedEntityInstance": "PgmUFEQYZdt", - "enrollmentDate": "2017-01-20T00:00:00.000", - "followup": false, - "deleted": false, - "incidentDate": "2017-01-20T00:00:00.000", - "status": "CANCELLED", - "events": [ - { - "attributeOptionCombo": "bRowv6yZOF2", - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T07:30:12.535", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "event": "AUEQ24HuW4H", - "eventDate": "2017-01-20T00:00:00.000", - "status": "ACTIVE", - "created": "2017-01-20T12:14:46.389", - "lastUpdated": "2017-12-12T07:30:12.536", - "deleted": true, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:30:12.541", - "storedBy": "android", - "created": "2017-12-12T07:30:12.541", - "dataElement": "fNnOPQj83jz", - "value": "medication 1", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:29:51.899", - "storedBy": "android", - "created": "2017-12-12T07:29:49.334", - "dataElement": "QFX1FLWBwtq", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:29:46.232", - "storedBy": "android", - "created": "2017-12-12T07:29:43.703", - "dataElement": "de0FEHSIoxh", - "value": "false", - "providedElsewhere": false - } - ] - }, - { - "attributeOptionCombo": "bRowv6yZOF2", - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T07:30:41.755", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "event": "LN9rXOMdkDM", - "eventDate": "2017-12-12T00:00:00.000", - "status": "ACTIVE", - "created": "2017-12-12T07:30:16.658", - "lastUpdated": "2017-12-12T07:30:41.756", - "deleted": false, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:30:41.762", - "storedBy": "android", - "created": "2017-12-12T07:30:41.762", - "dataElement": "sUX4i7QqbXF", - "value": "Sufficiently immunized", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:39.387", - "storedBy": "android", - "created": "2017-12-12T07:30:39.387", - "dataElement": "sWoqcoByYmD", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:38.758", - "storedBy": "android", - "created": "2017-12-12T07:30:38.758", - "dataElement": "SojR4V7A8u2", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:38.061", - "storedBy": "android", - "created": "2017-12-12T07:30:38.061", - "dataElement": "cz5DN6BVVeW", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:37.398", - "storedBy": "android", - "created": "2017-12-12T07:30:37.398", - "dataElement": "PCiOYWXZq2E", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:35.592", - "storedBy": "android", - "created": "2017-12-12T07:30:35.592", - "dataElement": "VXdfPQRXKiA", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:35.012", - "storedBy": "android", - "created": "2017-12-12T07:30:35.012", - "dataElement": "BmaBjPQX8ME", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:34.278", - "storedBy": "android", - "created": "2017-12-12T07:30:34.278", - "dataElement": "YsVHgzQCwmr", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:33.724", - "storedBy": "android", - "created": "2017-12-12T07:30:33.724", - "dataElement": "yq1qT0NdjYQ", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:30.881", - "storedBy": "android", - "created": "2017-12-12T07:30:30.881", - "dataElement": "z8m3llJYuh9", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:29.214", - "storedBy": "android", - "created": "2017-12-12T07:30:29.214", - "dataElement": "mGHBXrtqSut", - "value": "2017-12-12", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:26.049", - "storedBy": "android", - "created": "2017-12-12T07:30:26.049", - "dataElement": "Mfq2Y9N21KZ", - "value": "1", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:30:22.015", - "storedBy": "android", - "created": "2017-12-12T07:30:22.015", - "dataElement": "Itl05OEupgQ", - "value": "Positive", - "providedElsewhere": false - } - ] - }, - { - "attributeOptionCombo": "bRowv6yZOF2", - "programStage": "dBwrot7S420", - "dueDate": "2017-12-12T07:32:16.006", - "orgUnit": "DiszpKrYNg8", - "program": "lxAQ7Zs9VYR", - "enrollment": "WKPoiZxZxNG", - "event": "S4OBgYm4bOP", - "eventDate": "2017-12-12T00:00:00.000", - "status": "COMPLETED", - "created": "2017-12-12T07:31:30.874", - "completedDate": "2017-12-12T00:00:00.000", - "lastUpdated": "2017-12-12T07:32:16.012", - "deleted": false, - "dataValues": [ - { - "lastUpdated": "2017-12-12T07:32:16.046", - "storedBy": "android", - "created": "2017-12-12T07:31:58.340", - "dataElement": "ytV9rX4ADnn", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.042", - "storedBy": "android", - "created": "2017-12-12T07:31:57.626", - "dataElement": "lcaG1Pnh27I", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.038", - "storedBy": "android", - "created": "2017-12-12T07:31:57.233", - "dataElement": "vTEkiy8F3yj", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.035", - "storedBy": "android", - "created": "2017-12-12T07:31:55.466", - "dataElement": "rHgrmXfa57b", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.032", - "storedBy": "android", - "created": "2017-12-12T07:31:54.604", - "dataElement": "DCUDZxqOxUo", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.029", - "storedBy": "android", - "created": "2017-12-12T07:31:54.197", - "dataElement": "w7enwqzx90I", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.025", - "storedBy": "android", - "created": "2017-12-12T07:31:54.088", - "dataElement": "YKXci7Sm0Zq", - "value": "2017-12-12", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.021", - "storedBy": "android", - "created": "2017-12-12T07:31:44.394", - "dataElement": "nhW3SZX9JaN", - "value": "Ongoing", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.016", - "storedBy": "android", - "created": "2017-12-12T07:31:42.534", - "dataElement": "cKBSkBB3Mt4", - "value": "true", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.053", - "storedBy": "android", - "created": "2017-12-12T07:32:00.443", - "dataElement": "sWoqcoByYmD", - "value": "false", - "providedElsewhere": false - }, - { - "lastUpdated": "2017-12-12T07:32:16.049", - "storedBy": "android", - "created": "2017-12-12T07:31:59.712", - "dataElement": "NPZPVg2rVh4", - "value": "false", - "providedElsewhere": false - } - ] - } - ], - "notes": [] - } - ] - } - ] -} diff --git a/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_single.json b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_single.json new file mode 100644 index 0000000000..15f9f939bf --- /dev/null +++ b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_with_removed_data_single.json @@ -0,0 +1,358 @@ +{ + "trackedEntityType": "nEenWmSyUEp", + "orgUnit": "DiszpKrYNg8", + "trackedEntityInstance": "PgmUFEQYZdt", + "deleted": false, + "relationships": [], + "attributes": [ + { + "lastUpdated": "2017-12-12T07:35:12.904", + "created": "2017-12-12T07:35:11.366", + "attribute": "cejWyOfXge6", + "value": "1972-11-08" + } + ], + "enrollments": [ + { + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "p6xHz0sbDlx", + "trackedEntityInstance": "PgmUFEQYZdt", + "enrollmentDate": "2017-12-12T01:00:00.000", + "followup": false, + "deleted": true, + "incidentDate": "2017-12-12T07:33:52.993", + "status": "ACTIVE", + "events": [ + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T00:00:00.000", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "p6xHz0sbDlx", + "event": "yVTi4EG84wp", + "eventDate": "2017-12-12T00:00:00.000", + "status": "SCHEDULE", + "created": "2017-12-12T07:33:53.613", + "lastUpdated": "2017-12-12T07:35:11.917", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:35:12.167", + "storedBy": "android", + "created": "2017-12-12T07:35:12.166", + "dataElement": "dpOtt7HUQXa", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:35:12.135", + "storedBy": "android", + "created": "2017-12-12T07:35:12.135", + "dataElement": "de0FEHSIoxh", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:35:12.106", + "storedBy": "android", + "created": "2017-12-12T07:35:12.106", + "dataElement": "QFX1FLWBwtq", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:35:12.078", + "storedBy": "android", + "created": "2017-12-12T07:35:12.078", + "dataElement": "E6QaDtrQP5e", + "value": "false", + "providedElsewhere": false + } + ] + } + ], + "notes": [] + }, + { + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "trackedEntityInstance": "PgmUFEQYZdt", + "enrollmentDate": "2017-01-20T00:00:00.000", + "followup": false, + "deleted": false, + "incidentDate": "2017-01-20T00:00:00.000", + "status": "CANCELLED", + "events": [ + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:30:12.535", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "AUEQ24HuW4H", + "eventDate": "2017-01-20T00:00:00.000", + "status": "ACTIVE", + "created": "2017-01-20T12:14:46.389", + "lastUpdated": "2017-12-12T07:30:12.536", + "deleted": true, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:30:12.541", + "storedBy": "android", + "created": "2017-12-12T07:30:12.541", + "dataElement": "fNnOPQj83jz", + "value": "medication 1", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:29:51.899", + "storedBy": "android", + "created": "2017-12-12T07:29:49.334", + "dataElement": "QFX1FLWBwtq", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:29:46.232", + "storedBy": "android", + "created": "2017-12-12T07:29:43.703", + "dataElement": "de0FEHSIoxh", + "value": "false", + "providedElsewhere": false + } + ] + }, + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:30:41.755", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "LN9rXOMdkDM", + "eventDate": "2017-12-12T00:00:00.000", + "status": "ACTIVE", + "created": "2017-12-12T07:30:16.658", + "lastUpdated": "2017-12-12T07:30:41.756", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:30:41.762", + "storedBy": "android", + "created": "2017-12-12T07:30:41.762", + "dataElement": "sUX4i7QqbXF", + "value": "Sufficiently immunized", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:39.387", + "storedBy": "android", + "created": "2017-12-12T07:30:39.387", + "dataElement": "sWoqcoByYmD", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:38.758", + "storedBy": "android", + "created": "2017-12-12T07:30:38.758", + "dataElement": "SojR4V7A8u2", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:38.061", + "storedBy": "android", + "created": "2017-12-12T07:30:38.061", + "dataElement": "cz5DN6BVVeW", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:37.398", + "storedBy": "android", + "created": "2017-12-12T07:30:37.398", + "dataElement": "PCiOYWXZq2E", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:35.592", + "storedBy": "android", + "created": "2017-12-12T07:30:35.592", + "dataElement": "VXdfPQRXKiA", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:35.012", + "storedBy": "android", + "created": "2017-12-12T07:30:35.012", + "dataElement": "BmaBjPQX8ME", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:34.278", + "storedBy": "android", + "created": "2017-12-12T07:30:34.278", + "dataElement": "YsVHgzQCwmr", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:33.724", + "storedBy": "android", + "created": "2017-12-12T07:30:33.724", + "dataElement": "yq1qT0NdjYQ", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:30.881", + "storedBy": "android", + "created": "2017-12-12T07:30:30.881", + "dataElement": "z8m3llJYuh9", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:29.214", + "storedBy": "android", + "created": "2017-12-12T07:30:29.214", + "dataElement": "mGHBXrtqSut", + "value": "2017-12-12", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:26.049", + "storedBy": "android", + "created": "2017-12-12T07:30:26.049", + "dataElement": "Mfq2Y9N21KZ", + "value": "1", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:30:22.015", + "storedBy": "android", + "created": "2017-12-12T07:30:22.015", + "dataElement": "Itl05OEupgQ", + "value": "Positive", + "providedElsewhere": false + } + ] + }, + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:32:16.006", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "S4OBgYm4bOP", + "eventDate": "2017-12-12T00:00:00.000", + "status": "COMPLETED", + "created": "2017-12-12T07:31:30.874", + "completedDate": "2017-12-12T00:00:00.000", + "lastUpdated": "2017-12-12T07:32:16.012", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:32:16.046", + "storedBy": "android", + "created": "2017-12-12T07:31:58.340", + "dataElement": "ytV9rX4ADnn", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.042", + "storedBy": "android", + "created": "2017-12-12T07:31:57.626", + "dataElement": "lcaG1Pnh27I", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.038", + "storedBy": "android", + "created": "2017-12-12T07:31:57.233", + "dataElement": "vTEkiy8F3yj", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.035", + "storedBy": "android", + "created": "2017-12-12T07:31:55.466", + "dataElement": "rHgrmXfa57b", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.032", + "storedBy": "android", + "created": "2017-12-12T07:31:54.604", + "dataElement": "DCUDZxqOxUo", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.029", + "storedBy": "android", + "created": "2017-12-12T07:31:54.197", + "dataElement": "w7enwqzx90I", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.025", + "storedBy": "android", + "created": "2017-12-12T07:31:54.088", + "dataElement": "YKXci7Sm0Zq", + "value": "2017-12-12", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.021", + "storedBy": "android", + "created": "2017-12-12T07:31:44.394", + "dataElement": "nhW3SZX9JaN", + "value": "Ongoing", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.016", + "storedBy": "android", + "created": "2017-12-12T07:31:42.534", + "dataElement": "cKBSkBB3Mt4", + "value": "true", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.053", + "storedBy": "android", + "created": "2017-12-12T07:32:00.443", + "dataElement": "sWoqcoByYmD", + "value": "false", + "providedElsewhere": false + }, + { + "lastUpdated": "2017-12-12T07:32:16.049", + "storedBy": "android", + "created": "2017-12-12T07:31:59.712", + "dataElement": "NPZPVg2rVh4", + "value": "false", + "providedElsewhere": false + } + ] + } + ], + "notes": [] + } + ] +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt index 67daf31b4d..75c08b0f56 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt @@ -32,7 +32,8 @@ import org.hisp.dhis.android.core.common.BaseObjectShould import org.hisp.dhis.android.core.common.ObjectShould import org.junit.Test -class HttpMessageBreakGlassSuccessfulShould : BaseObjectShould("trackedentity/glass/break_glass_successful.json"), +class HttpMessageBreakGlassSuccessfulShould : + BaseObjectShould("trackedentity/glass/break_glass_successful.json"), ObjectShould { @Test @@ -44,4 +45,4 @@ class HttpMessageBreakGlassSuccessfulShould : BaseObjectShould("trackedentity/gl assertThat(response.status()).isEqualTo("OK") assertThat(response.message()).isEqualTo("Temporary Ownership granted") } -} \ No newline at end of file +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt index f5a6fa04da..ff2ff027ac 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt @@ -32,7 +32,8 @@ import org.hisp.dhis.android.core.common.BaseObjectShould import org.hisp.dhis.android.core.common.ObjectShould import org.junit.Test -class HttpMessageClosedProgramShould : BaseObjectShould("trackedentity/glass/closed_program_failure.json"), +class HttpMessageClosedProgramShould : + BaseObjectShould("trackedentity/glass/closed_program_failure.json"), ObjectShould { @Test @@ -44,4 +45,4 @@ class HttpMessageClosedProgramShould : BaseObjectShould("trackedentity/glass/clo assertThat(response.status()).isEqualTo("ERROR") assertThat(response.message()).isEqualTo("PROGRAM_ACCESS_CLOSED") } -} \ No newline at end of file +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt index f056c71fad..131218941b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt @@ -32,7 +32,8 @@ import org.hisp.dhis.android.core.common.BaseObjectShould import org.hisp.dhis.android.core.common.ObjectShould import org.junit.Test -class HttpMessageOwnershipDeniedShould : BaseObjectShould("trackedentity/glass/glass_protected_tei_failure.json"), +class HttpMessageOwnershipDeniedShould : + BaseObjectShould("trackedentity/glass/glass_protected_tei_failure.json"), ObjectShould { @Test @@ -44,4 +45,4 @@ class HttpMessageOwnershipDeniedShould : BaseObjectShould("trackedentity/glass/g assertThat(response.status()).isEqualTo("ERROR") assertThat(response.message()).isEqualTo("OWNERSHIP_ACCESS_DENIED") } -} \ No newline at end of file +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt index 469d252cd6..d9e74ad7ff 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt @@ -45,7 +45,6 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 -import org.mockito.MockitoAnnotations @RunWith(JUnit4::class) class TrackedEntityInstanceQueryFactoryShould { @@ -157,7 +156,5 @@ class TrackedEntityInstanceQueryFactoryShould { val params = ProgramDataDownloadParams.builder().uids(listOf("tei_uid")).build() val queries = queryFactory.getQueries(params) - - } } From 1bd38524aedeb38c074d2fdcfcd9599c8f577764 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 23 Feb 2022 16:34:18 +0100 Subject: [PATCH 106/253] [ANDROSDK-1175] Create TempOwnerStore --- .../ProgramTempOwnerStoreIntegrationShould.kt | 52 ++++++++++++ core/src/main/assets/migrations/121.sql | 3 + .../assets/snapshots/{120.sql => 121.sql} | 1 + .../internal/BaseDatabaseOpenHelper.java | 2 +- .../ownership/OwnershipEntityDIModule.kt | 8 ++ .../ownership/ProgramTempOwner.java | 82 +++++++++++++++++++ .../ownership/ProgramTempOwnerStore.kt | 67 +++++++++++++++ .../ownership/ProgramTempOwnerTableInfo.kt | 74 +++++++++++++++++ .../ownership/ProgramTempOwnerSamples.kt | 44 ++++++++++ 9 files changed, 332 insertions(+), 1 deletion(-) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt create mode 100644 core/src/main/assets/migrations/121.sql rename core/src/main/assets/snapshots/{120.sql => 121.sql} (99%) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt create mode 100644 core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt new file mode 100644 index 0000000000..c9226a4312 --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.ownership + +import org.hisp.dhis.android.core.data.database.ObjectWithoutUidStoreAbstractIntegrationShould +import org.hisp.dhis.android.core.data.trackedentity.ownership.ProgramTempOwnerSamples +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerStore.create +import org.hisp.dhis.android.core.utils.integration.mock.TestDatabaseAdapterFactory +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class ProgramTempOwnerStoreIntegrationShould : ObjectWithoutUidStoreAbstractIntegrationShould( + create(TestDatabaseAdapterFactory.get()), + ProgramTempOwnerTableInfo.TABLE_INFO, + TestDatabaseAdapterFactory.get() +) { + override fun buildObject(): ProgramTempOwner { + return ProgramTempOwnerSamples.programTempOwner + } + + override fun buildObjectToUpdate(): ProgramTempOwner { + return ProgramTempOwnerSamples.programTempOwner.toBuilder() + .reason("Other reason") + .build() + } +} \ No newline at end of file diff --git a/core/src/main/assets/migrations/121.sql b/core/src/main/assets/migrations/121.sql new file mode 100644 index 0000000000..a452cdd60b --- /dev/null +++ b/core/src/main/assets/migrations/121.sql @@ -0,0 +1,3 @@ +# Add ProgramTempOwner (ANDROSDK-1504) + +CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (trackedEntityInstance) REFERENCES TrackedEntityInstance (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); diff --git a/core/src/main/assets/snapshots/120.sql b/core/src/main/assets/snapshots/121.sql similarity index 99% rename from core/src/main/assets/snapshots/120.sql rename to core/src/main/assets/snapshots/121.sql index 0602dd2bcc..eaa7cafc36 100644 --- a/core/src/main/assets/snapshots/120.sql +++ b/core/src/main/assets/snapshots/121.sql @@ -118,3 +118,4 @@ CREATE TABLE DataDimensionItem (_id INTEGER PRIMARY KEY AUTOINCREMENT, visualiza CREATE TABLE LocalDataStore (_id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL UNIQUE, value TEXT); CREATE TABLE AnalyticsPeriodBoundary (_id INTEGER PRIMARY KEY AUTOINCREMENT, programIndicator TEXT NOT NULL, boundaryTarget TEXT, analyticsPeriodBoundaryType TEXT, offsetPeriods INTEGER, offsetPeriodType TEXT, FOREIGN KEY (programIndicator) REFERENCES ProgramIndicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE IndicatorLegendSetLink(_id INTEGER PRIMARY KEY AUTOINCREMENT, indicator TEXT NOT NULL, legendSet TEXT NOT NULL, sortOrder INTEGER, FOREIGN KEY (indicator) REFERENCES Indicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (legendSet) REFERENCES LegendSet (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (indicator, legendSet)); +CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (trackedEntityInstance) REFERENCES TrackedEntityInstance (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java index 032c18e54e..7dc3013f28 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java @@ -36,7 +36,7 @@ class BaseDatabaseOpenHelper { - static final int VERSION = 120; + static final int VERSION = 121; private final AssetManager assetManager; private final int targetVersion; diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt index f5bb5676dc..4bb549bfc0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt @@ -30,6 +30,8 @@ package org.hisp.dhis.android.core.trackedentity.ownership import dagger.Module import dagger.Provides import dagger.Reusable +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import retrofit2.Retrofit @Module @@ -46,4 +48,10 @@ internal class OwnershipEntityDIModule { fun service(retrofit: Retrofit): OwnershipService { return retrofit.create(OwnershipService::class.java) } + + @Provides + @Reusable + fun store(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { + return ProgramTempOwnerStore.create(databaseAdapter) + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java new file mode 100644 index 0000000000..f000acfb07 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.trackedentity.ownership; + +import android.database.Cursor; + +import com.gabrielittner.auto.value.cursor.ColumnAdapter; +import com.google.auto.value.AutoValue; + +import org.hisp.dhis.android.core.arch.db.adapters.custom.internal.DbDateColumnAdapter; +import org.hisp.dhis.android.core.common.CoreObject; + +import java.util.Date; + +@AutoValue +public abstract class ProgramTempOwner implements CoreObject { + + public abstract String program(); + + public abstract String trackedEntityInstance(); + + @ColumnAdapter(DbDateColumnAdapter.class) + public abstract Date created(); + + @ColumnAdapter(DbDateColumnAdapter.class) + public abstract Date validUntil(); + + public abstract String reason(); + + public static Builder builder() { + return new $$AutoValue_ProgramTempOwner.Builder(); + } + + public static ProgramTempOwner create(Cursor cursor) { + return $AutoValue_ProgramTempOwner.createFromCursor(cursor); + } + + public abstract Builder toBuilder(); + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder id(Long id); + + public abstract Builder program(String event); + + public abstract Builder trackedEntityInstance(String trackedEntityInstance); + + public abstract Builder created(Date created); + + public abstract Builder validUntil(Date validUntil); + + public abstract Builder reason(String reason); + + public abstract ProgramTempOwner build(); + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt new file mode 100644 index 0000000000..99bcbf084b --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.ownership + +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory.objectWithoutUidStore + +@Suppress("MagicNumber") +internal object ProgramTempOwnerStore { + private val BINDER = StatementBinder { o: ProgramTempOwner, w: StatementWrapper -> + w.bind(1, o.program()) + w.bind(2, o.trackedEntityInstance()) + w.bind(3, o.created()) + w.bind(4, o.validUntil()) + w.bind(5, o.reason()) + } + + private val WHERE_UPDATE_BINDER = + WhereStatementBinder { o: ProgramTempOwner, w: StatementWrapper -> + w.bind(6, o.program()) + w.bind(7, o.trackedEntityInstance()) + } + + private val WHERE_DELETE_BINDER = + WhereStatementBinder { o: ProgramTempOwner, w: StatementWrapper -> + w.bind(1, o.program()) + w.bind(2, o.trackedEntityInstance()) + } + + @JvmStatic + fun create(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { + return objectWithoutUidStore( + databaseAdapter, + ProgramTempOwnerTableInfo.TABLE_INFO, + BINDER, WHERE_UPDATE_BINDER, WHERE_DELETE_BINDER + ) { ProgramTempOwner.create(it) } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt new file mode 100644 index 0000000000..3910dc487a --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.ownership + +import org.hisp.dhis.android.core.arch.db.tableinfos.TableInfo +import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper +import org.hisp.dhis.android.core.common.CoreColumns + +internal object ProgramTempOwnerTableInfo { + + val TABLE_INFO: TableInfo = object : TableInfo() { + override fun name(): String { + return "ProgramTempOwner" + } + + override fun columns(): CoreColumns { + return Columns() + } + } + + class Columns : CoreColumns() { + override fun all(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + PROGRAM, + TRACKED_ENTITY_INSTANCE, + CREATED, + VALID_UNTIL, + REASON + ) + } + + override fun whereUpdate(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + PROGRAM, + TRACKED_ENTITY_INSTANCE + ) + } + + companion object { + const val PROGRAM = "program" + const val TRACKED_ENTITY_INSTANCE = "trackedEntityInstance" + const val CREATED = "created" + const val VALID_UNTIL = "validUntil" + const val REASON = "reason" + } + } +} \ No newline at end of file diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt new file mode 100644 index 0000000000..2b17153f85 --- /dev/null +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.data.trackedentity.ownership + +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwner +import java.util.* + +object ProgramTempOwnerSamples { + + val programTempOwner: ProgramTempOwner + get() = ProgramTempOwner.builder() + .id(1L) + .program("program_uid") + .trackedEntityInstance("tei_uid") + .created(Date()) + .validUntil(Date()) + .reason("Reason") + .build() +} \ No newline at end of file From 407341a94b82311e57ebf0bdd183b388719ae1d1 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 24 Feb 2022 08:27:17 +0100 Subject: [PATCH 107/253] [ANDROSDK-1175] Persist ProgramTempOwner records --- ...EntityInstanceCallMockIntegrationShould.kt | 2 +- .../ProgramTempOwnerStoreIntegrationShould.kt | 2 +- .../wipe/WipeDBCallMockIntegrationShould.kt | 3 + .../ownership/OwnershipManagerImpl.kt | 26 ++++++- .../ownership/ProgramTempOwnerStore.kt | 2 + .../ownership/ProgramTempOwnerTableInfo.kt | 5 +- .../ownership/ProgramTempOwnerSamples.kt | 11 +-- .../ownership/OwnershipManagerShould.kt | 77 +++++++++++++++++++ 8 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt index 158cc0174f..8fe252b8f5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt @@ -99,7 +99,7 @@ class TrackedEntityInstanceCallMockIntegrationShould : BaseMockIntegrationTestMe } dhis2MockServer.enqueueMockResponse("trackedentity/glass/break_glass_successful.json") - d2.trackedEntityModule().ownershipManager().blockingBreakGlass(teiUid, "program_uid", "Reason") + d2.trackedEntityModule().ownershipManager().blockingBreakGlass(teiUid, "lxAQ7Zs9VYR", "Reason") dhis2MockServer.enqueueSystemInfoResponse() dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance.json") diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt index c9226a4312..9a9c852cc5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt @@ -49,4 +49,4 @@ class ProgramTempOwnerStoreIntegrationShould : ObjectWithoutUidStoreAbstractInte .reason("Other reason") .build() } -} \ No newline at end of file +} diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt index b9e1e2ca3d..afef71fd3d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.wipe import org.hisp.dhis.android.core.data.database.DatabaseAssert.Companion.assertThatDatabase +import org.hisp.dhis.android.core.data.trackedentity.ownership.ProgramTempOwnerSamples import org.hisp.dhis.android.core.data.tracker.importer.internal.TrackerJobObjectSamples import org.hisp.dhis.android.core.datastore.KeyValuePair import org.hisp.dhis.android.core.datastore.internal.LocalDataStoreStore @@ -40,6 +41,7 @@ import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStoreImp import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.internal.D2ErrorStore +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerStore import org.hisp.dhis.android.core.tracker.importer.internal.TrackerJobObjectStore import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyDispatcher import org.junit.Test @@ -104,5 +106,6 @@ class WipeDBCallMockIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() .value("value2") .build() ) + ProgramTempOwnerStore.create(databaseAdapter).insert(ProgramTempOwnerSamples.programTempOwner) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt index f6b8d3ea39..08cccb1a5b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt @@ -29,13 +29,16 @@ package org.hisp.dhis.android.core.trackedentity.ownership import io.reactivex.Completable +import java.util.* import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse internal class OwnershipManagerImpl @Inject constructor( private val apiCallExecutor: APICallExecutor, - private val ownershipService: OwnershipService + private val ownershipService: OwnershipService, + private val programTempOwnerStore: ObjectWithoutUidStore ) : OwnershipManager { override fun breakGlass(trackedEntityInstance: String, program: String, reason: String): Completable { @@ -49,10 +52,29 @@ internal class OwnershipManagerImpl @Inject constructor( @Suppress("MagicNumber") if (breakGlassResponse.httpStatusCode() == 200) { - // TODO Save record + programTempOwnerStore.insert( + ProgramTempOwner.builder() + .program(program) + .trackedEntityInstance(trackedEntityInstance) + .reason(reason) + .created(Date()) + .validUntil(getValidUntil()) + .build() + ) } else { @Suppress("TooGenericExceptionThrown") throw RuntimeException("") } } + + private fun getValidUntil(): Date { + val calendar = Calendar.getInstance() + calendar.time = Date() + calendar.add(Calendar.HOUR_OF_DAY, validInHours) + return calendar.time + } + + companion object { + const val validInHours = 2 + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt index 99bcbf084b..49da771b34 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt @@ -48,12 +48,14 @@ internal object ProgramTempOwnerStore { WhereStatementBinder { o: ProgramTempOwner, w: StatementWrapper -> w.bind(6, o.program()) w.bind(7, o.trackedEntityInstance()) + w.bind(8, o.created()) } private val WHERE_DELETE_BINDER = WhereStatementBinder { o: ProgramTempOwner, w: StatementWrapper -> w.bind(1, o.program()) w.bind(2, o.trackedEntityInstance()) + w.bind(3, o.created()) } @JvmStatic diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt index 3910dc487a..c2d012bf4b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt @@ -59,7 +59,8 @@ internal object ProgramTempOwnerTableInfo { return CollectionsHelper.appendInNewArray( super.all(), PROGRAM, - TRACKED_ENTITY_INSTANCE + TRACKED_ENTITY_INSTANCE, + CREATED ) } @@ -71,4 +72,4 @@ internal object ProgramTempOwnerTableInfo { const val REASON = "reason" } } -} \ No newline at end of file +} diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt index 2b17153f85..9aacc52088 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt @@ -27,18 +27,19 @@ */ package org.hisp.dhis.android.core.data.trackedentity.ownership -import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwner import java.util.* +import org.hisp.dhis.android.core.arch.helpers.DateUtils +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwner object ProgramTempOwnerSamples { val programTempOwner: ProgramTempOwner get() = ProgramTempOwner.builder() .id(1L) - .program("program_uid") - .trackedEntityInstance("tei_uid") - .created(Date()) + .program("lxAQ7Zs9VYR") + .trackedEntityInstance("nWrB0TfWlvh") + .created(DateUtils.DATE_FORMAT.parse("2022-01-29T11:27:46.935")) .validUntil(Date()) .reason("Reason") .build() -} \ No newline at end of file +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt new file mode 100644 index 0000000000..d8b4287343 --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.ownership + +import com.nhaarman.mockitokotlin2.* +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import retrofit2.Call + +@RunWith(JUnit4::class) +class OwnershipManagerShould { + + private val apiCallExecutor: APICallExecutor = mock() + private val ownershipService: OwnershipService = mock() + private val programTempOwnerStore: ObjectWithoutUidStore = mock() + + private val httpResponse: HttpMessageResponse = mock() + private val call: Call = mock() + + private lateinit var ownershipManager: OwnershipManager + + @Before + fun setUp() { + whenever(ownershipService.breakGlass(any(), any(), any())).doReturn(call) + whenever(apiCallExecutor.executeObjectCall(any>())).doReturn(httpResponse) + + ownershipManager = OwnershipManagerImpl(apiCallExecutor, ownershipService, programTempOwnerStore) + } + + @Test + fun persist_program_temp_owner_record_if_success() { + whenever(httpResponse.httpStatusCode()).doReturn(200) + + ownershipManager.blockingBreakGlass("tei_uid", "program", "reason") + + verify(programTempOwnerStore, times(1)).insert(any()) + } + + @Test + fun do_not_persist_program_temp_owner_record_if_error() { + whenever(httpResponse.httpStatusCode()).doReturn(401) + + ownershipManager.blockingBreakGlass("tei_uid", "program", "reason") + + verifyNoMoreInteractions(programTempOwnerStore) + } +} From 00552f460e5110c43c895a2143759c301cb73dd9 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 24 Feb 2022 09:26:32 +0100 Subject: [PATCH 108/253] [ANDROSDK-1175] Throw D2Error if break the glass fails --- .../trackedentity/ownership/OwnershipManagerImpl.kt | 10 +++++++++- .../trackedentity/ownership/OwnershipManagerShould.kt | 11 ++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt index 08cccb1a5b..50d0c91293 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt @@ -34,6 +34,9 @@ import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.maintenance.D2ErrorComponent internal class OwnershipManagerImpl @Inject constructor( private val apiCallExecutor: APICallExecutor, @@ -63,7 +66,12 @@ internal class OwnershipManagerImpl @Inject constructor( ) } else { @Suppress("TooGenericExceptionThrown") - throw RuntimeException("") + throw D2Error.builder() + .errorCode(D2ErrorCode.API_RESPONSE_PROCESS_ERROR) + .errorComponent(D2ErrorComponent.Server) + .errorDescription(breakGlassResponse.message()) + .httpErrorCode(breakGlassResponse.httpStatusCode()) + .build() } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt index d8b4287343..fcb27d87d5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt @@ -27,10 +27,13 @@ */ package org.hisp.dhis.android.core.trackedentity.ownership +import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.* import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import org.hisp.dhis.android.core.maintenance.D2Error +import org.junit.Assert.fail import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -69,8 +72,14 @@ class OwnershipManagerShould { @Test fun do_not_persist_program_temp_owner_record_if_error() { whenever(httpResponse.httpStatusCode()).doReturn(401) + whenever(httpResponse.message()).doReturn("Error in break the glass") - ownershipManager.blockingBreakGlass("tei_uid", "program", "reason") + try { + ownershipManager.blockingBreakGlass("tei_uid", "program", "reason") + fail("Should throw an error") + } catch (e: Exception) { + assertThat(e).isInstanceOf(D2Error::class.java) + } verifyNoMoreInteractions(programTempOwnerStore) } From 895584c745e97e4c6acfd504045f316f9c51206a Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 24 Feb 2022 08:50:54 +0100 Subject: [PATCH 109/253] [ANDROSDK-1507] Refactor enrollment service --- .../core/enrollment/EnrollmentService.kt | 90 +--------- .../internal/EnrollmentImportHandler.java | 0 ...oduleImpl.java => EnrollmentModuleImpl.kt} | 42 ++--- .../internal/EnrollmentServiceImpl.kt | 128 ++++++++++++++ .../dhis/android/core/event/EventService.kt | 134 ++------------ .../core/event/internal/EventModuleImpl.java | 96 ---------- .../core/event/internal/EventModuleImpl.kt | 66 +++++++ .../core/event/internal/EventServiceImpl.kt | 167 ++++++++++++++++++ .../enrollment/EnrollmentServiceShould.kt | 23 ++- .../android/core/event/EventServiceShould.kt | 7 +- 10 files changed, 415 insertions(+), 338 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.java rename core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/{EnrollmentModuleImpl.java => EnrollmentModuleImpl.kt} (65%) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt index 38a3eb6508..c89c7c6406 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt @@ -27,70 +27,28 @@ */ package org.hisp.dhis.android.core.enrollment -import dagger.Reusable import io.reactivex.Single -import javax.inject.Inject -import org.hisp.dhis.android.core.event.Event -import org.hisp.dhis.android.core.event.EventCollectionRepository -import org.hisp.dhis.android.core.organisationunit.OrganisationUnit -import org.hisp.dhis.android.core.organisationunit.OrganisationUnitCollectionRepository -import org.hisp.dhis.android.core.program.AccessLevel -import org.hisp.dhis.android.core.program.ProgramCollectionRepository -import org.hisp.dhis.android.core.program.ProgramStage -import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceCollectionRepository -@Reusable -class EnrollmentService @Inject constructor( - private val enrollmentRepository: EnrollmentCollectionRepository, - private val trackedEntityInstanceRepository: TrackedEntityInstanceCollectionRepository, - private val programRepository: ProgramCollectionRepository, - private val organisationUnitRepository: OrganisationUnitCollectionRepository, - private val eventCollectionRepository: EventCollectionRepository, - private val programStagesCollectionRepository: ProgramStageCollectionRepository -) { +interface EnrollmentService { /** * Blocking version of [isOpen]. * * @see isOpen */ - fun blockingIsOpen(enrollmentUid: String): Boolean { - val enrollment = enrollmentRepository.uid(enrollmentUid).blockingGet() ?: return true - - return enrollment.status()?.equals(EnrollmentStatus.ACTIVE) ?: false - } + fun blockingIsOpen(enrollmentUid: String): Boolean /** * Checks if the enrollment status is ACTIVE. */ - fun isOpen(enrollmentUid: String): Single { - return Single.fromCallable { blockingIsOpen(enrollmentUid) } - } + fun isOpen(enrollmentUid: String): Single /** * Blocking version of [getEnrollmentAccess]. * * @see getEnrollmentAccess */ - fun blockingGetEnrollmentAccess(trackedEntityInstanceUid: String, programUid: String): EnrollmentAccess { - val program = programRepository.uid(programUid).blockingGet() ?: return EnrollmentAccess.NO_ACCESS - - val dataAccess = - if (program.access()?.data()?.write() == true) EnrollmentAccess.WRITE_ACCESS - else EnrollmentAccess.READ_ACCESS - - return when (program.accessLevel()) { - AccessLevel.PROTECTED -> - if (isTeiInCaptureScope(trackedEntityInstanceUid)) dataAccess - else EnrollmentAccess.PROTECTED_PROGRAM_DENIED - AccessLevel.CLOSED -> - if (isTeiInCaptureScope(trackedEntityInstanceUid)) dataAccess - else EnrollmentAccess.CLOSED_PROGRAM_DENIED - else -> - dataAccess - } - } + fun blockingGetEnrollmentAccess(trackedEntityInstanceUid: String, programUid: String): EnrollmentAccess /** * Evaluates the access level of the user to this program and trackedEntityInstance. @@ -98,43 +56,9 @@ class EnrollmentService @Inject constructor( * It checks the data access level to the program, the program access level (OPEN, PROTECTED,...) * and the enrollment orgunit scope (SEARCH or CAPTURE). */ - fun getEnrollmentAccess(trackedEntityInstanceUid: String, programUid: String): Single { - return Single.fromCallable { blockingGetEnrollmentAccess(trackedEntityInstanceUid, programUid) } - } - - private fun isTeiInCaptureScope(trackedEntityInstanceUid: String): Boolean { - val tei = trackedEntityInstanceRepository.uid(trackedEntityInstanceUid).blockingGet() - - return organisationUnitRepository - .byOrganisationUnitScope(OrganisationUnit.Scope.SCOPE_DATA_CAPTURE) - .uid(tei.organisationUnit()) - .blockingExists() - } - - fun blockingGetAllowEventCreation(enrollmentUid: String, stagesToHide: List): Boolean { - val programStages = eventCollectionRepository.byEnrollmentUid().eq(enrollmentUid) - .byDeleted().isFalse.get() - .toFlowable().flatMapIterable { events: List? -> events } - .map { event: Event -> event.programStage() } - .toList() - .flatMap { currentProgramStagesUids: List -> - val repository = programStagesCollectionRepository.byProgramUid().eq( - enrollmentRepository.uid(enrollmentUid).blockingGet().program() - ).byAccessDataWrite().isTrue - - repository.get().toFlowable() - .flatMapIterable { stages: List? -> stages } - .filter { programStage: ProgramStage -> - !currentProgramStagesUids.contains(programStage.uid()) || - programStage.repeatable()!! - } - .toList() - }.blockingGet() + fun getEnrollmentAccess(trackedEntityInstanceUid: String, programUid: String): Single - return programStages.find { !stagesToHide.contains(it.uid()) } != null - } + fun blockingGetAllowEventCreation(enrollmentUid: String, stagesToHide: List): Boolean - fun allowEventCreation(enrollmentUid: String, stagesToHide: List): Single { - return Single.fromCallable { blockingGetAllowEventCreation(enrollmentUid, stagesToHide) } - } + fun allowEventCreation(enrollmentUid: String, stagesToHide: List): Single } diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.java deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt similarity index 65% rename from core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.java rename to core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt index db96be6878..e67710479d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt @@ -25,37 +25,25 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.enrollment.internal -package org.hisp.dhis.android.core.enrollment.internal; - -import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository; -import org.hisp.dhis.android.core.enrollment.EnrollmentModule; -import org.hisp.dhis.android.core.enrollment.EnrollmentService; - -import javax.inject.Inject; - -import dagger.Reusable; +import dagger.Reusable +import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository +import org.hisp.dhis.android.core.enrollment.EnrollmentModule +import org.hisp.dhis.android.core.enrollment.EnrollmentService +import javax.inject.Inject @Reusable -public final class EnrollmentModuleImpl implements EnrollmentModule { - - private final EnrollmentCollectionRepository enrollments; - private final EnrollmentService enrollmentService; - - @Inject - EnrollmentModuleImpl(EnrollmentCollectionRepository enrollments, - EnrollmentService enrollmentService) { - this.enrollments = enrollments; - this.enrollmentService = enrollmentService; - } +internal class EnrollmentModuleImpl @Inject constructor( + private val enrollments: EnrollmentCollectionRepository, + private val enrollmentService: EnrollmentServiceImpl +) : EnrollmentModule { - @Override - public EnrollmentCollectionRepository enrollments() { - return enrollments; + override fun enrollments(): EnrollmentCollectionRepository { + return enrollments } - @Override - public EnrollmentService enrollmentService() { - return enrollmentService; + override fun enrollmentService(): EnrollmentService { + return enrollmentService } -} +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt new file mode 100644 index 0000000000..45421f72e9 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.enrollment.internal + +import dagger.Reusable +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.enrollment.EnrollmentAccess +import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository +import org.hisp.dhis.android.core.enrollment.EnrollmentService +import org.hisp.dhis.android.core.enrollment.EnrollmentStatus +import javax.inject.Inject +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.event.EventCollectionRepository +import org.hisp.dhis.android.core.organisationunit.OrganisationUnit +import org.hisp.dhis.android.core.organisationunit.OrganisationUnitCollectionRepository +import org.hisp.dhis.android.core.program.AccessLevel +import org.hisp.dhis.android.core.program.ProgramCollectionRepository +import org.hisp.dhis.android.core.program.ProgramStage +import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceCollectionRepository +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwner + +@Reusable +internal class EnrollmentServiceImpl @Inject constructor( + private val enrollmentRepository: EnrollmentCollectionRepository, + private val trackedEntityInstanceRepository: TrackedEntityInstanceCollectionRepository, + private val programRepository: ProgramCollectionRepository, + private val organisationUnitRepository: OrganisationUnitCollectionRepository, + private val eventCollectionRepository: EventCollectionRepository, + private val programStagesCollectionRepository: ProgramStageCollectionRepository, + private val programTempOwnerStore: ObjectWithoutUidStore +): EnrollmentService { + + override fun blockingIsOpen(enrollmentUid: String): Boolean { + val enrollment = enrollmentRepository.uid(enrollmentUid).blockingGet() ?: return true + + return enrollment.status()?.equals(EnrollmentStatus.ACTIVE) ?: false + } + + override fun isOpen(enrollmentUid: String): Single { + return Single.fromCallable { blockingIsOpen(enrollmentUid) } + } + + override fun blockingGetEnrollmentAccess(trackedEntityInstanceUid: String, programUid: String): EnrollmentAccess { + val program = programRepository.uid(programUid).blockingGet() ?: return EnrollmentAccess.NO_ACCESS + + val dataAccess = + if (program.access()?.data()?.write() == true) EnrollmentAccess.WRITE_ACCESS + else EnrollmentAccess.READ_ACCESS + + return when (program.accessLevel()) { + AccessLevel.PROTECTED -> + if (isTeiInCaptureScope(trackedEntityInstanceUid)) dataAccess + else EnrollmentAccess.PROTECTED_PROGRAM_DENIED + AccessLevel.CLOSED -> + if (isTeiInCaptureScope(trackedEntityInstanceUid)) dataAccess + else EnrollmentAccess.CLOSED_PROGRAM_DENIED + else -> + dataAccess + } + } + + override fun getEnrollmentAccess(trackedEntityInstanceUid: String, programUid: String): Single { + return Single.fromCallable { blockingGetEnrollmentAccess(trackedEntityInstanceUid, programUid) } + } + + private fun isTeiInCaptureScope(trackedEntityInstanceUid: String): Boolean { + val tei = trackedEntityInstanceRepository.uid(trackedEntityInstanceUid).blockingGet() + + return organisationUnitRepository + .byOrganisationUnitScope(OrganisationUnit.Scope.SCOPE_DATA_CAPTURE) + .uid(tei.organisationUnit()) + .blockingExists() + } + + override fun blockingGetAllowEventCreation(enrollmentUid: String, stagesToHide: List): Boolean { + val programStages = eventCollectionRepository.byEnrollmentUid().eq(enrollmentUid) + .byDeleted().isFalse.get() + .toFlowable().flatMapIterable { events: List? -> events } + .map { event: Event -> event.programStage() } + .toList() + .flatMap { currentProgramStagesUids: List -> + val repository = programStagesCollectionRepository.byProgramUid().eq( + enrollmentRepository.uid(enrollmentUid).blockingGet().program() + ).byAccessDataWrite().isTrue + + repository.get().toFlowable() + .flatMapIterable { stages: List? -> stages } + .filter { programStage: ProgramStage -> + !currentProgramStagesUids.contains(programStage.uid()) || + programStage.repeatable()!! + } + .toList() + }.blockingGet() + + return programStages.find { !stagesToHide.contains(it.uid()) } != null + } + + override fun allowEventCreation(enrollmentUid: String, stagesToHide: List): Single { + return Single.fromCallable { blockingGetAllowEventCreation(enrollmentUid, stagesToHide) } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt b/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt index e5fc400ecc..82b01d2d9f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt @@ -27,41 +27,16 @@ */ package org.hisp.dhis.android.core.event -import dagger.Reusable import io.reactivex.Single -import javax.inject.Inject -import org.hisp.dhis.android.core.category.CategoryOptionComboService -import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository -import org.hisp.dhis.android.core.enrollment.EnrollmentService -import org.hisp.dhis.android.core.enrollment.EnrollmentStatus -import org.hisp.dhis.android.core.event.internal.EventDateUtils -import org.hisp.dhis.android.core.organisationunit.OrganisationUnitService -import org.hisp.dhis.android.core.program.ProgramCollectionRepository -import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository -@Reusable -@Suppress("LongParameterList", "TooManyFunctions") -class EventService @Inject constructor( - private val enrollmentRepository: EnrollmentCollectionRepository, - private val eventRepository: EventCollectionRepository, - private val programRepository: ProgramCollectionRepository, - private val programStageRepository: ProgramStageCollectionRepository, - private val enrollmentService: EnrollmentService, - private val organisationUnitService: OrganisationUnitService, - private val categoryOptionComboService: CategoryOptionComboService, - private val eventDateUtils: EventDateUtils -) { +interface EventService { /** * Blocking version of [hasDataWriteAccess]. * * @see hasDataWriteAccess */ - fun blockingHasDataWriteAccess(eventUid: String): Boolean { - val event = eventRepository.uid(eventUid).blockingGet() ?: return false - - return programStageRepository.uid(event.programStage()).blockingGet()?.access()?.data()?.write() ?: false - } + fun blockingHasDataWriteAccess(eventUid: String): Boolean /** * Check if user has data write access to a particular event. @@ -69,153 +44,70 @@ class EventService @Inject constructor( * It returns true if the user has data write access to both the program and the program stage. * If the event does not exist, returns null */ - fun hasDataWriteAccess(eventUid: String): Single { - return Single.just(blockingHasDataWriteAccess(eventUid)) - } + fun hasDataWriteAccess(eventUid: String): Single /** * Blocking version of [isInOrgunitRange]. * * @see isInOrgunitRange */ - fun blockingIsInOrgunitRange(event: Event): Boolean { - return event.eventDate()?.let { eventDate -> - event.organisationUnit()?.let { orgunitUid -> - organisationUnitService.blockingIsDateInOrgunitRange(orgunitUid, eventDate) - } - } ?: true - } + fun blockingIsInOrgunitRange(event: Event): Boolean /** * Check if the event has the event date within the opening period of the assigned organisation unit. */ - fun isInOrgunitRange(event: Event): Single { - return Single.just(blockingIsInOrgunitRange(event)) - } + fun isInOrgunitRange(event: Event): Single /** * Blocking version of [hasCategoryComboAccess]. * * @see hasCategoryComboAccess */ - fun blockingHasCategoryComboAccess(event: Event): Boolean { - return event.attributeOptionCombo()?.let { - categoryOptionComboService.blockingHasAccess(it, event.eventDate()) - } ?: true - } + fun blockingHasCategoryComboAccess(event: Event): Boolean /** * Check if user has access to the categoryCombo linked to the event and also if the categoryCombo is active * in the event date. */ - fun hasCategoryComboAccess(event: Event): Single { - return Single.just(blockingHasCategoryComboAccess(event)) - } + fun hasCategoryComboAccess(event: Event): Single /** * Blocking version of [isEditable]. * * @see isEditable */ - fun blockingIsEditable(eventUid: String): Boolean { - return blockingGetEditableStatus(eventUid) is EventEditableStatus.Editable - } + fun blockingIsEditable(eventUid: String): Boolean /** * Check if the event can be edited or not. If you want to know the reason why the event is not editable, check * the method [getEditableStatus] for a richer description of the status. */ - fun isEditable(eventUid: String): Single { - return Single.just(blockingIsEditable(eventUid)) - } + fun isEditable(eventUid: String): Single /** * Blocking version of [getEditableStatus]. * * @see getEditableStatus */ - @Suppress("ComplexMethod") - fun blockingGetEditableStatus(eventUid: String): EventEditableStatus { - val event = eventRepository.uid(eventUid).blockingGet() - val program = programRepository.uid(event.program()).blockingGet() - val programStage = programStageRepository.uid(event.programStage()).blockingGet() - - return when { - event.status() == EventStatus.COMPLETED && programStage.blockEntryForm() == true -> - EventEditableStatus.NonEditable(EventNonEditableReason.BLOCKED_BY_COMPLETION) - - eventDateUtils.isEventExpired( - event = event, - completeExpiryDays = program.completeEventsExpiryDays() ?: 0, - programPeriodType = programStage.periodType() ?: program.expiryPeriodType(), - expiryDays = program.expiryDays() ?: 0 - ) -> - EventEditableStatus.NonEditable(EventNonEditableReason.EXPIRED) - - !blockingHasDataWriteAccess(eventUid) -> - EventEditableStatus.NonEditable(EventNonEditableReason.NO_DATA_WRITE_ACCESS) - - !blockingIsInOrgunitRange(event) -> - EventEditableStatus.NonEditable(EventNonEditableReason.EVENT_DATE_IS_NOT_IN_ORGUNIT_RANGE) - - !blockingHasCategoryComboAccess(event) -> - EventEditableStatus.NonEditable(EventNonEditableReason.NO_CATEGORY_COMBO_ACCESS) - - event.enrollment()?.let { !enrollmentService.blockingIsOpen(it) } ?: false -> - EventEditableStatus.NonEditable(EventNonEditableReason.ENROLLMENT_IS_NOT_OPEN) - - event.organisationUnit()?.let { !organisationUnitService.blockingIsInCaptureScope(it) } ?: false -> - EventEditableStatus.NonEditable(EventNonEditableReason.ORGUNIT_IS_NOT_IN_CAPTURE_SCOPE) - - else -> - EventEditableStatus.Editable() - } - } + fun blockingGetEditableStatus(eventUid: String): EventEditableStatus /** * Returns the editable status of an event. In case the event is not editable, the result also includes the * reason why it is not editable. */ - fun getEditableStatus(eventUid: String): Single { - return Single.just(blockingGetEditableStatus(eventUid)) - } + fun getEditableStatus(eventUid: String): Single /** * Blocking version of [canAddEventToEnrollment]. * * @see canAddEventToEnrollment */ - fun blockingCanAddEventToEnrollment(enrollmentUid: String, programStageUid: String): Boolean { - val enrollment = enrollmentRepository.uid(enrollmentUid).blockingGet() - val programStage = programStageRepository.uid(programStageUid).blockingGet() - - if (enrollment == null || programStage == null) { - return false - } - - val isActiveEnrollment = enrollment.status() == EnrollmentStatus.ACTIVE - - val acceptMoreEvents = - if (programStage.repeatable() == true) true - else getEventCount(enrollmentUid, programStageUid) == 0 - - return isActiveEnrollment && acceptMoreEvents - } + fun blockingCanAddEventToEnrollment(enrollmentUid: String, programStageUid: String): Boolean /** * Evaluates if an enrollments accepts more events for a particular programStage. * * It takes into account the enrollment status and if the program stage is repeatable or not. */ - fun canAddEventToEnrollment(enrollmentUid: String, programStageUid: String): Single { - return Single.just(blockingCanAddEventToEnrollment(enrollmentUid, programStageUid)) - } - - private fun getEventCount(enrollmentUid: String, programStageUid: String): Int { - return eventRepository - .byEnrollmentUid().eq(enrollmentUid) - .byProgramStageUid().eq(programStageUid) - .byDeleted().isFalse - .blockingCount() - } + fun canAddEventToEnrollment(enrollmentUid: String, programStageUid: String): Single } diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.java deleted file mode 100644 index 49b503f285..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.event.internal; - -import androidx.annotation.VisibleForTesting; - -import org.hisp.dhis.android.core.event.EventCollectionRepository; -import org.hisp.dhis.android.core.event.EventDownloader; -import org.hisp.dhis.android.core.event.EventFilterCollectionRepository; -import org.hisp.dhis.android.core.event.EventModule; -import org.hisp.dhis.android.core.event.EventService; -import org.hisp.dhis.android.core.event.search.EventQueryCollectionRepository; - -import javax.inject.Inject; - -import dagger.Reusable; - -@Reusable -public final class EventModuleImpl implements EventModule { - - private final EventCollectionRepository events; - private final EventFilterCollectionRepository eventFilters; - private final EventDownloader eventDownloader; - private final EventService eventService; - - private final EventQueryCollectionRepository eventQuery; - - @VisibleForTesting - final EventPersistenceCallFactory eventPersistenceCallFactory; - - @Inject - EventModuleImpl(EventCollectionRepository events, - EventFilterCollectionRepository eventFilters, - EventPersistenceCallFactory eventPersistenceCallFactory, - EventDownloader eventDownloader, - EventService eventService, - EventQueryCollectionRepository eventQuery) { - this.events = events; - this.eventFilters = eventFilters; - this.eventPersistenceCallFactory = eventPersistenceCallFactory; - this.eventDownloader = eventDownloader; - this.eventService = eventService; - this.eventQuery = eventQuery; - } - - @Override - public EventCollectionRepository events() { - return events; - } - - @Override - public EventFilterCollectionRepository eventFilters() { - return eventFilters; - } - - @Override - public EventDownloader eventDownloader() { - return eventDownloader; - } - - @Override - public EventService eventService() { - return eventService; - } - - @Override - public EventQueryCollectionRepository eventQuery() { - return eventQuery; - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt new file mode 100644 index 0000000000..47e0d094c7 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.event.internal + +import dagger.Reusable +import org.hisp.dhis.android.core.event.EventCollectionRepository +import org.hisp.dhis.android.core.event.EventFilterCollectionRepository +import org.hisp.dhis.android.core.event.EventDownloader +import org.hisp.dhis.android.core.event.search.EventQueryCollectionRepository +import org.hisp.dhis.android.core.event.EventModule +import org.hisp.dhis.android.core.event.EventService +import javax.inject.Inject + +@Reusable +internal class EventModuleImpl @Inject internal constructor( + private val events: EventCollectionRepository, + private val eventFilters: EventFilterCollectionRepository, + private val eventDownloader: EventDownloader, + private val eventService: EventServiceImpl, + private val eventQuery: EventQueryCollectionRepository +) : EventModule { + override fun events(): EventCollectionRepository { + return events + } + + override fun eventFilters(): EventFilterCollectionRepository { + return eventFilters + } + + override fun eventDownloader(): EventDownloader { + return eventDownloader + } + + override fun eventService(): EventService { + return eventService + } + + override fun eventQuery(): EventQueryCollectionRepository { + return eventQuery + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt new file mode 100644 index 0000000000..8e31782b70 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.event.internal + +import dagger.Reusable +import io.reactivex.Single +import org.hisp.dhis.android.core.category.CategoryOptionComboService +import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository +import org.hisp.dhis.android.core.enrollment.EnrollmentService +import org.hisp.dhis.android.core.enrollment.EnrollmentStatus +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentServiceImpl +import org.hisp.dhis.android.core.event.* +import org.hisp.dhis.android.core.event.EventService +import org.hisp.dhis.android.core.organisationunit.OrganisationUnitService +import org.hisp.dhis.android.core.program.ProgramCollectionRepository +import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository +import javax.inject.Inject + +@Reusable +@Suppress("LongParameterList", "TooManyFunctions") +internal class EventServiceImpl @Inject constructor( + private val enrollmentRepository: EnrollmentCollectionRepository, + private val eventRepository: EventCollectionRepository, + private val programRepository: ProgramCollectionRepository, + private val programStageRepository: ProgramStageCollectionRepository, + private val enrollmentService: EnrollmentServiceImpl, + private val organisationUnitService: OrganisationUnitService, + private val categoryOptionComboService: CategoryOptionComboService, + private val eventDateUtils: EventDateUtils +): EventService { + + override fun blockingHasDataWriteAccess(eventUid: String): Boolean { + val event = eventRepository.uid(eventUid).blockingGet() ?: return false + + return programStageRepository.uid(event.programStage()).blockingGet()?.access()?.data()?.write() ?: false + } + + override fun hasDataWriteAccess(eventUid: String): Single { + return Single.just(blockingHasDataWriteAccess(eventUid)) + } + + override fun blockingIsInOrgunitRange(event: Event): Boolean { + return event.eventDate()?.let { eventDate -> + event.organisationUnit()?.let { orgunitUid -> + organisationUnitService.blockingIsDateInOrgunitRange(orgunitUid, eventDate) + } + } ?: true + } + + override fun isInOrgunitRange(event: Event): Single { + return Single.just(blockingIsInOrgunitRange(event)) + } + + override fun blockingHasCategoryComboAccess(event: Event): Boolean { + return event.attributeOptionCombo()?.let { + categoryOptionComboService.blockingHasAccess(it, event.eventDate()) + } ?: true + } + + override fun hasCategoryComboAccess(event: Event): Single { + return Single.just(blockingHasCategoryComboAccess(event)) + } + + override fun blockingIsEditable(eventUid: String): Boolean { + return blockingGetEditableStatus(eventUid) is EventEditableStatus.Editable + } + + override fun isEditable(eventUid: String): Single { + return Single.just(blockingIsEditable(eventUid)) + } + + @Suppress("ComplexMethod") + override fun blockingGetEditableStatus(eventUid: String): EventEditableStatus { + val event = eventRepository.uid(eventUid).blockingGet() + val program = programRepository.uid(event.program()).blockingGet() + val programStage = programStageRepository.uid(event.programStage()).blockingGet() + + return when { + event.status() == EventStatus.COMPLETED && programStage.blockEntryForm() == true -> + EventEditableStatus.NonEditable(EventNonEditableReason.BLOCKED_BY_COMPLETION) + + eventDateUtils.isEventExpired( + event = event, + completeExpiryDays = program.completeEventsExpiryDays() ?: 0, + programPeriodType = programStage.periodType() ?: program.expiryPeriodType(), + expiryDays = program.expiryDays() ?: 0 + ) -> + EventEditableStatus.NonEditable(EventNonEditableReason.EXPIRED) + + !blockingHasDataWriteAccess(eventUid) -> + EventEditableStatus.NonEditable(EventNonEditableReason.NO_DATA_WRITE_ACCESS) + + !blockingIsInOrgunitRange(event) -> + EventEditableStatus.NonEditable(EventNonEditableReason.EVENT_DATE_IS_NOT_IN_ORGUNIT_RANGE) + + !blockingHasCategoryComboAccess(event) -> + EventEditableStatus.NonEditable(EventNonEditableReason.NO_CATEGORY_COMBO_ACCESS) + + event.enrollment()?.let { !enrollmentService.blockingIsOpen(it) } ?: false -> + EventEditableStatus.NonEditable(EventNonEditableReason.ENROLLMENT_IS_NOT_OPEN) + + event.organisationUnit()?.let { !organisationUnitService.blockingIsInCaptureScope(it) } ?: false -> + EventEditableStatus.NonEditable(EventNonEditableReason.ORGUNIT_IS_NOT_IN_CAPTURE_SCOPE) + + else -> + EventEditableStatus.Editable() + } + } + + override fun getEditableStatus(eventUid: String): Single { + return Single.just(blockingGetEditableStatus(eventUid)) + } + + override fun blockingCanAddEventToEnrollment(enrollmentUid: String, programStageUid: String): Boolean { + val enrollment = enrollmentRepository.uid(enrollmentUid).blockingGet() + val programStage = programStageRepository.uid(programStageUid).blockingGet() + + if (enrollment == null || programStage == null) { + return false + } + + val isActiveEnrollment = enrollment.status() == EnrollmentStatus.ACTIVE + + val acceptMoreEvents = + if (programStage.repeatable() == true) true + else getEventCount(enrollmentUid, programStageUid) == 0 + + return isActiveEnrollment && acceptMoreEvents + } + + override fun canAddEventToEnrollment(enrollmentUid: String, programStageUid: String): Single { + return Single.just(blockingCanAddEventToEnrollment(enrollmentUid, programStageUid)) + } + + private fun getEventCount(enrollmentUid: String, programStageUid: String): Int { + return eventRepository + .byEnrollmentUid().eq(enrollmentUid) + .byProgramStageUid().eq(programStageUid) + .byDeleted().isFalse + .blockingCount() + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt index bb469ad2f9..781dbd427d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt @@ -31,9 +31,11 @@ import com.nhaarman.mockitokotlin2.doReturn import com.nhaarman.mockitokotlin2.mock import com.nhaarman.mockitokotlin2.whenever import io.reactivex.Single +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.helpers.AccessHelper import org.hisp.dhis.android.core.common.Access import org.hisp.dhis.android.core.common.DataAccess +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentServiceImpl import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.EventCollectionRepository import org.hisp.dhis.android.core.organisationunit.OrganisationUnit @@ -45,6 +47,7 @@ import org.hisp.dhis.android.core.program.ProgramStage import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceCollectionRepository +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwner import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Before @@ -72,15 +75,9 @@ class EnrollmentServiceShould { mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS) private val programStageCollectionRepository: ProgramStageCollectionRepository = mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS) + private val programTempOwnerStore: ObjectWithoutUidStore = mock() - private val enrollmentService = EnrollmentService( - enrollmentRepository, - trackedEntityInstanceRepository, - programRepository, - organisationUnitRepository, - eventCollectionRepository, - programStageCollectionRepository - ) + private lateinit var enrollmentService: EnrollmentService @Before fun setUp() { @@ -93,6 +90,16 @@ class EnrollmentServiceShould { whenever(enrollment.uid()) doReturn enrollmentUid whenever(trackedEntityInstance.organisationUnit()) doReturn organisationUnitId + + enrollmentService = EnrollmentServiceImpl( + enrollmentRepository, + trackedEntityInstanceRepository, + programRepository, + organisationUnitRepository, + eventCollectionRepository, + programStageCollectionRepository, + programTempOwnerStore + ) } @Test diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt index cf53d64f47..21b8ba44e3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt @@ -36,8 +36,9 @@ import org.hisp.dhis.android.core.category.CategoryOptionComboService import org.hisp.dhis.android.core.common.BaseIdentifiableObject import org.hisp.dhis.android.core.enrollment.Enrollment import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository -import org.hisp.dhis.android.core.enrollment.EnrollmentService +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentServiceImpl import org.hisp.dhis.android.core.event.internal.EventDateUtils +import org.hisp.dhis.android.core.event.internal.EventServiceImpl import org.hisp.dhis.android.core.organisationunit.OrganisationUnitService import org.hisp.dhis.android.core.program.Program import org.hisp.dhis.android.core.program.ProgramCollectionRepository @@ -68,13 +69,13 @@ class EventServiceShould { private val programRepository: ProgramCollectionRepository = mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS) private val programStageRepository: ProgramStageCollectionRepository = mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS) - private val enrollmentService: EnrollmentService = mock() + private val enrollmentService: EnrollmentServiceImpl = mock() private val organisationUnitService: OrganisationUnitService = mock() private val categoryOptionComboService: CategoryOptionComboService = mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS) private val eventDateUtils: EventDateUtils = mock() - private val eventService: EventService = EventService( + private val eventService: EventService = EventServiceImpl( enrollmentRepository, eventRepository, programRepository, programStageRepository, enrollmentService, organisationUnitService, categoryOptionComboService, eventDateUtils ) From 18d4299596fd7fcc1ac14ec22010a8f64b25c48d Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 24 Feb 2022 09:12:45 +0100 Subject: [PATCH 110/253] [ANDROSDK-1507] Evaluate EnrollmentAccess using ProgramTempOwnership --- .../internal/EnrollmentModuleImpl.kt | 4 ++-- .../internal/EnrollmentServiceImpl.kt | 23 ++++++++++++++++--- .../dhis/android/core/event/EventService.kt | 1 + .../core/event/internal/EventModuleImpl.kt | 8 +++---- .../core/event/internal/EventServiceImpl.kt | 5 ++-- .../enrollment/EnrollmentServiceShould.kt | 19 +++++++++++++++ 6 files changed, 48 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt index e67710479d..539b306ba0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt @@ -28,10 +28,10 @@ package org.hisp.dhis.android.core.enrollment.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository import org.hisp.dhis.android.core.enrollment.EnrollmentModule import org.hisp.dhis.android.core.enrollment.EnrollmentService -import javax.inject.Inject @Reusable internal class EnrollmentModuleImpl @Inject constructor( @@ -46,4 +46,4 @@ internal class EnrollmentModuleImpl @Inject constructor( override fun enrollmentService(): EnrollmentService { return enrollmentService } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt index 45421f72e9..4871639024 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt @@ -29,12 +29,15 @@ package org.hisp.dhis.android.core.enrollment.internal import dagger.Reusable import io.reactivex.Single +import java.util.* +import javax.inject.Inject +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.arch.helpers.DateUtils import org.hisp.dhis.android.core.enrollment.EnrollmentAccess import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository import org.hisp.dhis.android.core.enrollment.EnrollmentService import org.hisp.dhis.android.core.enrollment.EnrollmentStatus -import javax.inject.Inject import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.EventCollectionRepository import org.hisp.dhis.android.core.organisationunit.OrganisationUnit @@ -45,6 +48,7 @@ import org.hisp.dhis.android.core.program.ProgramStage import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceCollectionRepository import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwner +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerTableInfo @Reusable internal class EnrollmentServiceImpl @Inject constructor( @@ -55,7 +59,7 @@ internal class EnrollmentServiceImpl @Inject constructor( private val eventCollectionRepository: EventCollectionRepository, private val programStagesCollectionRepository: ProgramStageCollectionRepository, private val programTempOwnerStore: ObjectWithoutUidStore -): EnrollmentService { +) : EnrollmentService { override fun blockingIsOpen(enrollmentUid: String): Boolean { val enrollment = enrollmentRepository.uid(enrollmentUid).blockingGet() ?: return true @@ -76,7 +80,9 @@ internal class EnrollmentServiceImpl @Inject constructor( return when (program.accessLevel()) { AccessLevel.PROTECTED -> - if (isTeiInCaptureScope(trackedEntityInstanceUid)) dataAccess + if (isTeiInCaptureScope(trackedEntityInstanceUid) || + hasTempOwnership(trackedEntityInstanceUid, programUid) + ) dataAccess else EnrollmentAccess.PROTECTED_PROGRAM_DENIED AccessLevel.CLOSED -> if (isTeiInCaptureScope(trackedEntityInstanceUid)) dataAccess @@ -125,4 +131,15 @@ internal class EnrollmentServiceImpl @Inject constructor( override fun allowEventCreation(enrollmentUid: String, stagesToHide: List): Single { return Single.fromCallable { blockingGetAllowEventCreation(enrollmentUid, stagesToHide) } } + + private fun hasTempOwnership(tei: String, program: String): Boolean { + val columns = ProgramTempOwnerTableInfo.Columns + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(columns.TRACKED_ENTITY_INSTANCE, tei) + .appendKeyStringValue(columns.PROGRAM, program) + .appendKeyGreaterOrEqStringValue(columns.VALID_UNTIL, DateUtils.DATE_FORMAT.format(Date())) + .build() + + return programTempOwnerStore.selectOneWhere(whereClause) != null + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt b/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt index 82b01d2d9f..b11cb02ab9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.event import io.reactivex.Single +@Suppress("TooManyFunctions") interface EventService { /** diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt index 47e0d094c7..545e8537e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt @@ -28,13 +28,13 @@ package org.hisp.dhis.android.core.event.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.event.EventCollectionRepository -import org.hisp.dhis.android.core.event.EventFilterCollectionRepository import org.hisp.dhis.android.core.event.EventDownloader -import org.hisp.dhis.android.core.event.search.EventQueryCollectionRepository +import org.hisp.dhis.android.core.event.EventFilterCollectionRepository import org.hisp.dhis.android.core.event.EventModule import org.hisp.dhis.android.core.event.EventService -import javax.inject.Inject +import org.hisp.dhis.android.core.event.search.EventQueryCollectionRepository @Reusable internal class EventModuleImpl @Inject internal constructor( @@ -63,4 +63,4 @@ internal class EventModuleImpl @Inject internal constructor( override fun eventQuery(): EventQueryCollectionRepository { return eventQuery } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt index 8e31782b70..03fcf6b5fa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt @@ -29,9 +29,9 @@ package org.hisp.dhis.android.core.event.internal import dagger.Reusable import io.reactivex.Single +import javax.inject.Inject import org.hisp.dhis.android.core.category.CategoryOptionComboService import org.hisp.dhis.android.core.enrollment.EnrollmentCollectionRepository -import org.hisp.dhis.android.core.enrollment.EnrollmentService import org.hisp.dhis.android.core.enrollment.EnrollmentStatus import org.hisp.dhis.android.core.enrollment.internal.EnrollmentServiceImpl import org.hisp.dhis.android.core.event.* @@ -39,7 +39,6 @@ import org.hisp.dhis.android.core.event.EventService import org.hisp.dhis.android.core.organisationunit.OrganisationUnitService import org.hisp.dhis.android.core.program.ProgramCollectionRepository import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository -import javax.inject.Inject @Reusable @Suppress("LongParameterList", "TooManyFunctions") @@ -52,7 +51,7 @@ internal class EventServiceImpl @Inject constructor( private val organisationUnitService: OrganisationUnitService, private val categoryOptionComboService: CategoryOptionComboService, private val eventDateUtils: EventDateUtils -): EventService { +) : EventService { override fun blockingHasDataWriteAccess(eventUid: String): Boolean { val event = eventRepository.uid(eventUid).blockingGet() ?: return false diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt index 781dbd427d..29e27aff33 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt @@ -27,6 +27,7 @@ */ package org.hisp.dhis.android.core.enrollment +import com.nhaarman.mockitokotlin2.any import com.nhaarman.mockitokotlin2.doReturn import com.nhaarman.mockitokotlin2.mock import com.nhaarman.mockitokotlin2.whenever @@ -64,6 +65,7 @@ class EnrollmentServiceShould { private val enrollment: Enrollment = mock() private val trackedEntityInstance: TrackedEntityInstance = mock() private val program: Program = mock() + private val programTempOwner: ProgramTempOwner = mock() private val enrollmentRepository: EnrollmentCollectionRepository = mock(defaultAnswer = Mockito.RETURNS_DEEP_STUBS) private val trackedEntityInstanceRepository: TrackedEntityInstanceCollectionRepository = @@ -169,11 +171,28 @@ class EnrollmentServiceShould { .uid(organisationUnitId) .blockingExists() ) doReturn false + whenever(programTempOwnerStore.selectOneWhere(any())) doReturn null val access = enrollmentService.blockingGetEnrollmentAccess(trackedEntityInstanceUid, programUid) assert(access == EnrollmentAccess.PROTECTED_PROGRAM_DENIED) } + @Test + fun `GetEnrollmentAccess should return data access if protected program has broken glass`() { + whenever(program.accessLevel()) doReturn AccessLevel.PROTECTED + whenever(program.access()) doReturn AccessHelper.createForDataWrite(true) + whenever( + organisationUnitRepository + .byOrganisationUnitScope(OrganisationUnit.Scope.SCOPE_DATA_CAPTURE) + .uid(organisationUnitId) + .blockingExists() + ) doReturn false + whenever(programTempOwnerStore.selectOneWhere(any())) doReturn programTempOwner + + val access = enrollmentService.blockingGetEnrollmentAccess(trackedEntityInstanceUid, programUid) + assert(access == EnrollmentAccess.WRITE_ACCESS) + } + @Test fun `Enrollment has any events that allows events creation`() { From bb29a954d071dbc291be1ba2cec119f6973f18a4 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 24 Feb 2022 11:42:13 +0100 Subject: [PATCH 111/253] [ANDROSDK-1500] Add messsageOfTheDay to General Settings --- core/src/main/assets/migrations/122.sql | 3 +++ core/src/main/assets/snapshots/{121.sql => 122.sql} | 2 +- .../arch/db/access/internal/BaseDatabaseOpenHelper.java | 2 +- .../android/core/settings/GeneralSettingTableInfo.java | 4 +++- .../hisp/dhis/android/core/settings/GeneralSettings.java | 5 +++++ .../core/settings/internal/GeneralSettingStore.kt | 9 +++++---- .../core/data/settings/GeneralSettingsSamples.java | 1 + .../resources/settings/general_settings_v2.json | 3 ++- .../android/core/settings/GeneralSettingsV2Should.java | 1 + 9 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 core/src/main/assets/migrations/122.sql rename core/src/main/assets/snapshots/{121.sql => 122.sql} (99%) diff --git a/core/src/main/assets/migrations/122.sql b/core/src/main/assets/migrations/122.sql new file mode 100644 index 0000000000..c97622a4a1 --- /dev/null +++ b/core/src/main/assets/migrations/122.sql @@ -0,0 +1,3 @@ +# Add messageOfTheDay (ANDROSDK-1500) + +ALTER TABLE GeneralSetting ADD COLUMN messageOfTheDay TEXT; diff --git a/core/src/main/assets/snapshots/121.sql b/core/src/main/assets/snapshots/122.sql similarity index 99% rename from core/src/main/assets/snapshots/121.sql rename to core/src/main/assets/snapshots/122.sql index eaa7cafc36..ddc2b9481d 100644 --- a/core/src/main/assets/snapshots/121.sql +++ b/core/src/main/assets/snapshots/122.sql @@ -80,7 +80,7 @@ CREATE TABLE SectionGreyedFieldsLink (_id INTEGER PRIMARY KEY AUTOINCREMENT, sec CREATE TABLE AuthenticatedUser (_id INTEGER PRIMARY KEY AUTOINCREMENT, user TEXT NOT NULL UNIQUE, hash TEXT, FOREIGN KEY (user) REFERENCES User (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE UNIQUE INDEX event_data_element ON TrackedEntityDataValue(event, dataElement); CREATE UNIQUE INDEX tracked_entity_instance_attribute ON TrackedEntityAttributeValue(trackedEntityInstance, trackedEntityAttribute); -CREATE TABLE GeneralSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, encryptDB INTEGER, lastUpdated TEXT, reservedValues INTEGER, smsGateway TEXT, smsResultSender TEXT, matomoID INTEGER, matomoURL TEXT, allowScreenCapture INTEGER); +CREATE TABLE GeneralSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, encryptDB INTEGER, lastUpdated TEXT, reservedValues INTEGER, smsGateway TEXT, smsResultSender TEXT, matomoID INTEGER, matomoURL TEXT, allowScreenCapture INTEGER, messageOfTheDay TEXT); CREATE TABLE DataSetSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT UNIQUE, name TEXT, lastUpdated TEXT, periodDSDownload INTEGER, periodDSDBTrimming INTEGER, FOREIGN KEY (uid) REFERENCES DataSet (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE ProgramSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT UNIQUE, name TEXT, lastUpdated TEXT, teiDownload INTEGER, teiDBTrimming INTEGER, eventsDownload INTEGER, eventsDBTrimming INTEGER, updateDownload TEXT, updateDBTrimming TEXT, settingDownload TEXT, settingDBTrimming TEXT, enrollmentDownload TEXT, enrollmentDBTrimming TEXT, eventDateDownload TEXT, eventDateDBTrimming TEXT, enrollmentDateDownload TEXT, enrollmentDateDBTrimming TEXT, FOREIGN KEY (uid) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE SynchronizationSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, dataSync TEXT, metadataSync TEXT, trackerImporterVersion TEXT); diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java index 7dc3013f28..e57b552d2e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java @@ -36,7 +36,7 @@ class BaseDatabaseOpenHelper { - static final int VERSION = 121; + static final int VERSION = 122; private final AssetManager assetManager; private final int targetVersion; diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java index 29a91a0512..1c0c9d447e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java @@ -59,6 +59,7 @@ public static class Columns extends CoreColumns { public static final String MATOMO_ID = "matomoID"; public static final String MATOMO_URL = "matomoURL"; public static final String ALLOW_SCREEN_CAPTURE = "allowScreenCapture"; + public static final String MESSAGE_OF_THE_DAY = "messageOfTheDay"; @Override public String[] all() { @@ -70,7 +71,8 @@ public String[] all() { SMS_RESULT_SENDER, MATOMO_ID, MATOMO_URL, - ALLOW_SCREEN_CAPTURE + ALLOW_SCREEN_CAPTURE, + MESSAGE_OF_THE_DAY ); } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java index 40eb2789b2..1dcef6475c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java @@ -107,6 +107,9 @@ public String numberSmsConfirmation() { @Nullable public abstract Boolean allowScreenCapture(); + @Nullable + public abstract String messageOfTheDay(); + public static GeneralSettings create(Cursor cursor) { return $AutoValue_GeneralSettings.createFromCursor(cursor); } @@ -146,6 +149,8 @@ public abstract static class Builder { public abstract Builder allowScreenCapture(Boolean allowScreenCapture); + public abstract Builder messageOfTheDay(String messageOfTheDay); + public abstract GeneralSettings build(); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt index dbd6bb9c84..c82ef42333 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt @@ -39,7 +39,7 @@ import org.hisp.dhis.android.core.settings.GeneralSettings @Suppress("MagicNumber") internal object GeneralSettingStore { - private val BINDER = StatementBinder { o: GeneralSettings, w: StatementWrapper -> + private val BINDER = StatementBinder { o: GeneralSettings, w: StatementWrapper -> w.bind(1, o.encryptDB()) w.bind(2, o.lastUpdated()) w.bind(3, o.reservedValues()) @@ -48,13 +48,14 @@ internal object GeneralSettingStore { w.bind(6, o.matomoID()) w.bind(7, o.matomoURL()) w.bind(8, o.allowScreenCapture()) + w.bind(9, o.messageOfTheDay()) } - private val WHERE_UPDATE_BINDER = WhereStatementBinder { + private val WHERE_UPDATE_BINDER = WhereStatementBinder { _: GeneralSettings, _: StatementWrapper -> } - private val WHERE_DELETE_BINDER = WhereStatementBinder { + private val WHERE_DELETE_BINDER = WhereStatementBinder { _: GeneralSettings, _: StatementWrapper -> } @@ -62,6 +63,6 @@ internal object GeneralSettingStore { return objectWithoutUidStore( databaseAdapter, GeneralSettingTableInfo.TABLE_INFO, BINDER, WHERE_UPDATE_BINDER, WHERE_DELETE_BINDER - ) { cursor: Cursor? -> GeneralSettings.create(cursor) } + ) { cursor: Cursor -> GeneralSettings.create(cursor) } } } diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java index 46c7c1cb4c..1714a8ff40 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java @@ -44,6 +44,7 @@ public static GeneralSettings getGeneralSettings() { .matomoID(123) .matomoURL("https://www.matomo.org") .allowScreenCapture(true) + .messageOfTheDay("Message of the day") .build(); } } \ No newline at end of file diff --git a/core/src/sharedTest/resources/settings/general_settings_v2.json b/core/src/sharedTest/resources/settings/general_settings_v2.json index 928b279045..b7d1d893de 100644 --- a/core/src/sharedTest/resources/settings/general_settings_v2.json +++ b/core/src/sharedTest/resources/settings/general_settings_v2.json @@ -5,5 +5,6 @@ "smsGateway": "+84566464", "reservedValues": 40, "smsResultSender": "+9456498778", - "allowScreenCapture": true + "allowScreenCapture": true, + "messageOfTheDay": "Message of the day" } \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java b/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java index fb396bfb05..fa7ecdcb56 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java @@ -60,5 +60,6 @@ public void map_from_json_string() throws IOException, ParseException { assertThat(generalSettings.matomoID()).isEqualTo(123); assertThat(generalSettings.matomoURL()).isEqualTo("https://www.matomo.org"); assertThat(generalSettings.allowScreenCapture()).isTrue(); + assertThat(generalSettings.messageOfTheDay()).isEqualTo("Message of the day"); } } From a014ce3f85df5874d68df6c6ca9f0ed46e60725e Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 25 Feb 2022 14:26:35 +0100 Subject: [PATCH 112/253] [ANDROSDK-1500] Add optionalSearch to ProgramConfiguration --- ...figurationSettingStoreIntegrationShould.kt | 48 ++++++ ...ObjectRepositoryMockIntegrationShould.java | 18 +++ core/src/main/assets/migrations/122.sql | 7 +- core/src/main/assets/snapshots/122.sql | 2 +- .../core/mockwebserver/Dhis2MockServer.java | 2 +- .../core/settings/AppearanceSettings.java | 24 ++- .../core/settings/AppearanceSettingsHelper.kt | 100 ++++++++++++ .../AppearanceSettingsObjectRepository.java | 93 +++++------ .../settings/ProgramConfigurationSetting.java | 79 ++++++++++ ...ProgramConfigurationSettingTableInfo.java} | 12 +- .../ProgramConfigurationSettings.java | 67 ++++++++ .../internal/AppearanceSettingCall.kt | 10 +- ...gramConfigurationSettingEntityDIModule.kt} | 12 +- ... => ProgramConfigurationSettingHandler.kt} | 10 +- ...kt => ProgramConfigurationSettingStore.kt} | 32 ++-- .../settings/internal/SettingModuleWiper.java | 4 +- .../internal/SettingPackageDIModule.kt | 2 +- .../settings/internal/SettingsAppHelper.kt | 34 +--- ...> ProgramConfigurationSettingSamples.java} | 11 +- ...tings.json => appearance_settings_v1.json} | 0 .../settings/appearance_settings_v2.json | 145 ++++++++++++++++++ ...d.java => AppearanceSettingsV1Should.java} | 16 +- .../settings/AppearanceSettingsV2Should.java | 100 ++++++++++++ .../internal/AppearanceSettingsCallShould.kt | 18 +-- ...ogramConfigurationSettingHandlerShould.kt} | 33 ++-- 25 files changed, 722 insertions(+), 157 deletions(-) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsHelper.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java rename core/src/main/java/org/hisp/dhis/android/core/settings/{CompletionSpinnerTableInfo.java => ProgramConfigurationSettingTableInfo.java} (86%) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java rename core/src/main/java/org/hisp/dhis/android/core/settings/internal/{CompletionSpinnerEntityDIModule.kt => ProgramConfigurationSettingEntityDIModule.kt} (83%) rename core/src/main/java/org/hisp/dhis/android/core/settings/internal/{CompletionSpinnerHandler.kt => ProgramConfigurationSettingHandler.kt} (82%) rename core/src/main/java/org/hisp/dhis/android/core/settings/internal/{CompletionSpinnerStore.kt => ProgramConfigurationSettingStore.kt} (70%) rename core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/{CompletionSpinnerSamples.java => ProgramConfigurationSettingSamples.java} (84%) rename core/src/sharedTest/resources/settings/{appearance_settings.json => appearance_settings_v1.json} (100%) create mode 100644 core/src/sharedTest/resources/settings/appearance_settings_v2.json rename core/src/test/java/org/hisp/dhis/android/core/settings/{AppearanceSettingsShould.java => AppearanceSettingsV1Should.java} (83%) create mode 100644 core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java rename core/src/test/java/org/hisp/dhis/android/core/settings/internal/{CompletionSettingHandlerShould.kt => ProgramConfigurationSettingHandlerShould.kt} (62%) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt new file mode 100644 index 0000000000..3b771a9adb --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.settings.internal + +import org.hisp.dhis.android.core.data.database.ObjectStoreAbstractIntegrationShould +import org.hisp.dhis.android.core.data.settings.ProgramConfigurationSettingSamples +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting +import org.hisp.dhis.android.core.settings.ProgramConfigurationSettingTableInfo +import org.hisp.dhis.android.core.utils.integration.mock.TestDatabaseAdapterFactory +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class ProgramConfigurationSettingStoreIntegrationShould : + ObjectStoreAbstractIntegrationShould( + ProgramConfigurationSettingStore.create(TestDatabaseAdapterFactory.get()), + ProgramConfigurationSettingTableInfo.TABLE_INFO, + TestDatabaseAdapterFactory.get() + ) { + override fun buildObject(): ProgramConfigurationSetting { + return ProgramConfigurationSettingSamples.get() + } +} diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java index 61d333e120..1dfa5ea955 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java @@ -33,6 +33,7 @@ import org.hisp.dhis.android.core.settings.DataSetFilter; import org.hisp.dhis.android.core.settings.FilterSetting; import org.hisp.dhis.android.core.settings.HomeFilter; +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting; import org.hisp.dhis.android.core.settings.ProgramFilter; import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestFullDispatcher; import org.hisp.dhis.android.core.utils.runner.D2JunitRunner; @@ -77,6 +78,14 @@ public void should_return_only_programFilters_for_specific_uid() { assertThat(specificFilters.get(ProgramFilter.ENROLLMENT_STATUS).uid()).isEqualTo(UID); } + @Test + public void should_return_global_program_configuration_setting() { + ProgramConfigurationSetting setting = d2.settingModule().appearanceSettings().getGlobalProgramConfigurationSetting(); + assertThat(setting.uid()).isNull(); + assertThat(setting.completionSpinner()).isEqualTo(true); + assertThat(setting.optionalSearch()).isNull(); + } + @Test public void should_return_global_completion_spinner_settings() { CompletionSpinner completionSpinner = d2.settingModule().appearanceSettings().getGlobalCompletionSpinner(); @@ -84,6 +93,15 @@ public void should_return_global_completion_spinner_settings() { assertThat(completionSpinner.visible()).isEqualTo(true); } + @Test + public void should_return_program_configuration_setting_for_specific_uid() { + String UID = "IpHINAT79UW"; + ProgramConfigurationSetting setting = d2.settingModule().appearanceSettings().getProgramConfigurationByUid(UID); + assertThat(setting.uid()).isEqualTo(UID); + assertThat(setting.completionSpinner()).isEqualTo(true); + assertThat(setting.optionalSearch()).isEqualTo(true); + } + @Test public void should_return_completion_spinner_settings_for_specific_uid() { String UID = "IpHINAT79UW"; diff --git a/core/src/main/assets/migrations/122.sql b/core/src/main/assets/migrations/122.sql index c97622a4a1..c06a3af05e 100644 --- a/core/src/main/assets/migrations/122.sql +++ b/core/src/main/assets/migrations/122.sql @@ -1,3 +1,8 @@ -# Add messageOfTheDay (ANDROSDK-1500) +# Add messageOfTheDay (ANDROSDK-1500); add ProgramConfigurationSetting (ANDROSDK-1501) ALTER TABLE GeneralSetting ADD COLUMN messageOfTheDay TEXT; + +CREATE TABLE ProgramConfigurationSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT, completionSpinner INTEGER, optionalSearch INTEGER); +INSERT INTO ProgramConfigurationSetting(_id, uid, completionSpinner) SELECT _id, uid, visible FROM CompletionSpinner; + +DROP TABLE IF EXISTS CompletionSpinner; \ No newline at end of file diff --git a/core/src/main/assets/snapshots/122.sql b/core/src/main/assets/snapshots/122.sql index ddc2b9481d..65446e2d70 100644 --- a/core/src/main/assets/snapshots/122.sql +++ b/core/src/main/assets/snapshots/122.sql @@ -85,7 +85,7 @@ CREATE TABLE DataSetSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT UNI CREATE TABLE ProgramSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT UNIQUE, name TEXT, lastUpdated TEXT, teiDownload INTEGER, teiDBTrimming INTEGER, eventsDownload INTEGER, eventsDBTrimming INTEGER, updateDownload TEXT, updateDBTrimming TEXT, settingDownload TEXT, settingDBTrimming TEXT, enrollmentDownload TEXT, enrollmentDBTrimming TEXT, eventDateDownload TEXT, eventDateDBTrimming TEXT, enrollmentDateDownload TEXT, enrollmentDateDBTrimming TEXT, FOREIGN KEY (uid) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE SynchronizationSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, dataSync TEXT, metadataSync TEXT, trackerImporterVersion TEXT); CREATE TABLE FilterSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, scope TEXT, filterType TEXT, uid TEXT, sort INTEGER, filter INTEGER); -CREATE TABLE CompletionSpinner (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT, visible INTEGER); +CREATE TABLE ProgramConfigurationSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT, completionSpinner INTEGER, optionalSearch INTEGER); CREATE TABLE AnalyticsTeiSetting (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT NOT NULL UNIQUE, name TEXT NOT NULL, shortName TEXT NOT NULL, program TEXT NOT NULL, programStage TEXT, period TEXT, type TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (programStage) REFERENCES ProgramStage (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE AnalyticsTeiDataElement (_id INTEGER PRIMARY KEY AUTOINCREMENT, teiSetting TEXT NOT NULL, whoComponent TEXT, programStage TEXT, dataElement TEXT NOT NULL, FOREIGN KEY (programStage) REFERENCES ProgramStage (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (dataElement) REFERENCES DataElement (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (teiSetting) REFERENCES AnalyticsTeiSetting (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE AnalyticsTeiIndicator (_id INTEGER PRIMARY KEY AUTOINCREMENT, teiSetting TEXT NOT NULL, whoComponent TEXT, programStage TEXT, indicator TEXT NOT NULL, FOREIGN KEY (programStage) REFERENCES ProgramStage (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (indicator) REFERENCES ProgramIndicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (teiSetting) REFERENCES AnalyticsTeiSetting (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); diff --git a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java index 4f58002cfa..8433347f5e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java @@ -62,7 +62,7 @@ public class Dhis2MockServer { private static final String DATASET_SETTINGS_JSON = "settings/dataset_settings.json"; private static final String PROGRAM_SETTINGS_JSON = "settings/program_settings.json"; private static final String SYNCHRONIZATION_SETTTINGS_JSON = "settings/synchronization_settings.json"; - private static final String APPEARANCE_SETTINGS_JSON = "settings/appearance_settings.json"; + private static final String APPEARANCE_SETTINGS_JSON = "settings/appearance_settings_v2.json"; private static final String ANALYTICS_SETTINGS_JSON = "settings/analytics_settings_v2.json"; private static final String USER_SETTINGS_JSON = "settings/user_settings.json"; private static final String PROGRAMS_JSON = "program/programs.json"; diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java index 12ff829486..9829ccdb33 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java @@ -43,6 +43,11 @@ public abstract class AppearanceSettings { @JsonProperty public abstract FilterSorting filterSorting(); + @Nullable + @JsonProperty + public abstract ProgramConfigurationSettings programConfiguration(); + + @Deprecated @Nullable @JsonProperty public abstract CompletionSpinnerSetting completionSpinner(); @@ -59,8 +64,25 @@ public abstract static class Builder { public abstract Builder filterSorting(FilterSorting filterSorting); + public abstract Builder programConfiguration(ProgramConfigurationSettings programConfiguration); + + @Deprecated public abstract Builder completionSpinner(CompletionSpinnerSetting completionSpinnerSetting); - public abstract AppearanceSettings build(); + // Auxiliary fields + abstract ProgramConfigurationSettings programConfiguration(); + abstract CompletionSpinnerSetting completionSpinner(); + + abstract AppearanceSettings autoBuild(); + + @SuppressWarnings("PMD.ConfusingTernary") + public AppearanceSettings build() { + if (programConfiguration() != null) { + completionSpinner(AppearanceSettingsHelper.programToCompletionSpinner(programConfiguration())); + } else if (completionSpinner() != null) { + programConfiguration(AppearanceSettingsHelper.completionSpinnerToProgram(completionSpinner())); + } + return autoBuild(); + } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsHelper.kt new file mode 100644 index 0000000000..ce70348abe --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsHelper.kt @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.settings + +import org.hisp.dhis.android.core.common.ObjectWithUidInterface + +internal object AppearanceSettingsHelper { + + @JvmStatic + fun getGlobal(list: List): O? { + return list.find { it.uid() == null } + } + + @JvmStatic + fun getSpecifics(list: List): Map { + return list + .filter { it.uid() != null } + .associateBy { it.uid()!! } + } + + // Compatibility methods + + @JvmStatic + fun completionSpinnerToProgram(completionSpinnerSetting: CompletionSpinnerSetting?): ProgramConfigurationSettings { + val globalSettings = completionSpinnerSetting?.globalSettings()?.let { + toProgramConfiguration(it) + } + + val specificSettings = completionSpinnerSetting?.specificSettings()?.map { (key, value) -> + key to toProgramConfiguration(value) + }?.toMap() + + return ProgramConfigurationSettings.builder() + .globalSettings(globalSettings) + .specificSettings(specificSettings) + .build() + } + + @JvmStatic + fun programToCompletionSpinner(programConfiguration: ProgramConfigurationSettings?): CompletionSpinnerSetting { + val globalSettings = programConfiguration?.globalSettings()?.let { + toCompletionSpinner(it) + } + + val specificSettings = programConfiguration?.specificSettings()?.map { (key, value) -> + key to toCompletionSpinner(value) + }?.toMap() + + return CompletionSpinnerSetting.builder() + .globalSettings(globalSettings) + .specificSettings(specificSettings) + .build() + } + + @JvmStatic + fun toProgramConfiguration(completionSpinner: CompletionSpinner?): ProgramConfigurationSetting? { + return completionSpinner?.let { + ProgramConfigurationSetting.builder() + .uid(it.uid()) + .completionSpinner(it.visible()) + .build() + } + } + + @JvmStatic + fun toCompletionSpinner(programConfiguration: ProgramConfigurationSetting?): CompletionSpinner? { + return programConfiguration?.let { + CompletionSpinner.builder() + .uid(it.uid()) + .visible(it.completionSpinner()) + .build() + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java index 43f482548d..87424568d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java @@ -48,45 +48,46 @@ public class AppearanceSettingsObjectRepository implements ReadOnlyWithDownloadObjectRepository { private final ObjectWithoutUidStore filterSettingStore; - private final ObjectWithoutUidStore completionSpinnerStore; + private final ObjectWithoutUidStore programConfigurationSettingStore; @Inject AppearanceSettingsObjectRepository(ObjectWithoutUidStore filterSettingStore, - ObjectWithoutUidStore completionSpinnerStore, + ObjectWithoutUidStore + programConfigurationSettingStore, AppearanceSettingCall appearanceSettingCall) { super(appearanceSettingCall); this.filterSettingStore = filterSettingStore; - this.completionSpinnerStore = completionSpinnerStore; + this.programConfigurationSettingStore = programConfigurationSettingStore; } @Override public AppearanceSettings blockingGet() { List filters = filterSettingStore.selectAll(); - List completionSpinnerList = completionSpinnerStore.selectAll(); + List programConfigurationSettingList = + programConfigurationSettingStore.selectAll(); - if (filters.isEmpty() && completionSpinnerList.isEmpty()) { + if (filters.isEmpty() && programConfigurationSettingList.isEmpty()) { return null; } //FilterSorting - FilterSorting.Builder filterSortingBuilder = FilterSorting.builder(); - filterSortingBuilder.home(getHomeFilters(filters)); - filterSortingBuilder.dataSetSettings(getDataSetFilters(filters)); - filterSortingBuilder.programSettings(getProgramFilters(filters)); - FilterSorting filterSorting = filterSortingBuilder.build(); - - //CompletionSpinner - CompletionSpinnerSetting.Builder completionSpinnerSettingBuilder = CompletionSpinnerSetting.builder(); - completionSpinnerSettingBuilder.globalSettings(getGlobalCompletionSpinner(completionSpinnerList)); - completionSpinnerSettingBuilder.specificSettings(getSpecificCompletionsSpinners(completionSpinnerList)); - CompletionSpinnerSetting completionSpinnerSetting = completionSpinnerSettingBuilder.build(); - - //Appearance - AppearanceSettings.Builder appearanceSettingsBuilder = AppearanceSettings.builder(); - appearanceSettingsBuilder.filterSorting(filterSorting); - appearanceSettingsBuilder.completionSpinner(completionSpinnerSetting); - - return appearanceSettingsBuilder.build(); + FilterSorting filterSorting = FilterSorting.builder() + .home(getHomeFilters(filters)) + .dataSetSettings(getDataSetFilters(filters)) + .programSettings(getProgramFilters(filters)) + .build(); + + //ProgramConfigurationSettings + ProgramConfigurationSettings programConfigurationSettings = ProgramConfigurationSettings.builder() + .globalSettings(AppearanceSettingsHelper.getGlobal(programConfigurationSettingList)) + .specificSettings(AppearanceSettingsHelper.getSpecifics(programConfigurationSettingList)) + .build(); + + return AppearanceSettings.builder() + .filterSorting(filterSorting) + .programConfiguration(programConfigurationSettings) + .completionSpinner(AppearanceSettingsHelper.programToCompletionSpinner(programConfigurationSettings)) + .build(); } public Map getHomeFilters() { @@ -121,28 +122,6 @@ public Map getProgramFiltersByUid(String uid) { return filters; } - private Map getSpecificCompletionsSpinners( - List completionSpinnerList - ) { - Map result = new HashMap<>(); - for (CompletionSpinner completionSpinner : completionSpinnerList) { - if (completionSpinner.uid() != null) { - result.put(completionSpinner.uid(), completionSpinner); - } - } - - return result; - } - - private CompletionSpinner getGlobalCompletionSpinner(List completionSpinnerList) { - for (CompletionSpinner completionSpinner : completionSpinnerList) { - if (completionSpinner.uid() == null) { - return completionSpinner; - } - } - return null; - } - private Map getHomeFilters(List filters) { Map homeFilters = new HashMap<>(); for (FilterSetting filter : filters) { @@ -213,17 +192,29 @@ private Map createRegistryForSpecificProgramFilter return programFilters; } + public ProgramConfigurationSetting getGlobalProgramConfigurationSetting() { + List programSettingList = programConfigurationSettingStore.selectAll(); + return AppearanceSettingsHelper.getGlobal(programSettingList); + } + + @Deprecated public CompletionSpinner getGlobalCompletionSpinner() { - List completionSpinnerList = completionSpinnerStore.selectAll(); - return getGlobalCompletionSpinner(completionSpinnerList); + ProgramConfigurationSetting setting = getGlobalProgramConfigurationSetting(); + return AppearanceSettingsHelper.toCompletionSpinner(setting); } - public CompletionSpinner getCompletionSpinnerByUid(String uid) { - List completionSpinnerList = completionSpinnerStore.selectAll(); - CompletionSpinner result = getSpecificCompletionsSpinners(completionSpinnerList).get(uid); + public ProgramConfigurationSetting getProgramConfigurationByUid(String uid) { + List programSettingList = programConfigurationSettingStore.selectAll(); + ProgramConfigurationSetting result = AppearanceSettingsHelper.getSpecifics(programSettingList).get(uid); if (result == null) { - result = getGlobalCompletionSpinner(); + result = getGlobalProgramConfigurationSetting(); } return result; } + + @Deprecated + public CompletionSpinner getCompletionSpinnerByUid(String uid) { + ProgramConfigurationSetting setting = getProgramConfigurationByUid(uid); + return AppearanceSettingsHelper.toCompletionSpinner(setting); + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java new file mode 100644 index 0000000000..434fe7273f --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.settings; + +import android.database.Cursor; + +import androidx.annotation.Nullable; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; +import com.google.auto.value.AutoValue; + +import org.hisp.dhis.android.core.common.CoreObject; +import org.hisp.dhis.android.core.common.ObjectWithUidInterface; + +@AutoValue +@JsonDeserialize(builder = AutoValue_ProgramConfigurationSetting.Builder.class) +public abstract class ProgramConfigurationSetting implements CoreObject, ObjectWithUidInterface { + + @Nullable + public abstract String uid(); + + @Nullable + public abstract Boolean completionSpinner(); + + @Nullable + public abstract Boolean optionalSearch(); + + public static ProgramConfigurationSetting create(Cursor cursor) { + return AutoValue_ProgramConfigurationSetting.createFromCursor(cursor); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_ProgramConfigurationSetting.Builder(); + } + + @AutoValue.Builder + @JsonPOJOBuilder(withPrefix = "") + public abstract static class Builder { + + public abstract Builder id(Long id); + + public abstract Builder uid(String uid); + + public abstract Builder completionSpinner(Boolean completionSpinner); + + public abstract Builder optionalSearch(Boolean optionalSearch); + + public abstract ProgramConfigurationSetting build(); + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinnerTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettingTableInfo.java similarity index 86% rename from core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinnerTableInfo.java rename to core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettingTableInfo.java index 01719bbc5a..16cad36612 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinnerTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettingTableInfo.java @@ -33,15 +33,15 @@ import org.hisp.dhis.android.core.common.CoreColumns; import org.hisp.dhis.android.core.common.IdentifiableColumns; -public class CompletionSpinnerTableInfo { +public class ProgramConfigurationSettingTableInfo { - private CompletionSpinnerTableInfo() { + private ProgramConfigurationSettingTableInfo() { } public static final TableInfo TABLE_INFO = new TableInfo() { @Override public String name() { - return "CompletionSpinner"; + return "ProgramConfigurationSetting"; } @Override @@ -52,13 +52,15 @@ public CoreColumns columns() { public static class Columns extends CoreColumns { public static final String UID = IdentifiableColumns.UID; - public static final String VISIBLE = "visible"; + public static final String COMPLETION_SPINNER = "completionSpinner"; + public static final String OPTIONAL_SEARCH = "optionalSearch"; @Override public String[] all() { return CollectionsHelper.appendInNewArray(super.all(), UID, - VISIBLE + COMPLETION_SPINNER, + OPTIONAL_SEARCH ); } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java new file mode 100644 index 0000000000..8429dd1301 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.settings; + +import androidx.annotation.Nullable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; +import com.google.auto.value.AutoValue; + +import java.util.Map; + +@AutoValue +@JsonDeserialize(builder = AutoValue_ProgramConfigurationSettings.Builder.class) +public abstract class ProgramConfigurationSettings { + + @Nullable + @JsonProperty + public abstract ProgramConfigurationSetting globalSettings(); + + @Nullable + @JsonProperty + public abstract Map specificSettings(); + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_ProgramConfigurationSettings.Builder(); + } + + @AutoValue.Builder + @JsonPOJOBuilder(withPrefix = "") + public abstract static class Builder { + public abstract Builder globalSettings(ProgramConfigurationSetting globalSettings); + + public abstract Builder specificSettings(Map specificSettings); + + public abstract ProgramConfigurationSettings build(); + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt index ba7b2d9e56..eed3b637de 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt @@ -37,13 +37,13 @@ import org.hisp.dhis.android.core.arch.handlers.internal.Handler import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.settings.AppearanceSettings -import org.hisp.dhis.android.core.settings.CompletionSpinner import org.hisp.dhis.android.core.settings.FilterSetting +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting @Reusable internal class AppearanceSettingCall @Inject constructor( private val filterSettingHandler: Handler, - private val completionSpinnerHandler: Handler, + private val programConfigurationSettingHandler: Handler, private val settingAppService: SettingAppService, private val apiCallExecutor: RxAPICallExecutor, private val appVersionManager: SettingsAppInfoManager @@ -75,9 +75,9 @@ internal class AppearanceSettingCall @Inject constructor( } ?: emptyList() filterSettingHandler.handleMany(filterSettingsList) - val completionSpinnerSettings = item?.let { - SettingsAppHelper.getCompletionSpinnerList(it) + val programConfigurationSettings = item?.let { + SettingsAppHelper.getProgramConfigurationSettingList(it) } ?: emptyList() - completionSpinnerHandler.handleMany(completionSpinnerSettings) + programConfigurationSettingHandler.handleMany(programConfigurationSettings) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingEntityDIModule.kt similarity index 83% rename from core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerEntityDIModule.kt rename to core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingEntityDIModule.kt index 3bd300d435..64317ecda7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingEntityDIModule.kt @@ -34,20 +34,20 @@ import dagger.Reusable import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.handlers.internal.Handler -import org.hisp.dhis.android.core.settings.CompletionSpinner +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting @Module -internal class CompletionSpinnerEntityDIModule { +internal class ProgramConfigurationSettingEntityDIModule { @Provides @Reusable - fun store(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { - return CompletionSpinnerStore.create(databaseAdapter) + fun store(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { + return ProgramConfigurationSettingStore.create(databaseAdapter) } @Provides @Reusable - fun handler(store: ObjectWithoutUidStore): Handler { - return CompletionSpinnerHandler(store) + fun handler(store: ObjectWithoutUidStore): Handler { + return ProgramConfigurationSettingHandler(store) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandler.kt similarity index 82% rename from core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerHandler.kt rename to core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandler.kt index 10aeefcb84..add9c12120 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandler.kt @@ -30,12 +30,14 @@ package org.hisp.dhis.android.core.settings.internal import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.handlers.internal.ObjectWithoutUidHandlerImpl -import org.hisp.dhis.android.core.settings.CompletionSpinner +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting -internal class CompletionSpinnerHandler(store: ObjectWithoutUidStore) : - ObjectWithoutUidHandlerImpl(store) { +internal class ProgramConfigurationSettingHandler(store: ObjectWithoutUidStore) : + ObjectWithoutUidHandlerImpl(store) { - override fun beforeCollectionHandled(oCollection: Collection): Collection { + override fun beforeCollectionHandled( + oCollection: Collection + ): Collection { store.delete() return oCollection } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStore.kt similarity index 70% rename from core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerStore.kt rename to core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStore.kt index a03efefa0d..5b708b3abf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/CompletionSpinnerStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStore.kt @@ -35,29 +35,33 @@ import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapp import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory -import org.hisp.dhis.android.core.settings.CompletionSpinner -import org.hisp.dhis.android.core.settings.CompletionSpinnerTableInfo +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting +import org.hisp.dhis.android.core.settings.ProgramConfigurationSettingTableInfo @Suppress("MagicNumber") -internal object CompletionSpinnerStore { +internal object ProgramConfigurationSettingStore { - private val BINDER = StatementBinder { o: CompletionSpinner, w: StatementWrapper -> - w.bind(1, o.uid()) - w.bind(2, o.visible()) - } + private val BINDER = + StatementBinder { o: ProgramConfigurationSetting, w: StatementWrapper -> + w.bind(1, o.uid()) + w.bind(2, o.completionSpinner()) + w.bind(3, o.optionalSearch()) + } - private val WHERE_UPDATE_BINDER = WhereStatementBinder { _: CompletionSpinner, _: StatementWrapper -> - } + private val WHERE_UPDATE_BINDER = + WhereStatementBinder { _: ProgramConfigurationSetting, _: StatementWrapper -> + } - private val WHERE_DELETE_BINDER = WhereStatementBinder { _: CompletionSpinner, _: StatementWrapper -> - } + private val WHERE_DELETE_BINDER = + WhereStatementBinder { _: ProgramConfigurationSetting, _: StatementWrapper -> + } - fun create(databaseAdapter: DatabaseAdapter?): ObjectWithoutUidStore { + fun create(databaseAdapter: DatabaseAdapter?): ObjectWithoutUidStore { return StoreFactory.objectWithoutUidStore( - databaseAdapter!!, CompletionSpinnerTableInfo.TABLE_INFO, + databaseAdapter!!, ProgramConfigurationSettingTableInfo.TABLE_INFO, BINDER, WHERE_UPDATE_BINDER, WHERE_DELETE_BINDER - ) { cursor: Cursor? -> CompletionSpinner.create(cursor) } + ) { cursor: Cursor -> ProgramConfigurationSetting.create(cursor) } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java index e1c490436b..3bfbae3d6f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java @@ -32,7 +32,7 @@ import org.hisp.dhis.android.core.settings.AnalyticsTeiDataElementTableInfo; import org.hisp.dhis.android.core.settings.AnalyticsTeiIndicatorTableInfo; import org.hisp.dhis.android.core.settings.AnalyticsTeiSettingTableInfo; -import org.hisp.dhis.android.core.settings.CompletionSpinnerTableInfo; +import org.hisp.dhis.android.core.settings.ProgramConfigurationSettingTableInfo; import org.hisp.dhis.android.core.settings.DataSetSettingTableInfo; import org.hisp.dhis.android.core.settings.FilterSettingTableInfo; import org.hisp.dhis.android.core.settings.GeneralSettingTableInfo; @@ -65,7 +65,7 @@ public void wipeMetadata() { tableWiper.wipeTable(ProgramSettingTableInfo.TABLE_INFO); tableWiper.wipeTable(SynchronizationSettingTableInfo.TABLE_INFO); tableWiper.wipeTable(FilterSettingTableInfo.TABLE_INFO); - tableWiper.wipeTable(CompletionSpinnerTableInfo.TABLE_INFO); + tableWiper.wipeTable(ProgramConfigurationSettingTableInfo.TABLE_INFO); tableWiper.wipeTable(AnalyticsTeiSettingTableInfo.TABLE_INFO); tableWiper.wipeTable(AnalyticsTeiDataElementTableInfo.TABLE_INFO); tableWiper.wipeTable(AnalyticsTeiIndicatorTableInfo.TABLE_INFO); diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt index 0a487a9d7c..c41f00ee10 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt @@ -43,7 +43,7 @@ import retrofit2.Retrofit SynchronizationSettingEntityDIModule::class, FilterSettingEntityDIModule::class, SystemSettingEntityDIModule::class, - CompletionSpinnerEntityDIModule::class + ProgramConfigurationSettingEntityDIModule::class ] ) internal class SettingPackageDIModule { diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt index 5dddd3c79f..766025bf8b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt @@ -27,31 +27,7 @@ */ package org.hisp.dhis.android.core.settings.internal -import org.hisp.dhis.android.core.settings.AnalyticsDhisVisualization -import org.hisp.dhis.android.core.settings.AnalyticsDhisVisualizationScope -import org.hisp.dhis.android.core.settings.AnalyticsDhisVisualizationsGroup -import org.hisp.dhis.android.core.settings.AnalyticsSettings -import org.hisp.dhis.android.core.settings.AnalyticsTeiAttribute -import org.hisp.dhis.android.core.settings.AnalyticsTeiData -import org.hisp.dhis.android.core.settings.AnalyticsTeiDataElement -import org.hisp.dhis.android.core.settings.AnalyticsTeiIndicator -import org.hisp.dhis.android.core.settings.AnalyticsTeiSetting -import org.hisp.dhis.android.core.settings.AnalyticsTeiWHONutritionData -import org.hisp.dhis.android.core.settings.AnalyticsTeiWHONutritionItem -import org.hisp.dhis.android.core.settings.AppearanceSettings -import org.hisp.dhis.android.core.settings.ChartType -import org.hisp.dhis.android.core.settings.CompletionSpinner -import org.hisp.dhis.android.core.settings.DataSetFilter -import org.hisp.dhis.android.core.settings.DataSetFilters -import org.hisp.dhis.android.core.settings.DataSetSetting -import org.hisp.dhis.android.core.settings.DataSetSettings -import org.hisp.dhis.android.core.settings.FilterSetting -import org.hisp.dhis.android.core.settings.HomeFilter -import org.hisp.dhis.android.core.settings.ProgramFilter -import org.hisp.dhis.android.core.settings.ProgramFilters -import org.hisp.dhis.android.core.settings.ProgramSetting -import org.hisp.dhis.android.core.settings.ProgramSettings -import org.hisp.dhis.android.core.settings.WHONutritionComponent +import org.hisp.dhis.android.core.settings.* @Suppress("TooManyFunctions") internal object SettingsAppHelper { @@ -127,9 +103,11 @@ internal object SettingsAppHelper { return listOf(globalFilters, specificFilters).flatten() } - fun getCompletionSpinnerList(appearanceSettings: AppearanceSettings): List { - val list = mutableListOf() - appearanceSettings.completionSpinner()?.let { settings -> + fun getProgramConfigurationSettingList( + appearanceSettings: AppearanceSettings + ): List { + val list = mutableListOf() + appearanceSettings.programConfiguration()?.let { settings -> settings.globalSettings()?.let { list.add(it) } diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/CompletionSpinnerSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramConfigurationSettingSamples.java similarity index 84% rename from core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/CompletionSpinnerSamples.java rename to core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramConfigurationSettingSamples.java index be12aa6021..cf14a81f02 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/CompletionSpinnerSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramConfigurationSettingSamples.java @@ -28,15 +28,16 @@ package org.hisp.dhis.android.core.data.settings; -import org.hisp.dhis.android.core.settings.CompletionSpinner; +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting; -public class CompletionSpinnerSamples { +public class ProgramConfigurationSettingSamples { - public static CompletionSpinner getCompletionSpinner() { - return CompletionSpinner.builder() + public static ProgramConfigurationSetting get() { + return ProgramConfigurationSetting.builder() .id(1L) .uid("aBcDeFg") - .visible(true) + .completionSpinner(true) + .optionalSearch(true) .build(); } } diff --git a/core/src/sharedTest/resources/settings/appearance_settings.json b/core/src/sharedTest/resources/settings/appearance_settings_v1.json similarity index 100% rename from core/src/sharedTest/resources/settings/appearance_settings.json rename to core/src/sharedTest/resources/settings/appearance_settings_v1.json diff --git a/core/src/sharedTest/resources/settings/appearance_settings_v2.json b/core/src/sharedTest/resources/settings/appearance_settings_v2.json new file mode 100644 index 0000000000..7e8a30f49a --- /dev/null +++ b/core/src/sharedTest/resources/settings/appearance_settings_v2.json @@ -0,0 +1,145 @@ +{ + "filterSorting": { + "home": { + "date": { + "sort": "true", + "filter": "true" + }, + "syncStatus": { + "sort": "true", + "filter": "true" + }, + "assignedToMe": { + "sort": "true", + "filter": "true" + }, + "organisationUnit": { + "sort": "true", + "filter": "true" + } + }, + "dataSetSettings": { + "globalSettings": { + "period": { + "sort": "true", + "filter": "true" + }, + "syncStatus": { + "sort": "true", + "filter": "true" + }, + "organisationUnit": { + "sort": "true", + "filter": "true" + } + }, + "specificSettings": { + "lyLU2wR22tC": { + "period": { + "sort": "true", + "filter": "true" + }, + "syncStatus": { + "sort": "false", + "filter": "false" + }, + "categoryCombo": { + "sort": "true", + "filter": "true" + }, + "organisationUnit": { + "sort": "false", + "filter": "false" + }, + "newFilter1": { + "sort": "false", + "filter": "false" + }, + "newFilter2": { + "sort": "false", + "filter": "false" + } + } + } + }, + "programSettings": { + "globalSettings": { + "eventDate": { + "sort": "true", + "filter": "true" + }, + "syncStatus": { + "sort": "true", + "filter": "true" + }, + "eventStatus": { + "sort": "true", + "filter": "true" + }, + "assignedToMe": { + "sort": "true", + "filter": "true" + }, + "enrollmentDate": { + "sort": "true", + "filter": "true" + }, + "enrollmentStatus": { + "sort": "true", + "filter": "true" + }, + "organisationUnit": { + "sort": "true", + "filter": "true" + } + }, + "specificSettings": { + "IpHINAT79UW": { + "eventDate": { + "sort": "true", + "filter": "true" + }, + "syncStatus": { + "sort": "true", + "filter": "true" + }, + "eventStatus": { + "sort": "true", + "filter": "true" + }, + "assignedToMe": { + "sort": "false", + "filter": "false" + }, + "enrollmentDate": { + "sort": "false", + "filter": "false" + }, + "enrollmentStatus": { + "sort": "false", + "filter": "false" + }, + "organisationUnit": { + "sort": "false", + "filter": "false" + } + } + } + } + }, + "programConfiguration": { + "globalSettings": { + "completionSpinner": "true" + }, + "specificSettings": { + "IpHINAT79UW": { + "completionSpinner": "true", + "optionalSearch": "true" + }, + "IpHINAT79UQ": { + "completionSpinner": "true", + "optionalSearch": "true" + } + } + } +} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV1Should.java similarity index 83% rename from core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsShould.java rename to core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV1Should.java index 0c197ebee0..a3b6882ae1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV1Should.java @@ -38,10 +38,10 @@ import static com.google.common.truth.Truth.assertThat; -public class AppearanceSettingsShould extends BaseObjectShould implements ObjectShould { +public class AppearanceSettingsV1Should extends BaseObjectShould implements ObjectShould { - public AppearanceSettingsShould() { - super("settings/appearance_settings.json"); + public AppearanceSettingsV1Should() { + super("settings/appearance_settings_v1.json"); } @Override @@ -86,5 +86,15 @@ public void map_from_json_string() throws IOException, ParseException { CompletionSpinner specificCompletionSpinner = specificCompletionSpinnerList.get("IpHINAT79UW"); assertThat(specificCompletionSpinner.uid()).isNull(); assertThat(specificCompletionSpinner.visible()).isEqualTo(true); + + // Compatibility forwards + ProgramConfigurationSettings programConfiguration = appearanceSettings.programConfiguration(); + assertThat(programConfiguration.globalSettings().uid()).isNull(); + + Map speficicProgramConfiguration = programConfiguration.specificSettings(); + ProgramConfigurationSetting specificProgramConfiguration = speficicProgramConfiguration.get("IpHINAT79UW"); + assertThat(specificProgramConfiguration.uid()).isNull(); + assertThat(specificProgramConfiguration.completionSpinner()).isEqualTo(true); + assertThat(specificProgramConfiguration.optionalSearch()).isNull(); } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java new file mode 100644 index 0000000000..4459c899da --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.settings; + +import static com.google.common.truth.Truth.assertThat; + +import org.hisp.dhis.android.core.common.BaseObjectShould; +import org.hisp.dhis.android.core.common.ObjectShould; +import org.junit.Test; + +import java.io.IOException; +import java.text.ParseException; +import java.util.Map; + +public class AppearanceSettingsV2Should extends BaseObjectShould implements ObjectShould { + + public AppearanceSettingsV2Should() { + super("settings/appearance_settings_v2.json"); + } + + @Override + @Test + public void map_from_json_string() throws IOException, ParseException { + + AppearanceSettings appearanceSettings = objectMapper.readValue(jsonStream, AppearanceSettings.class); + + FilterSorting filterSorting = appearanceSettings.filterSorting(); + + Map homeFilters = filterSorting.home(); + FilterSetting homeDateFilter = homeFilters.get(HomeFilter.DATE); + + assertThat(homeDateFilter.scope()).isNull(); + assertThat(homeDateFilter.filterType()).isNull(); + assertThat(homeDateFilter.uid()).isNull(); + assertThat(homeDateFilter.sort()).isEqualTo(true); + assertThat(homeDateFilter.filter()).isEqualTo(true); + + DataSetFilters dataSetFilters = filterSorting.dataSetSettings(); + Map dataSetGlobalFilters = dataSetFilters.globalSettings(); + FilterSetting dataSetPeriodFilter = dataSetGlobalFilters.get(DataSetFilter.PERIOD); + assertThat(dataSetPeriodFilter.scope()).isNull(); + assertThat(dataSetPeriodFilter.filterType()).isNull(); + assertThat(dataSetPeriodFilter.uid()).isNull(); + assertThat(dataSetPeriodFilter.sort()).isEqualTo(true); + assertThat(dataSetPeriodFilter.filter()).isEqualTo(true); + + ProgramFilters programFilters = filterSorting.programSettings(); + Map programGlobalFilters = programFilters.globalSettings(); + FilterSetting programEventDateFilter = programGlobalFilters.get(ProgramFilter.EVENT_DATE); + assertThat(programEventDateFilter.scope()).isNull(); + assertThat(programEventDateFilter.filterType()).isNull(); + assertThat(programEventDateFilter.uid()).isNull(); + assertThat(programEventDateFilter.sort()).isEqualTo(true); + assertThat(programEventDateFilter.filter()).isEqualTo(true); + + ProgramConfigurationSettings programConfiguration = appearanceSettings.programConfiguration(); + assertThat(programConfiguration.globalSettings().uid()).isNull(); + + Map speficicProgramConfiguration = programConfiguration.specificSettings(); + ProgramConfigurationSetting specificProgramConfiguration = speficicProgramConfiguration.get("IpHINAT79UW"); + assertThat(specificProgramConfiguration.uid()).isNull(); + assertThat(specificProgramConfiguration.completionSpinner()).isEqualTo(true); + assertThat(specificProgramConfiguration.optionalSearch()).isEqualTo(true); + + // Compatibility backwards + CompletionSpinnerSetting completionSpinnerSetting = appearanceSettings.completionSpinner(); + assertThat(completionSpinnerSetting.globalSettings().uid()).isNull(); + + Map specificCompletionSpinnerList = completionSpinnerSetting.specificSettings(); + CompletionSpinner specificCompletionSpinner = specificCompletionSpinnerList.get("IpHINAT79UW"); + assertThat(specificCompletionSpinner.uid()).isNull(); + assertThat(specificCompletionSpinner.visible()).isEqualTo(true); + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt index e6da527a0b..183ca6b73c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt @@ -28,20 +28,14 @@ package org.hisp.dhis.android.core.settings.internal -import com.nhaarman.mockitokotlin2.any -import com.nhaarman.mockitokotlin2.doReturn -import com.nhaarman.mockitokotlin2.mock -import com.nhaarman.mockitokotlin2.never -import com.nhaarman.mockitokotlin2.verify -import com.nhaarman.mockitokotlin2.verifyNoMoreInteractions -import com.nhaarman.mockitokotlin2.whenever +import com.nhaarman.mockitokotlin2.* import io.reactivex.Single import org.hisp.dhis.android.core.arch.api.executors.internal.RxAPICallExecutor import org.hisp.dhis.android.core.arch.handlers.internal.Handler import org.hisp.dhis.android.core.data.maintenance.D2ErrorSamples import org.hisp.dhis.android.core.settings.AppearanceSettings -import org.hisp.dhis.android.core.settings.CompletionSpinner import org.hisp.dhis.android.core.settings.FilterSetting +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -51,7 +45,7 @@ import org.junit.runners.JUnit4 class AppearanceSettingsCallShould { private val filterSettingHandler: Handler = mock() - private val completionSpinnerHandler: Handler = mock() + private val programConfigurationHandler: Handler = mock() private val service: SettingAppService = mock() private val apiCallExecutor: RxAPICallExecutor = mock() private val appVersionManager: SettingsAppInfoManager = mock() @@ -67,7 +61,7 @@ class AppearanceSettingsCallShould { appearanceSettingsCall = AppearanceSettingCall( filterSettingHandler, - completionSpinnerHandler, + programConfigurationHandler, service, apiCallExecutor, appVersionManager @@ -103,7 +97,7 @@ class AppearanceSettingsCallShould { verify(filterSettingHandler).handleMany(emptyList()) verifyNoMoreInteractions(filterSettingHandler) - verify(completionSpinnerHandler).handleMany(emptyList()) - verifyNoMoreInteractions(completionSpinnerHandler) + verify(programConfigurationHandler).handleMany(emptyList()) + verifyNoMoreInteractions(programConfigurationHandler) } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/CompletionSettingHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandlerShould.kt similarity index 62% rename from core/src/test/java/org/hisp/dhis/android/core/settings/internal/CompletionSettingHandlerShould.kt rename to core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandlerShould.kt index dcce77d789..495822fe8f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/CompletionSettingHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandlerShould.kt @@ -37,38 +37,37 @@ import com.nhaarman.mockitokotlin2.whenever import java.lang.Exception import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction -import org.hisp.dhis.android.core.settings.CompletionSpinner +import org.hisp.dhis.android.core.data.settings.ProgramConfigurationSettingSamples +import org.hisp.dhis.android.core.settings.ProgramConfigurationSetting import org.junit.Before import org.junit.Test -class CompletionSettingHandlerShould { - private val completionSettingStore: ObjectWithoutUidStore = mock() +class ProgramConfigurationSettingHandlerShould { + private val programConfigurationSettingStore: ObjectWithoutUidStore = mock() - private val completionSpinner = CompletionSpinner.builder() - .visible(true) - .build() - private lateinit var completionSpinnerHandler: CompletionSpinnerHandler - private lateinit var completionSpinnerList: List + private val programConfigurationSetting = ProgramConfigurationSettingSamples.get() + private lateinit var programConfigurationSettingHandler: ProgramConfigurationSettingHandler + private lateinit var programConfigurationSettingList: List @Before @Throws(Exception::class) fun setUp() { - completionSpinnerList = listOf(completionSpinner) - whenever(completionSettingStore.updateOrInsertWhere(any())) doReturn HandleAction.Insert - completionSpinnerHandler = CompletionSpinnerHandler(completionSettingStore) + programConfigurationSettingList = listOf(programConfigurationSetting) + whenever(programConfigurationSettingStore.updateOrInsertWhere(any())) doReturn HandleAction.Insert + programConfigurationSettingHandler = ProgramConfigurationSettingHandler(programConfigurationSettingStore) } @Test fun clean_database_before_insert_collection() { - completionSpinnerHandler.handleMany(completionSpinnerList) - verify(completionSettingStore).delete() - verify(completionSettingStore).updateOrInsertWhere(completionSpinner) + programConfigurationSettingHandler.handleMany(programConfigurationSettingList) + verify(programConfigurationSettingStore).delete() + verify(programConfigurationSettingStore).updateOrInsertWhere(programConfigurationSetting) } @Test fun clean_database_if_empty_collection() { - completionSpinnerHandler.handleMany(emptyList()) - verify(completionSettingStore).delete() - verify(completionSettingStore, never()).updateOrInsertWhere(completionSpinner) + programConfigurationSettingHandler.handleMany(emptyList()) + verify(programConfigurationSettingStore).delete() + verify(programConfigurationSettingStore, never()).updateOrInsertWhere(programConfigurationSetting) } } From abbed5b784c72999c194e1f5c6c8c6d21b8714b0 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 25 Feb 2022 16:36:19 +0100 Subject: [PATCH 113/253] fix: [ANDROSDK-1504] Do not force constraint on TEI (ProgramTempOwner) --- core/src/main/assets/migrations/121.sql | 2 +- core/src/main/assets/snapshots/122.sql | 2 +- .../internal/EnrollmentServiceImpl.kt | 15 ++-- .../internal/TrackedEntityModuleWiper.java | 75 ------------------- .../internal/TrackedEntityModuleWiper.kt | 58 ++++++++++++++ .../enrollment/EnrollmentServiceShould.kt | 7 +- 6 files changed, 75 insertions(+), 84 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt diff --git a/core/src/main/assets/migrations/121.sql b/core/src/main/assets/migrations/121.sql index a452cdd60b..2b0c676e85 100644 --- a/core/src/main/assets/migrations/121.sql +++ b/core/src/main/assets/migrations/121.sql @@ -1,3 +1,3 @@ # Add ProgramTempOwner (ANDROSDK-1504) -CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (trackedEntityInstance) REFERENCES TrackedEntityInstance (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); +CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); diff --git a/core/src/main/assets/snapshots/122.sql b/core/src/main/assets/snapshots/122.sql index 65446e2d70..fd45267ea6 100644 --- a/core/src/main/assets/snapshots/122.sql +++ b/core/src/main/assets/snapshots/122.sql @@ -118,4 +118,4 @@ CREATE TABLE DataDimensionItem (_id INTEGER PRIMARY KEY AUTOINCREMENT, visualiza CREATE TABLE LocalDataStore (_id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL UNIQUE, value TEXT); CREATE TABLE AnalyticsPeriodBoundary (_id INTEGER PRIMARY KEY AUTOINCREMENT, programIndicator TEXT NOT NULL, boundaryTarget TEXT, analyticsPeriodBoundaryType TEXT, offsetPeriods INTEGER, offsetPeriodType TEXT, FOREIGN KEY (programIndicator) REFERENCES ProgramIndicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE IndicatorLegendSetLink(_id INTEGER PRIMARY KEY AUTOINCREMENT, indicator TEXT NOT NULL, legendSet TEXT NOT NULL, sortOrder INTEGER, FOREIGN KEY (indicator) REFERENCES Indicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (legendSet) REFERENCES LegendSet (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (indicator, legendSet)); -CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (trackedEntityInstance) REFERENCES TrackedEntityInstance (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); +CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt index 4871639024..f9ab7339fa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt @@ -80,9 +80,7 @@ internal class EnrollmentServiceImpl @Inject constructor( return when (program.accessLevel()) { AccessLevel.PROTECTED -> - if (isTeiInCaptureScope(trackedEntityInstanceUid) || - hasTempOwnership(trackedEntityInstanceUid, programUid) - ) dataAccess + if (hasTempOwnership(trackedEntityInstanceUid, programUid)) dataAccess else EnrollmentAccess.PROTECTED_PROGRAM_DENIED AccessLevel.CLOSED -> if (isTeiInCaptureScope(trackedEntityInstanceUid)) dataAccess @@ -133,13 +131,20 @@ internal class EnrollmentServiceImpl @Inject constructor( } private fun hasTempOwnership(tei: String, program: String): Boolean { + val nowStr = DateUtils.DATE_FORMAT.format(Date()) val columns = ProgramTempOwnerTableInfo.Columns val whereClause = WhereClauseBuilder() .appendKeyStringValue(columns.TRACKED_ENTITY_INSTANCE, tei) .appendKeyStringValue(columns.PROGRAM, program) - .appendKeyGreaterOrEqStringValue(columns.VALID_UNTIL, DateUtils.DATE_FORMAT.format(Date())) .build() - return programTempOwnerStore.selectOneWhere(whereClause) != null + val ownerships = programTempOwnerStore.selectWhere(whereClause) + + /* If there is no records about ownership, it will be probably caused by an existing break-the-glass in the + * server. The app is not forced to ask for ownership and there is no record in the SDK. + */ + + return ownerships.isEmpty() || + ownerships.any { DateUtils.DATE_FORMAT.format(it.validUntil()) > nowStr } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.java deleted file mode 100644 index 3a0aacc202..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeReservedValueTableInfo; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeTableInfo; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValueTableInfo; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValueTableInfo; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceEventFilterTableInfo; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceFilterTableInfo; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityTypeTableInfo; -import org.hisp.dhis.android.core.wipe.internal.ModuleWiper; -import org.hisp.dhis.android.core.wipe.internal.TableWiper; - -import javax.inject.Inject; - -import dagger.Reusable; - -@Reusable -public final class TrackedEntityModuleWiper implements ModuleWiper { - - private final TableWiper tableWiper; - - @Inject - TrackedEntityModuleWiper(TableWiper tableWiper) { - this.tableWiper = tableWiper; - } - - @Override - public void wipeMetadata() { - tableWiper.wipeTables( - TrackedEntityAttributeTableInfo.TABLE_INFO, - TrackedEntityTypeTableInfo.TABLE_INFO, - TrackedEntityInstanceFilterTableInfo.TABLE_INFO, - TrackedEntityInstanceEventFilterTableInfo.TABLE_INFO); - } - - @Override - public void wipeData() { - tableWiper.wipeTables( - TrackedEntityInstanceTableInfo.TABLE_INFO, - TrackedEntityInstanceSyncTableInfo.TABLE_INFO, - TrackedEntityDataValueTableInfo.TABLE_INFO, - TrackedEntityAttributeValueTableInfo.TABLE_INFO, - TrackedEntityAttributeReservedValueTableInfo.TABLE_INFO - ); - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt new file mode 100644 index 0000000000..8f522d6721 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import dagger.Reusable +import javax.inject.Inject +import org.hisp.dhis.android.core.trackedentity.* +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerTableInfo +import org.hisp.dhis.android.core.wipe.internal.ModuleWiper +import org.hisp.dhis.android.core.wipe.internal.TableWiper + +@Reusable +internal class TrackedEntityModuleWiper @Inject constructor(private val tableWiper: TableWiper) : ModuleWiper { + override fun wipeMetadata() { + tableWiper.wipeTables( + ProgramTempOwnerTableInfo.TABLE_INFO, + TrackedEntityAttributeTableInfo.TABLE_INFO, + TrackedEntityTypeTableInfo.TABLE_INFO, + TrackedEntityInstanceFilterTableInfo.TABLE_INFO, + TrackedEntityInstanceEventFilterTableInfo.TABLE_INFO + ) + } + + override fun wipeData() { + tableWiper.wipeTables( + TrackedEntityInstanceTableInfo.TABLE_INFO, + TrackedEntityInstanceSyncTableInfo.TABLE_INFO, + TrackedEntityDataValueTableInfo.TABLE_INFO, + TrackedEntityAttributeValueTableInfo.TABLE_INFO, + TrackedEntityAttributeReservedValueTableInfo.TABLE_INFO + ) + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt index 29e27aff33..34310a713f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt @@ -34,6 +34,7 @@ import com.nhaarman.mockitokotlin2.whenever import io.reactivex.Single import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.helpers.AccessHelper +import org.hisp.dhis.android.core.arch.helpers.DateUtils import org.hisp.dhis.android.core.common.Access import org.hisp.dhis.android.core.common.DataAccess import org.hisp.dhis.android.core.enrollment.internal.EnrollmentServiceImpl @@ -171,7 +172,8 @@ class EnrollmentServiceShould { .uid(organisationUnitId) .blockingExists() ) doReturn false - whenever(programTempOwnerStore.selectOneWhere(any())) doReturn null + whenever(programTempOwnerStore.selectWhere(any())) doReturn listOf(programTempOwner) + whenever(programTempOwner.validUntil()) doReturn DateUtils.DATE_FORMAT.parse("1999-01-01T00:00:00.000") val access = enrollmentService.blockingGetEnrollmentAccess(trackedEntityInstanceUid, programUid) assert(access == EnrollmentAccess.PROTECTED_PROGRAM_DENIED) @@ -187,7 +189,8 @@ class EnrollmentServiceShould { .uid(organisationUnitId) .blockingExists() ) doReturn false - whenever(programTempOwnerStore.selectOneWhere(any())) doReturn programTempOwner + whenever(programTempOwnerStore.selectWhere(any())) doReturn listOf(programTempOwner) + whenever(programTempOwner.validUntil()) doReturn DateUtils.DATE_FORMAT.parse("2999-01-01T00:00:00.000") val access = enrollmentService.blockingGetEnrollmentAccess(trackedEntityInstanceUid, programUid) assert(access == EnrollmentAccess.WRITE_ACCESS) From 19705433d0da3f403415c2d4f92a0b8e833ba06d Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 1 Mar 2022 15:14:54 +0100 Subject: [PATCH 114/253] [ANDROSDK-1141] Implement DeleteAccount method in AccountManager --- .../AccountManagerMockIntegrationShould.java | 47 +++++++++++++++++++ .../dhis/android/core/user/AccountManager.kt | 7 +++ .../core/user/internal/AccountManagerImpl.kt | 36 +++++++++++++- 3 files changed, 89 insertions(+), 1 deletion(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java index 8248222f3d..f6886a42e2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java @@ -30,8 +30,12 @@ import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.fail; + import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount; import org.hisp.dhis.android.core.configuration.internal.MultiUserDatabaseManager; +import org.hisp.dhis.android.core.maintenance.D2Error; +import org.hisp.dhis.android.core.maintenance.D2ErrorCode; import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyEnqueable; import org.hisp.dhis.android.core.utils.runner.D2JunitRunner; import org.junit.BeforeClass; @@ -72,4 +76,47 @@ public void can_change_max_accounts() { d2.userModule().accountManager().setMaxAccounts(defaultMaxAccounts); assertThat(d2.userModule().accountManager().getMaxAccounts()).isEqualTo(defaultMaxAccounts); } + + @Test + public void can_delete_current_logged_account() { + if (d2.userModule().blockingIsLogged()) { + d2.userModule().blockingLogOut(); + } + + dhis2MockServer.enqueueLoginResponses(); + d2.userModule().blockingLogIn("u1", "pass1", dhis2MockServer.getBaseEndpoint()); + + try { + d2.userModule().accountManager().deleteCurrentAccount(); + + List accountList = d2.userModule().accountManager().getAccounts(); + assertThat(accountList.size()).isEqualTo(0); + } catch (D2Error e) { + fail("Should not throw a D2Error"); + } + } + + @Test + public void cannot_delete_not_logged_account() { + if (d2.userModule().blockingIsLogged()) { + d2.userModule().blockingLogOut(); + } + + dhis2MockServer.enqueueLoginResponses(); + d2.userModule().blockingLogIn("u1", "pass1", dhis2MockServer.getBaseEndpoint()); + + d2.userModule().blockingLogOut(); + + try { + d2.userModule().accountManager().deleteCurrentAccount(); + fail("Should throw a D2Error"); + } catch (D2Error e) { + assertThat(e.errorCode()).isEqualTo(D2ErrorCode.NO_AUTHENTICATED_USER); + + List accountList = d2.userModule().accountManager().getAccounts(); + assertThat(accountList.size()).isEqualTo(1); + } catch (Exception e) { + fail("Should throw a D2Error"); + } + } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index fc915935de..d25241fba9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -29,9 +29,16 @@ package org.hisp.dhis.android.core.user import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount +import org.hisp.dhis.android.core.maintenance.D2Error +import kotlin.jvm.Throws interface AccountManager { fun getAccounts(): List + fun setMaxAccounts(maxAccounts: Int) + fun getMaxAccounts(): Int + + @Throws(D2Error::class) + fun deleteCurrentAccount() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index b78958a030..75307eb86b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -29,17 +29,27 @@ package org.hisp.dhis.android.core.user.internal import dagger.Reusable +import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory +import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import javax.inject.Inject import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount +import org.hisp.dhis.android.core.configuration.internal.DatabaseConfigurationHelper import org.hisp.dhis.android.core.configuration.internal.DatabasesConfiguration import org.hisp.dhis.android.core.configuration.internal.MultiUserDatabaseManager +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import org.hisp.dhis.android.core.user.AccountManager +import kotlin.jvm.Throws @Reusable internal class AccountManagerImpl @Inject constructor( private val databasesConfigurationStore: ObjectKeyValueStore, - private val multiUserDatabaseManager: MultiUserDatabaseManager + private val multiUserDatabaseManager: MultiUserDatabaseManager, + private val databaseAdapterFactory: DatabaseAdapterFactory, + private val credentialsSecureStore: CredentialsSecureStore, + private val logOutCall: LogOutCall ) : AccountManager { override fun getAccounts(): List { return databasesConfigurationStore.get()?.accounts() ?: emptyList() @@ -52,4 +62,28 @@ internal class AccountManagerImpl @Inject constructor( override fun getMaxAccounts(): Int { return databasesConfigurationStore.get()?.maxAccounts() ?: MultiUserDatabaseManager.DefaultMaxAccounts } + + @Throws(D2Error::class) + override fun deleteCurrentAccount() { + val credentials = credentialsSecureStore.get() + + if (credentials == null) { + throw D2Error.builder() + .errorCode(D2ErrorCode.NO_AUTHENTICATED_USER) + .errorDescription("There is not any authenticated user") + .errorComponent(D2ErrorComponent.SDK) + .build() + } else { + logOutCall.logOut().blockingAwait() + val configuration = databasesConfigurationStore.get() + val loggedAccount = DatabaseConfigurationHelper.getLoggedAccount( + configuration, + credentials.username, + credentials.serverUrl + ) + val updatedConfiguration = DatabaseConfigurationHelper.removeAccount(configuration, listOf(loggedAccount)) + databasesConfigurationStore.set(updatedConfiguration) + databaseAdapterFactory.deleteDatabase(loggedAccount) + } + } } From 2858124953ad1f180582e6ffbb9510730bdf871f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 1 Mar 2022 15:15:57 +0100 Subject: [PATCH 115/253] [ANDROSDK-1141] Ktlint, checkstyle --- .../java/org/hisp/dhis/android/core/user/AccountManager.kt | 2 +- .../dhis/android/core/user/internal/AccountManagerImpl.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index d25241fba9..95c991dc79 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -28,9 +28,9 @@ package org.hisp.dhis.android.core.user +import kotlin.jvm.Throws import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount import org.hisp.dhis.android.core.maintenance.D2Error -import kotlin.jvm.Throws interface AccountManager { fun getAccounts(): List diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index 75307eb86b..706e7c6c36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -29,9 +29,10 @@ package org.hisp.dhis.android.core.user.internal import dagger.Reusable +import javax.inject.Inject +import kotlin.jvm.Throws import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore -import javax.inject.Inject import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount import org.hisp.dhis.android.core.configuration.internal.DatabaseConfigurationHelper @@ -41,7 +42,6 @@ import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import org.hisp.dhis.android.core.user.AccountManager -import kotlin.jvm.Throws @Reusable internal class AccountManagerImpl @Inject constructor( From 48d2be71d9b40cf0fc11014a1bfa81792d4650a5 Mon Sep 17 00:00:00 2001 From: ericampire Date: Wed, 2 Mar 2022 11:19:29 +0200 Subject: [PATCH 116/253] [ANDROSDK-1471] Download LegendSets in separate call to avoid duplicates --- .../MetadataCallRealIntegrationShould.java | 3 +- ...egendSetUidsSeekerMockIntegrationShould.kt | 50 +++++++ ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- .../internal/CategoryPackageDIModule.kt | 15 ++ .../android/core/dataelement/DataElement.java | 9 +- .../internal/DataElementFields.java | 2 +- .../internal/DataElementHandler.java | 12 +- .../DataElementLegendSetChildrenAppender.java | 12 +- .../DataElementLegendSetEntityDIModule.java | 4 +- .../core/domain/metadata/MetadataCall.kt | 8 +- .../android/core/indicator/Indicator.java | 9 +- .../indicator/internal/IndicatorFields.java | 2 +- .../indicator/internal/IndicatorHandler.kt | 8 +- .../IndicatorLegendSetChildrenAppender.kt | 12 +- .../IndicatorLegendSetEntityDIModule.kt | 4 +- .../core/legendset/internal/LegendSetCall.kt | 55 ++++++++ .../legendset/internal/LegendSetFields.java | 3 + .../internal/LegendSetModuleDownloader.kt | 47 +++++++ .../legendset/internal/LegendSetService.kt | 48 +++++++ .../legendset/internal/LegendSetUidsSeeker.kt | 79 +++++++++++ .../core/mockwebserver/Dhis2MockServer.java | 4 + .../core/program/ProgramIndicator.java | 9 +- .../internal/ProgramIndicatorFields.kt | 2 +- .../internal/ProgramIndicatorHandler.kt | 7 +- ...ramIndicatorLegendSetChildrenAppender.java | 12 +- ...ogramIndicatorLegendSetEntityDIModule.java | 4 +- .../resources/dataelement/data_elements.json | 24 +--- .../resources/legendset/legend_sets.json | 129 ++++++++++++++++++ .../resources/program/programs.json | 24 +--- .../internal/DataElementHandlerShould.java | 17 ++- .../domain/metadata/MetadataCallShould.kt | 5 +- .../ProgramIndicatorHandlerShould.java | 16 ++- 33 files changed, 509 insertions(+), 130 deletions(-) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetCall.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt create mode 100644 core/src/sharedTest/resources/legendset/legend_sets.json diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java index 4e78330897..c839e9ec9b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java @@ -31,6 +31,7 @@ import android.util.Log; import org.junit.Before; +import org.junit.Test; import java.io.IOException; @@ -70,7 +71,7 @@ make a debugger break point where desired (after sync complete) //This test is uncommented because technically it is flaky. //It depends on a live server to operate and the login is hardcoded here. //Uncomment in order to quickly test changes vs a real server, but keep it uncommented after. - //@Test + @Test public void response_successful_on_sync_meta_data_once() throws Exception { d2.userModule().logIn(username, password, url).blockingGet(); diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt new file mode 100644 index 0000000000..c3cf9d1581 --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.legendset.internal + +import com.google.common.truth.Truth +import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestFullDispatcher +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class LegendSetUidsSeekerMockIntegrationShould : BaseMockIntegrationTestFullDispatcher() { + + @Test + fun seek_legendSet_uids() { + val legendSets = LegendSetUidsSeeker(databaseAdapter).seekUids() + Truth.assertThat(legendSets.size).isEqualTo(5) + Truth.assertThat(legendSets.contains("TiOkbpGEud4")).isTrue() + Truth.assertThat(legendSets.contains("QiOkbpGEud4")).isTrue() + Truth.assertThat(legendSets.contains("rtOkbpGEud4")).isTrue() + Truth.assertThat(legendSets.contains("Yf6UHoPkd57")).isTrue() + Truth.assertThat(legendSets.contains("Yf6UHoPkd56")).isTrue() + } +} diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java index 093dc7c2fc..d7ea04cca9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java @@ -57,7 +57,7 @@ public void include_legend_sets_as_children() { .blockingGet(); assertThat(indicator.legendSets().size()).isEqualTo(1); - assertThat(indicator.legendSets().get(0).name()).isEqualTo("Age 40y interval"); + assertThat(indicator.legendSets().get(0).uid()).isEqualTo("rtOkbpGEud4"); } @Test diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java index 62c449454f..63b05380c2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java @@ -146,7 +146,7 @@ public void include_legend_sets_as_children() { ProgramIndicator programIndicators = d2.programModule().programIndicators() .withLegendSets().one().blockingGet(); assertThat(programIndicators.legendSets().size()).isEqualTo(1); - assertThat(programIndicators.legendSets().get(0).name()).isEqualTo("Age 15y interval"); + assertThat(programIndicators.legendSets().get(0).uid()).isEqualTo("rtOkbpGEud4"); } @Test diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt index 0011c676c7..85db3035f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt @@ -35,6 +35,9 @@ import org.hisp.dhis.android.core.category.Category import org.hisp.dhis.android.core.category.CategoryCombo import org.hisp.dhis.android.core.category.CategoryModule import org.hisp.dhis.android.core.category.CategoryOption +import org.hisp.dhis.android.core.legendset.LegendSet +import org.hisp.dhis.android.core.legendset.internal.LegendSetCall +import org.hisp.dhis.android.core.legendset.internal.LegendSetService import retrofit2.Retrofit @Module( @@ -69,6 +72,12 @@ internal class CategoryPackageDIModule { return retrofit.create(CategoryComboService::class.java) } + @Provides + @Reusable + fun legendSetService(retrofit: Retrofit): LegendSetService { + return retrofit.create(LegendSetService::class.java) + } + @Provides @Reusable fun categoryCall(impl: CategoryCall): UidsCall { @@ -87,6 +96,12 @@ internal class CategoryPackageDIModule { return impl } + @Provides + @Reusable + fun legendSetCall(impl: LegendSetCall): UidsCall { + return impl + } + @Provides @Reusable fun module(impl: CategoryModuleImpl): CategoryModule { diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java index b8da546038..3882068758 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java @@ -41,8 +41,8 @@ import org.hisp.dhis.android.core.arch.db.adapters.custom.internal.DbValueTypeColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.identifiable.internal.ObjectWithUidColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreAttributeValuesListAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreObjectWithUidListColumnAdapter; import org.hisp.dhis.android.core.attribute.AttributeValue; -import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreLegendSetListColumnAdapter; import org.hisp.dhis.android.core.category.CategoryCombo; import org.hisp.dhis.android.core.common.BaseNameableObject; import org.hisp.dhis.android.core.common.CoreObject; @@ -50,7 +50,6 @@ import org.hisp.dhis.android.core.common.ObjectWithStyle; import org.hisp.dhis.android.core.common.ObjectWithUid; import org.hisp.dhis.android.core.common.ValueType; -import org.hisp.dhis.android.core.legendset.LegendSet; import java.util.List; @@ -98,8 +97,8 @@ public String categoryComboUid() { @Nullable @JsonProperty() - @ColumnAdapter(IgnoreLegendSetListColumnAdapter.class) - public abstract List legendSets(); + @ColumnAdapter(IgnoreObjectWithUidListColumnAdapter.class) + public abstract List legendSets(); @Nullable public abstract String fieldMask(); @@ -142,7 +141,7 @@ public static abstract class Builder extends BaseNameableObject.Builder legendSets); + public abstract DataElement.Builder legendSets(List legendSets); public abstract DataElement.Builder fieldMask(String fieldMask); diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java index 4da464958a..edf4f78d37 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java @@ -75,7 +75,7 @@ public final class DataElementFields { .with(ObjectStyleFields.allFields), fh.nestedField(ACCESS) .with(AccessFields.read), - fh.nestedField(LEGEND_SETS).with(LegendSetFields.allFields), + fh.nestedField(LEGEND_SETS).with(LegendSetFields.uid), fh.nestedField(ATTRIBUTE_VALUES).with(AttributeValuesFields.allFields) ).build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java index 41c9e6c0aa..77c18ed6a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java @@ -36,9 +36,10 @@ import org.hisp.dhis.android.core.attribute.Attribute; import org.hisp.dhis.android.core.attribute.AttributeValueUtils; import org.hisp.dhis.android.core.attribute.DataElementAttributeValueLink; +import org.hisp.dhis.android.core.common.ObjectWithUid; import org.hisp.dhis.android.core.dataelement.DataElement; import org.hisp.dhis.android.core.legendset.DataElementLegendSetLink; -import org.hisp.dhis.android.core.legendset.LegendSet; + import java.util.List; @@ -51,21 +52,18 @@ final class DataElementHandler extends IdentifiableHandlerImpl { private final Handler attributeHandler; private final LinkHandler dataElementAttributeLinkHandler; - private final Handler legendSetHandler; - private final OrderedLinkHandler dataElementLegendSetLinkHandler; + private final OrderedLinkHandler dataElementLegendSetLinkHandler; @Inject DataElementHandler( IdentifiableObjectStore programStageDataElementStore, Handler attributeHandler, LinkHandler dataElementAttributeLinkHandler, - Handler legendSetHandler, - OrderedLinkHandler dataElementLegendSetLinkHandler + OrderedLinkHandler dataElementLegendSetLinkHandler ) { super(programStageDataElementStore); this.attributeHandler = attributeHandler; this.dataElementAttributeLinkHandler = dataElementAttributeLinkHandler; - this.legendSetHandler = legendSetHandler; this.dataElementLegendSetLinkHandler = dataElementLegendSetLinkHandler; } @@ -85,8 +83,6 @@ protected void afterObjectHandled(DataElement dataElement, HandleAction action) } if (dataElement.legendSets() != null) { - legendSetHandler.handleMany(dataElement.legendSets()); - dataElementLegendSetLinkHandler.handleMany(dataElement.uid(), dataElement.legendSets(), (legendSet, sortOrder) -> DataElementLegendSetLink.builder() .dataElement(dataElement.uid()) diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java index 0827859ed6..5cc18a9700 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java @@ -28,19 +28,18 @@ package org.hisp.dhis.android.core.dataelement.internal; import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; -import org.hisp.dhis.android.core.arch.db.stores.internal.LinkChildStore; +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithUidChildStore; import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory; import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender; import org.hisp.dhis.android.core.dataelement.DataElement; import org.hisp.dhis.android.core.legendset.DataElementLegendSetLinkTableInfo; -import org.hisp.dhis.android.core.legendset.LegendSet; final class DataElementLegendSetChildrenAppender extends ChildrenAppender { - private final LinkChildStore linkChildStore; + private final ObjectWithUidChildStore linkChildStore; private DataElementLegendSetChildrenAppender( - LinkChildStore linkChildStore) { + ObjectWithUidChildStore linkChildStore) { this.linkChildStore = linkChildStore; } @@ -53,11 +52,10 @@ protected DataElement appendChildren(DataElement dataElement) { static ChildrenAppender create(DatabaseAdapter databaseAdapter) { return new DataElementLegendSetChildrenAppender( - StoreFactory.linkChildStore( + StoreFactory.objectWithUidChildStore( databaseAdapter, DataElementLegendSetLinkTableInfo.TABLE_INFO, - DataElementLegendSetLinkTableInfo.CHILD_PROJECTION, - LegendSet::create + DataElementLegendSetLinkTableInfo.CHILD_PROJECTION ) ); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java index 2f440db511..2fbb6320e9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java @@ -32,8 +32,8 @@ import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore; import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandler; import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandlerImpl; +import org.hisp.dhis.android.core.common.ObjectWithUid; import org.hisp.dhis.android.core.legendset.DataElementLegendSetLink; -import org.hisp.dhis.android.core.legendset.LegendSet; import org.hisp.dhis.android.core.legendset.internal.DataElementLegendSetLinkStore; import dagger.Module; @@ -51,7 +51,7 @@ public LinkStore store(DatabaseAdapter databaseAdapter @Provides @Reusable - public OrderedLinkHandler handler( + public OrderedLinkHandler handler( LinkStore store) { return new OrderedLinkHandlerImpl<>(store); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt index 35ad582bc1..c0f03b42c9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt @@ -48,6 +48,8 @@ import org.hisp.dhis.android.core.dataset.internal.DataSetModuleDownloader import org.hisp.dhis.android.core.domain.metadata.internal.MetadataHelper import org.hisp.dhis.android.core.indicator.Indicator import org.hisp.dhis.android.core.indicator.internal.IndicatorModuleDownloader +import org.hisp.dhis.android.core.legendset.LegendSet +import org.hisp.dhis.android.core.legendset.internal.LegendSetModuleDownloader import org.hisp.dhis.android.core.maintenance.ForeignKeyViolationTableInfo import org.hisp.dhis.android.core.organisationunit.OrganisationUnit import org.hisp.dhis.android.core.organisationunit.internal.OrganisationUnitModuleDownloader @@ -82,7 +84,8 @@ class MetadataCall @Inject internal constructor( private val databaseAdapter: DatabaseAdapter, private val generalSettingCall: GeneralSettingCall, private val multiUserDatabaseManager: MultiUserDatabaseManager, - private val credentialsSecureStore: CredentialsSecureStore + private val credentialsSecureStore: CredentialsSecureStore, + private val legendSetModuleDownloader: LegendSetModuleDownloader ) { companion object { @@ -146,6 +149,9 @@ class MetadataCall @Inject internal constructor( }, indicatorModuleDownloader.downloadMetadata().toSingle { progressManager.increaseProgress(Indicator::class.java, false) + }, + legendSetModuleDownloader.downloadMetadata().toSingle { + progressManager.increaseProgress(LegendSet::class.java, false) } ).toObservable() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java index 4e6448829d..4837bec51b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java @@ -39,11 +39,10 @@ import com.google.auto.value.AutoValue; import org.hisp.dhis.android.core.arch.db.adapters.identifiable.internal.ObjectWithUidColumnAdapter; -import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreLegendSetListColumnAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreObjectWithUidListColumnAdapter; import org.hisp.dhis.android.core.common.BaseNameableObject; import org.hisp.dhis.android.core.common.CoreObject; import org.hisp.dhis.android.core.common.ObjectWithUid; -import org.hisp.dhis.android.core.legendset.LegendSet; import java.util.List; @@ -86,8 +85,8 @@ public abstract class Indicator extends BaseNameableObject implements CoreObject @Nullable @JsonProperty() - @ColumnAdapter(IgnoreLegendSetListColumnAdapter.class) - public abstract List legendSets(); + @ColumnAdapter(IgnoreObjectWithUidListColumnAdapter.class) + public abstract List legendSets(); public static Builder builder() { return new $$AutoValue_Indicator.Builder(); @@ -116,7 +115,7 @@ public static abstract class Builder extends BaseNameableObject.Builder public abstract Builder denominatorDescription(String denominatorDescription); - public abstract Builder legendSets(List legendSets); + public abstract Builder legendSets(List legendSets); public abstract Builder url(String url); diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java index a0e415c876..da815ef30c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java @@ -55,7 +55,7 @@ public final class IndicatorFields { fh.field(Columns.DENOMINATOR), fh.field(Columns.DENOMINATOR_DESCRIPTION), fh.field(Columns.URL), - fh.nestedField(LEGEND_SETS).with(LegendSetFields.allFields), + fh.nestedField(LEGEND_SETS).with(LegendSetFields.uid), fh.field(Columns.DECIMALS) ).build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt index 808105e885..d60a8789b6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt @@ -32,26 +32,22 @@ import dagger.Reusable import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction -import org.hisp.dhis.android.core.arch.handlers.internal.Handler import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableHandlerImpl import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandler +import org.hisp.dhis.android.core.common.ObjectWithUid import org.hisp.dhis.android.core.indicator.Indicator import org.hisp.dhis.android.core.legendset.IndicatorLegendSetLink -import org.hisp.dhis.android.core.legendset.LegendSet @Reusable internal class IndicatorHandler @Inject constructor( indicatorStore: IdentifiableObjectStore, - private val legendSetHandler: Handler, - private val indicatorLegendSetLinkHandler: OrderedLinkHandler + private val indicatorLegendSetLinkHandler: OrderedLinkHandler ) : IdentifiableHandlerImpl(indicatorStore) { override fun afterObjectHandled(indicator: Indicator, action: HandleAction) { super.afterObjectHandled(indicator, action) if (indicator.legendSets() != null) { - legendSetHandler.handleMany(indicator.legendSets()) - indicatorLegendSetLinkHandler.handleMany(indicator.uid(), indicator.legendSets()) { legendSet, sortOrder -> IndicatorLegendSetLink.builder() .indicator(indicator.uid()) diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt index 18284567b8..8312324741 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt @@ -28,17 +28,15 @@ package org.hisp.dhis.android.core.indicator.internal -import android.database.Cursor import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter -import org.hisp.dhis.android.core.arch.db.stores.internal.LinkChildStore +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithUidChildStore import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender import org.hisp.dhis.android.core.indicator.Indicator import org.hisp.dhis.android.core.indicator.IndicatorLegendSetLinkTableInfo -import org.hisp.dhis.android.core.legendset.LegendSet internal class IndicatorLegendSetChildrenAppender( - private val linkChildStore: LinkChildStore + private val linkChildStore: ObjectWithUidChildStore ) : ChildrenAppender() { override fun appendChildren(indicator: Indicator): Indicator { @@ -50,13 +48,11 @@ internal class IndicatorLegendSetChildrenAppender( companion object { fun create(databaseAdapter: DatabaseAdapter): ChildrenAppender { return IndicatorLegendSetChildrenAppender( - StoreFactory.linkChildStore( + StoreFactory.objectWithUidChildStore( databaseAdapter, IndicatorLegendSetLinkTableInfo.TABLE_INFO, IndicatorLegendSetLinkTableInfo.CHILD_PROJECTION - ) { cursor: Cursor? -> - LegendSet.create(cursor) - } + ) ) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt index a09d44951c..25d071ad31 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt @@ -35,8 +35,8 @@ import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandler import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandlerImpl +import org.hisp.dhis.android.core.common.ObjectWithUid import org.hisp.dhis.android.core.legendset.IndicatorLegendSetLink -import org.hisp.dhis.android.core.legendset.LegendSet @Module internal class IndicatorLegendSetEntityDIModule { @@ -51,7 +51,7 @@ internal class IndicatorLegendSetEntityDIModule { @Reusable internal fun handler( store: LinkStore - ): OrderedLinkHandler { + ): OrderedLinkHandler { return OrderedLinkHandlerImpl(store) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetCall.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetCall.kt new file mode 100644 index 0000000000..08c5d9b2a6 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetCall.kt @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.legendset.internal + +import dagger.Reusable +import io.reactivex.Single +import javax.inject.Inject +import kotlin.String +import org.hisp.dhis.android.core.arch.api.executors.internal.APIDownloader +import org.hisp.dhis.android.core.arch.call.factories.internal.UidsCall +import org.hisp.dhis.android.core.arch.handlers.internal.Handler +import org.hisp.dhis.android.core.legendset.LegendSet + +@Reusable +internal class LegendSetCall @Inject constructor( + private val service: LegendSetService, + private val handler: Handler, + private val apiDownloader: APIDownloader, +) : UidsCall { + override fun download(uids: Set): Single> { + return apiDownloader.downloadPartitioned(uids, MAX_UID_LIST_SIZE, handler) { partitionUids -> + service.getLegendSets(LegendSetFields.allFields, LegendSetFields.uid.`in`(partitionUids), false) + } + } + + companion object { + private const val MAX_UID_LIST_SIZE = 130 + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java index d43d0aeadc..d1ec418f35 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.legendset.internal; +import org.hisp.dhis.android.core.arch.api.fields.internal.Field; import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; import org.hisp.dhis.android.core.arch.fields.internal.FieldsHelper; import org.hisp.dhis.android.core.legendset.Legend; @@ -40,6 +41,8 @@ public final class LegendSetFields { private static final FieldsHelper fh = new FieldsHelper<>(); + public static final Field uid = fh.uid(); + public static final Fields allFields = Fields.builder() .fields(fh.getIdentifiableFields()) .fields( diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt new file mode 100644 index 0000000000..0c22f526a5 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.legendset.internal + +import dagger.Reusable +import io.reactivex.Completable +import io.reactivex.Single +import javax.inject.Inject +import org.hisp.dhis.android.core.arch.modules.internal.UntypedModuleDownloader + +@Reusable +class LegendSetModuleDownloader @Inject internal constructor( + private val legendSetUidsSeeker: LegendSetUidsSeeker, + private val legendSetCall: LegendSetCall +) : UntypedModuleDownloader { + override fun downloadMetadata(): Completable { + return Single.fromCallable { legendSetUidsSeeker.seekUids() } + .flatMap { legendSetCall.download(it) } + .ignoreElement() + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt new file mode 100644 index 0000000000..59337e347b --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.legendset.internal + +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.api.fields.internal.Fields +import org.hisp.dhis.android.core.arch.api.filters.internal.Filter +import org.hisp.dhis.android.core.arch.api.filters.internal.Where +import org.hisp.dhis.android.core.arch.api.filters.internal.Which +import org.hisp.dhis.android.core.arch.api.payload.internal.Payload +import org.hisp.dhis.android.core.legendset.LegendSet +import retrofit2.http.GET +import retrofit2.http.Query + +interface LegendSetService { + @GET("legendSets") + fun getLegendSets( + @Query("fields") @Which fields: Fields, + @Query("filter") @Where uids: Filter, + @Query("paging") paging: Boolean + ): Single> +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt new file mode 100644 index 0000000000..70f8b1dc84 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.legendset.internal + +import dagger.Reusable +import javax.inject.Inject +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.MultipleTableQueryBuilder +import org.hisp.dhis.android.core.indicator.IndicatorLegendSetLinkTableInfo +import org.hisp.dhis.android.core.legendset.DataElementLegendSetLinkTableInfo +import org.hisp.dhis.android.core.legendset.ProgramIndicatorLegendSetLinkTableInfo +import org.hisp.dhis.android.core.visualization.VisualizationTableInfo + +@Reusable +class LegendSetUidsSeeker @Inject constructor(private val databaseAdapter: DatabaseAdapter) { + + fun seekUids(): Set { + val tableNames = listOf( + ProgramIndicatorLegendSetLinkTableInfo.TABLE_INFO.name(), + IndicatorLegendSetLinkTableInfo.TABLE_INFO.name(), + DataElementLegendSetLinkTableInfo.TABLE_INFO.name(), + ) + val query = MultipleTableQueryBuilder() + .generateQuery(ProgramIndicatorLegendSetLinkTableInfo.Columns.LEGEND_SET, tableNames) + .build() + + val visualisationLegendSetQuery = MultipleTableQueryBuilder() + .generateQuery("legendSetId", listOf(VisualizationTableInfo.TABLE_INFO.name())) + .build() + + val cursor = databaseAdapter.rawQuery(query) + val legendSets = hashSetOf() + cursor.use { mCursor -> + if (mCursor.count > 0) { + mCursor.moveToFirst() + do { + legendSets.add(mCursor.getString(0)) + } while (mCursor.moveToNext()) + } + } + + val visualisationCursor = databaseAdapter.rawQuery(visualisationLegendSetQuery) + visualisationCursor.use { mCursor -> + if (mCursor.count > 0) { + mCursor.moveToFirst() + do { + legendSets.add(mCursor.getString(0)) + } while (mCursor.moveToNext()) + } + } + return legendSets + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java index 8433347f5e..4d628d6c61 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java @@ -92,6 +92,7 @@ public class Dhis2MockServer { private static final String CONSTANTS_JSON = "constant/constants.json"; private static final String USER_JSON = "user/user.json"; private static final String EVENTS_JSON = "event/events.json"; + private static final String LEGEND_SETS_JSON = "legendset/legend_sets.json"; private static final String TRACKED_ENTITY_INSTANCES_JSON = "trackedentity/tracked_entity_instances.json"; private static final String DATA_VALUES_JSON = "datavalue/data_values.json"; private static final String DATA_SET_COMPLETE_REGISTRATIONS_JSON = "dataset/data_set_complete_registrations.json"; @@ -256,6 +257,8 @@ public MockResponse dispatch(RecordedRequest request) { return createMockResponse(DATA_SET_COMPLETE_REGISTRATIONS_JSON); } else if (path.startsWith("/api/dataApprovals/multiple?")) { return createMockResponse(DATA_APPROVALS_MULTIPLE_JSON); + } else if (path.startsWith("/api/legendSets?")) { + return createMockResponse(LEGEND_SETS_JSON); } else if (path.startsWith("/api/trackedEntityAttributes/aejWyOfXge6/generateAndReserve")) { return createMockResponse(RESERVE_VALUES_JSON); } else { @@ -319,6 +322,7 @@ public void enqueueMetadataResponses() { enqueueMockResponse(VISUALIZATIONS_JSON); enqueueMockResponse(INDICATORS_JSON); enqueueMockResponse(INDICATOR_TYPES_JSON); + enqueueMockResponse(LEGEND_SETS_JSON); } private MockResponse createMockResponse(String fileName) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java index 83d853c4bd..b81936f94d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java @@ -42,13 +42,12 @@ import org.hisp.dhis.android.core.arch.db.adapters.enums.internal.AnalyticsTypeColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.identifiable.internal.ObjectWithUidColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreAnalyticsPeriodBoundaryListColumnAdapter; -import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreLegendSetListColumnAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreObjectWithUidListColumnAdapter; import org.hisp.dhis.android.core.common.AggregationType; import org.hisp.dhis.android.core.common.AnalyticsType; import org.hisp.dhis.android.core.common.BaseNameableObject; import org.hisp.dhis.android.core.common.CoreObject; import org.hisp.dhis.android.core.common.ObjectWithUid; -import org.hisp.dhis.android.core.legendset.LegendSet; import java.util.List; @@ -97,8 +96,8 @@ public abstract class ProgramIndicator extends BaseNameableObject implements Cor @Nullable @JsonProperty() - @ColumnAdapter(IgnoreLegendSetListColumnAdapter.class) - public abstract List legendSets(); + @ColumnAdapter(IgnoreObjectWithUidListColumnAdapter.class) + public abstract List legendSets(); public static ProgramIndicator create(Cursor cursor) { return $AutoValue_ProgramIndicator.createFromCursor(cursor); @@ -134,7 +133,7 @@ public abstract static class Builder extends BaseNameableObject.Builder analyticsPeriodBoundaries); - public abstract Builder legendSets(List legendSets); + public abstract Builder legendSets(List legendSets); public abstract ProgramIndicator build(); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt index 0cac00badf..7f0c706419 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt @@ -58,6 +58,6 @@ object ProgramIndicatorFields { fh.field(ProgramIndicatorTableInfo.Columns.ANALYTICS_TYPE), fh.nestedField(ANALYTICS_PERIOD_BOUNDARIES) .with(AnalyticsPeriodBoundaryFields.allFields), - fh.nestedField(LEGEND_SETS).with(LegendSetFields.allFields) + fh.nestedField(LEGEND_SETS).with(LegendSetFields.uid) ).build() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt index 4430fb73cf..6eb774ce6d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt @@ -30,12 +30,11 @@ package org.hisp.dhis.android.core.program.internal import dagger.Reusable import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore -import org.hisp.dhis.android.core.arch.handlers.internal.* import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableHandlerImpl import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandler import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandler -import org.hisp.dhis.android.core.legendset.LegendSet +import org.hisp.dhis.android.core.common.ObjectWithUid import org.hisp.dhis.android.core.legendset.ProgramIndicatorLegendSetLink import org.hisp.dhis.android.core.program.AnalyticsPeriodBoundary import org.hisp.dhis.android.core.program.ProgramIndicator @@ -43,13 +42,11 @@ import org.hisp.dhis.android.core.program.ProgramIndicator @Reusable internal class ProgramIndicatorHandler @Inject constructor( programIndicatorStore: IdentifiableObjectStore, - private val legendSetHandler: Handler, - private val programIndicatorLegendSetLinkHandler: OrderedLinkHandler, + private val programIndicatorLegendSetLinkHandler: OrderedLinkHandler, private val analyticsPeriodBoundaryHandler: LinkHandler ) : IdentifiableHandlerImpl(programIndicatorStore) { override fun afterObjectHandled(o: ProgramIndicator, action: HandleAction) { - legendSetHandler.handleMany(o.legendSets()) programIndicatorLegendSetLinkHandler.handleMany(o.uid(), o.legendSets()) { legendSet, sortOrder -> ProgramIndicatorLegendSetLink.builder() .programIndicator(o.uid()) diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java index f8b1b4715a..d78f22a313 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java @@ -28,19 +28,18 @@ package org.hisp.dhis.android.core.program.internal; import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; -import org.hisp.dhis.android.core.arch.db.stores.internal.LinkChildStore; +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithUidChildStore; import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory; import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender; -import org.hisp.dhis.android.core.legendset.LegendSet; import org.hisp.dhis.android.core.legendset.ProgramIndicatorLegendSetLinkTableInfo; import org.hisp.dhis.android.core.program.ProgramIndicator; final class ProgramIndicatorLegendSetChildrenAppender extends ChildrenAppender { - private final LinkChildStore linkChildStore; + private final ObjectWithUidChildStore linkChildStore; private ProgramIndicatorLegendSetChildrenAppender( - LinkChildStore linkChildStore) { + ObjectWithUidChildStore linkChildStore) { this.linkChildStore = linkChildStore; } @@ -53,11 +52,10 @@ protected ProgramIndicator appendChildren(ProgramIndicator programIndicator) { static ChildrenAppender create(DatabaseAdapter databaseAdapter) { return new ProgramIndicatorLegendSetChildrenAppender( - StoreFactory.linkChildStore( + StoreFactory.objectWithUidChildStore( databaseAdapter, ProgramIndicatorLegendSetLinkTableInfo.TABLE_INFO, - ProgramIndicatorLegendSetLinkTableInfo.CHILD_PROJECTION, - LegendSet::create + ProgramIndicatorLegendSetLinkTableInfo.CHILD_PROJECTION ) ); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java index 5391132b05..2c5e0d7409 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java @@ -32,7 +32,7 @@ import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore; import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandler; import org.hisp.dhis.android.core.arch.handlers.internal.OrderedLinkHandlerImpl; -import org.hisp.dhis.android.core.legendset.LegendSet; +import org.hisp.dhis.android.core.common.ObjectWithUid; import org.hisp.dhis.android.core.legendset.ProgramIndicatorLegendSetLink; import org.hisp.dhis.android.core.legendset.internal.ProgramIndicatorLegendSetLinkStore; @@ -51,7 +51,7 @@ public LinkStore store(DatabaseAdapter databaseAd @Provides @Reusable - public OrderedLinkHandler handler( + public OrderedLinkHandler handler( LinkStore store) { return new OrderedLinkHandlerImpl<>(store); } diff --git a/core/src/sharedTest/resources/dataelement/data_elements.json b/core/src/sharedTest/resources/dataelement/data_elements.json index a0fa9e82b5..2b04487155 100644 --- a/core/src/sharedTest/resources/dataelement/data_elements.json +++ b/core/src/sharedTest/resources/dataelement/data_elements.json @@ -196,29 +196,7 @@ }, "legendSets": [ { - "code": "AGE10YINT2", - "created": "2017-06-02T11:40:33.452", - "lastUpdated": "2017-06-02T11:41:01.999", - "name": "Age 15y interval", - "id": "QiOkbpGEud4", - "displayName": "Age 15y interval", - "symbolizer": "color", - "legends": [ - { - "id": "AzQkRWHS7lu", - "name": "45 - 60", - "startValue": 25, - "endValue": 40, - "color": "#G38026" - }, - { - "id": "TEf6QhFVMab", - "name": "15 - 30", - "startValue": 10, - "endValue": 25, - "color": "#A6AE5E" - } - ] + "id": "QiOkbpGEud4" } ], "attributeValues": [ diff --git a/core/src/sharedTest/resources/legendset/legend_sets.json b/core/src/sharedTest/resources/legendset/legend_sets.json new file mode 100644 index 0000000000..7fd34e1146 --- /dev/null +++ b/core/src/sharedTest/resources/legendset/legend_sets.json @@ -0,0 +1,129 @@ +{ + "legendSets": [ + { + "code": "AGE10YINT2", + "created": "2017-06-02T11:40:33.452", + "lastUpdated": "2017-06-02T11:41:01.999", + "name": "Age 15y interval", + "id": "QiOkbpGEud4", + "displayName": "Age 15y interval", + "symbolizer": "color", + "legends": [ + { + "id": "AzQkRWHS7lu", + "name": "45 - 60", + "startValue": 25, + "endValue": 40, + "color": "#G38026" + }, + { + "id": "TEf6QhFVMab", + "name": "15 - 30", + "startValue": 10, + "endValue": 25, + "color": "#A6AE5E" + } + ] + }, + { + "code": "AGE40YINT2", + "created": "2017-06-02T11:40:33.452", + "lastUpdated": "2017-06-02T11:41:01.999", + "name": "Age 40y interval", + "id": "rtOkbpGEud4", + "displayName": "Age 40y interval", + "symbolizer": "color", + "legends": [ + { + "id": "bzQkRWHS7lu", + "name": "0 - 40", + "startValue": 0, + "endValue": 40, + "color": "#G38026" + }, + { + "id": "qEf6QhFVMab", + "name": "40 - 999", + "startValue": 40, + "endValue": 999, + "color": "#A6AE5E" + } + ] + }, + { + "code": "AGE15YINT", + "created": "2017-06-02T11:40:33.452", + "lastUpdated": "2017-06-02T11:41:01.999", + "name": "Age 15y interval", + "id": "TiOkbpGEud4", + "displayName": "Age 15y interval", + "symbolizer": "color", + "legends": [ + { + "id": "BzQkRWHS7lu", + "name": "45 - 60", + "startValue": 45, + "endValue": 60, + "color": "#F38026" + }, + { + "id": "kEf6QhFVMab", + "name": "15 - 30", + "startValue": 15, + "endValue": 30, + "color": "#E6AE5E" + } + ] + }, + { + "code": "AGE15YIOMM", + "created": "2017-06-02T11:40:33.452", + "lastUpdated": "2017-06-02T11:41:01.999", + "name": "Age 15y interval", + "id": "Yf6UHoPkd57", + "displayName": "Age 15y interval", + "symbolizer": "color", + "legends": [ + { + "id": "BzQkRWHS7lu", + "name": "45 - 60", + "startValue": 45, + "endValue": 60, + "color": "#F38026" + }, + { + "id": "kEf6QhFVMab", + "name": "15 - 30", + "startValue": 15, + "endValue": 30, + "color": "#E6AE5E" + } + ] + }, + { + "code": "AGE23YIO", + "created": "2017-06-02T11:40:33.452", + "lastUpdated": "2017-06-02T11:41:01.999", + "name": "Age 15y interval", + "id": "Yf6UHoPkd56", + "displayName": "Age 15y interval", + "symbolizer": "color", + "legends": [ + { + "id": "BzQkRWHS7lu", + "name": "45 - 60", + "startValue": 45, + "endValue": 60, + "color": "#F38026" + }, + { + "id": "kEf6QhFVMab", + "name": "15 - 30", + "startValue": 15, + "endValue": 30, + "color": "#E6AE5E" + } + ] + } + ] +} \ No newline at end of file diff --git a/core/src/sharedTest/resources/program/programs.json b/core/src/sharedTest/resources/program/programs.json index acffa09cad..fa3a7bb855 100644 --- a/core/src/sharedTest/resources/program/programs.json +++ b/core/src/sharedTest/resources/program/programs.json @@ -187,29 +187,7 @@ }, "legendSets": [ { - "code": "AGE15YINT", - "created": "2017-06-02T11:40:33.452", - "lastUpdated": "2017-06-02T11:41:01.999", - "name": "Age 15y interval", - "id": "TiOkbpGEud4", - "displayName": "Age 15y interval", - "symbolizer": "color", - "legends": [ - { - "id": "BzQkRWHS7lu", - "name": "45 - 60", - "startValue": 45, - "endValue": 60, - "color": "#F38026" - }, - { - "id": "kEf6QhFVMab", - "name": "15 - 30", - "startValue": 15, - "endValue": 30, - "color": "#E6AE5E" - } - ] + "id": "TiOkbpGEud4" } ], "analyticsPeriodBoundaries": [ diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java index 324ed7438d..9503d4e5d4 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java @@ -34,6 +34,7 @@ import org.hisp.dhis.android.core.attribute.Attribute; import org.hisp.dhis.android.core.attribute.AttributeValue; import org.hisp.dhis.android.core.attribute.DataElementAttributeValueLink; +import org.hisp.dhis.android.core.common.ObjectWithUid; import org.hisp.dhis.android.core.common.ValueType; import org.hisp.dhis.android.core.dataelement.DataElement; import org.hisp.dhis.android.core.legendset.DataElementLegendSetLink; @@ -69,23 +70,23 @@ public class DataElementHandlerShould { private Handler attributeHandler; @Mock - private OrderedLinkHandler dataElementLegendSetLinkHandler; + private OrderedLinkHandler dataElementLegendSetLinkHandler; @Mock - private Handler legendSetHandler; + private Handler legendSetHandler; @Mock private DataElement dataElement; @Mock - private LegendSet legendSet; + private ObjectWithUid legendSet; // object to test private Handler dataElementHandler; private List dataElements; - private List legendSets; + private List legendSets; private List attributeValues = new ArrayList<>(); @@ -96,8 +97,11 @@ public void setUp() throws Exception { MockitoAnnotations.initMocks(this); dataElementHandler = new DataElementHandler( - dataElementStore, attributeHandler,dataElementAttributeValueLinkHandler, - legendSetHandler, dataElementLegendSetLinkHandler); + dataElementStore, + attributeHandler, + dataElementAttributeValueLinkHandler, + dataElementLegendSetLinkHandler + ); dataElements = new ArrayList<>(); dataElements.add(dataElement); @@ -166,7 +170,6 @@ public void call_attribute_handlers() { verify(dataElementAttributeValueLinkHandler).handleMany(eq(dataElement.uid()), eq(Arrays.asList(attribute)), any()); } - @Test public void call_legend_set_handler() { dataElementHandler.handleMany(dataElements); verify(legendSetHandler).handleMany(eq(legendSets)); diff --git a/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt index 17278aaf47..3bd81f4618 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt @@ -40,6 +40,7 @@ import org.hisp.dhis.android.core.configuration.internal.MultiUserDatabaseManage import org.hisp.dhis.android.core.constant.internal.ConstantModuleDownloader import org.hisp.dhis.android.core.dataset.internal.DataSetModuleDownloader import org.hisp.dhis.android.core.indicator.internal.IndicatorModuleDownloader +import org.hisp.dhis.android.core.legendset.internal.LegendSetModuleDownloader import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.ForeignKeyViolationTableInfo import org.hisp.dhis.android.core.organisationunit.internal.OrganisationUnitModuleDownloader @@ -78,6 +79,7 @@ class MetadataCallShould : BaseCallShould() { private val generalSettingCall: GeneralSettingCall = mock() private val multiUserDatabaseManager: MultiUserDatabaseManager = mock() private val credentialsSecureStore: CredentialsSecureStore = mock() + private val legendSetModuleDownloader: LegendSetModuleDownloader = mock() // object to test private var metadataCall: MetadataCall? = null @@ -135,7 +137,8 @@ class MetadataCallShould : BaseCallShould() { databaseAdapter, generalSettingCall, multiUserDatabaseManager, - credentialsSecureStore + credentialsSecureStore, + legendSetModuleDownloader, ) } diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java index 6dc4737ac1..a6beb14c88 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java @@ -63,19 +63,19 @@ public class ProgramIndicatorHandlerShould { private IdentifiableObjectStore programIndicatorStore; @Mock - private OrderedLinkHandler programIndicatorLegendSetLinkHandler; + private OrderedLinkHandler programIndicatorLegendSetLinkHandler; @Mock private LinkHandler analyticsPeriodBoundaryHandler; @Mock - private Handler legendSetHandler; + private Handler legendSetHandler; @Mock private ProgramIndicator programIndicator; @Mock - private LegendSet legendSet; + private ObjectWithUid legendSet; @Mock private AnalyticsPeriodBoundary analyticsPeriodBoundary; @@ -93,15 +93,17 @@ public class ProgramIndicatorHandlerShould { private List programIndicators; // list of program indicators - private List legendSets; + private List legendSets; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); programIndicatorHandler = new ProgramIndicatorHandler( - programIndicatorStore, legendSetHandler, programIndicatorLegendSetLinkHandler, - analyticsPeriodBoundaryHandler); + programIndicatorStore, + programIndicatorLegendSetLinkHandler, + analyticsPeriodBoundaryHandler + ); programIndicators = new ArrayList<>(); programIndicators.add(programIndicator); @@ -153,7 +155,7 @@ public void update_shouldUpdateProgramIndicatorWithoutProgramStageSection() { verify(programIndicatorStore, never()).delete(anyString()); } - @Test + public void call_program_indicator_legend_set_handler() { programIndicatorHandler.handleMany(programIndicators); verify(legendSetHandler).handleMany(eq(legendSets)); From ddc0bcee9a2a285ab8794c7b879dc26a727e4a04 Mon Sep 17 00:00:00 2001 From: ericampire Date: Wed, 2 Mar 2022 12:08:50 +0200 Subject: [PATCH 117/253] [ANDROSDK-1471] Disable MetadataCallRealIntegrationShould --- .../dhis/android/core/MetadataCallRealIntegrationShould.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java index c839e9ec9b..4e78330897 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java @@ -31,7 +31,6 @@ import android.util.Log; import org.junit.Before; -import org.junit.Test; import java.io.IOException; @@ -71,7 +70,7 @@ make a debugger break point where desired (after sync complete) //This test is uncommented because technically it is flaky. //It depends on a live server to operate and the login is hardcoded here. //Uncomment in order to quickly test changes vs a real server, but keep it uncommented after. - @Test + //@Test public void response_successful_on_sync_meta_data_once() throws Exception { d2.userModule().logIn(username, password, url).blockingGet(); From e2afbcd358ce85f8321bf225ab4ffc67b2b78b32 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 2 Mar 2022 11:37:39 +0100 Subject: [PATCH 118/253] [ANDROSDK-1494] Create subfolder for file resources --- .../mock/BaseMockIntegrationTest.java | 2 + .../org/hisp/dhis/android/core/D2Manager.kt | 6 +++ .../core/arch/db/access/DatabaseAdapter.java | 2 + .../internal/DatabaseAdapterFactory.java | 4 +- .../internal/DatabaseImportExportImpl.kt | 2 +- .../internal/EncryptedDatabaseAdapter.java | 9 +++- .../internal/EncryptedDatabaseOpenHelper.java | 6 +-- .../internal/ParentDatabaseAdapter.java | 5 ++ .../internal/UnencryptedDatabaseAdapter.java | 9 +++- .../UnencryptedDatabaseOpenHelper.java | 6 +-- ...er.java => FileResourceDirectoryHelper.kt} | 49 ++++++++++--------- .../UnencryptedDatabaseAdapterShould.java | 4 +- 12 files changed, 68 insertions(+), 36 deletions(-) rename core/src/main/java/org/hisp/dhis/android/core/arch/helpers/{FileResourceDirectoryHelper.java => FileResourceDirectoryHelper.kt} (65%) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java index c20ac433c2..fbfb1bf118 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.utils.integration.mock; import org.hisp.dhis.android.core.D2; +import org.hisp.dhis.android.core.D2Manager; import org.hisp.dhis.android.core.MockIntegrationTestObjects; import org.hisp.dhis.android.core.arch.api.internal.ServerURLWrapper; import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; @@ -45,6 +46,7 @@ public static boolean setUpClass(MockIntegrationTestDatabaseContent content) thr MockIntegrationTestObjectsFactory.IntegrationTestObjectsWithIsNewInstance tuple = MockIntegrationTestObjectsFactory.getObjects(content); objects = tuple.objects; d2 = objects.d2; + D2Manager.setD2$core_debug(d2); databaseAdapter = objects.databaseAdapter; dhis2MockServer = objects.dhis2MockServer; ServerURLWrapper.setServerUrl(dhis2MockServer.getBaseEndpoint()); diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index 0aade1a9b3..3c5c3372cf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -168,4 +168,10 @@ object D2Manager { testingDatabaseName = null testingUsername = null } + + @JvmStatic + @VisibleForTesting + internal fun setD2(d2: D2) { + this.d2 = d2 + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java index 17b54839c6..23eae8708d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java @@ -151,4 +151,6 @@ public interface DatabaseAdapter { boolean isReady(); void close(); + + String getDatabaseName(); } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java index 6e7b3fee93..251441774d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java @@ -106,11 +106,11 @@ private DatabaseAdapter newInternalAdapter(String databaseName, Context context, EncryptedDatabaseOpenHelper openHelper = instantiateOpenHelper(databaseName, encryptedOpenHelpers, v -> new EncryptedDatabaseOpenHelper(context, databaseName, version)); String password = passwordManager.getPassword(databaseName); - return new EncryptedDatabaseAdapter(openHelper.getWritableDatabase(password)); + return new EncryptedDatabaseAdapter(openHelper.getWritableDatabase(password), openHelper.getDatabaseName()); } else { UnencryptedDatabaseOpenHelper openHelper = instantiateOpenHelper(databaseName, unencryptedOpenHelpers, v -> new UnencryptedDatabaseOpenHelper(context, databaseName, version)); - return new UnencryptedDatabaseAdapter(openHelper.getWritableDatabase()); + return new UnencryptedDatabaseAdapter(openHelper.getWritableDatabase(), openHelper.getDatabaseName()); } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt index 2b8c2df978..22bac7f65d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt @@ -79,7 +79,7 @@ internal class DatabaseImportExportImpl @Inject constructor( val openHelper = UnencryptedDatabaseOpenHelper(context, TmpDatabase, BaseDatabaseOpenHelper.VERSION) val database = openHelper.readableDatabase - databaseAdapter = UnencryptedDatabaseAdapter(database) + databaseAdapter = UnencryptedDatabaseAdapter(database, openHelper.databaseName) if (database.version > BaseDatabaseOpenHelper.VERSION) { throw d2ErrorBuilder diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java index bd3ae09f8c..92c6d99e7d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java @@ -42,12 +42,14 @@ class EncryptedDatabaseAdapter implements DatabaseAdapter { private final SQLiteDatabase database; + private final String databaseName; - EncryptedDatabaseAdapter(@NonNull SQLiteDatabase database) { + EncryptedDatabaseAdapter(@NonNull SQLiteDatabase database, @NonNull String databaseName) { if (database == null) { throw new IllegalArgumentException("database == null"); } this.database = database; + this.databaseName = databaseName; } @Override @@ -140,4 +142,9 @@ public boolean isReady() { public void close() { database.close(); } + + @Override + public String getDatabaseName() { + return databaseName; + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java index 10635e74e7..8db1b8ddeb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java @@ -58,16 +58,16 @@ public void postKey(SQLiteDatabase database) { @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); - baseHelper.onOpen(new EncryptedDatabaseAdapter(db)); + baseHelper.onOpen(new EncryptedDatabaseAdapter(db, getDatabaseName())); } @Override public void onCreate(SQLiteDatabase db) { - baseHelper.onCreate(new EncryptedDatabaseAdapter(db)); + baseHelper.onCreate(new EncryptedDatabaseAdapter(db, getDatabaseName())); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - baseHelper.onUpgrade(new EncryptedDatabaseAdapter(db), oldVersion, newVersion); + baseHelper.onUpgrade(new EncryptedDatabaseAdapter(db, getDatabaseName()), oldVersion, newVersion); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java index 5c8ab2c930..23d3946a9b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java @@ -142,6 +142,11 @@ public void close() { } } + @Override + public String getDatabaseName() { + return getAdapter().getDatabaseName(); + } + @Override public boolean isReady() { return adapter != null; diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java index fc3e370bb8..3abad20dc0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java @@ -41,12 +41,14 @@ class UnencryptedDatabaseAdapter implements DatabaseAdapter { private final SQLiteDatabase database; + private final String databaseName; - UnencryptedDatabaseAdapter(@NonNull SQLiteDatabase database) { + UnencryptedDatabaseAdapter(@NonNull SQLiteDatabase database, @NonNull String databaseName) { if (database == null) { throw new IllegalArgumentException("database == null"); } this.database = database; + this.databaseName = databaseName; } @Override @@ -139,4 +141,9 @@ public boolean isReady() { public void close() { database.close(); } + + @Override + public String getDatabaseName() { + return databaseName; + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java index 1c6a013f93..a37191e257 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java @@ -44,16 +44,16 @@ class UnencryptedDatabaseOpenHelper extends SQLiteOpenHelper { @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); - baseHelper.onOpen(new UnencryptedDatabaseAdapter(db)); + baseHelper.onOpen(new UnencryptedDatabaseAdapter(db, getDatabaseName())); } @Override public void onCreate(SQLiteDatabase db) { - baseHelper.onCreate(new UnencryptedDatabaseAdapter(db)); + baseHelper.onCreate(new UnencryptedDatabaseAdapter(db, getDatabaseName())); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - baseHelper.onUpgrade(new UnencryptedDatabaseAdapter(db), oldVersion, newVersion); + baseHelper.onUpgrade(new UnencryptedDatabaseAdapter(db, getDatabaseName()), oldVersion, newVersion); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt similarity index 65% rename from core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.java rename to core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt index 552a9b6667..fdfcc1975e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt @@ -25,34 +25,34 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.arch.helpers -package org.hisp.dhis.android.core.arch.helpers; +import android.content.Context +import org.hisp.dhis.android.core.D2Manager +import java.io.File -import android.content.Context; +object FileResourceDirectoryHelper { -import java.io.File; - -public final class FileResourceDirectoryHelper { - - private FileResourceDirectoryHelper() {} + private const val FilesDir = "sdk_resources" + private const val CacheDir = "sdk_cache_resources" /** - * This method returns a {@link File} object whose path points to the Sdk resources directory where the Sdk will + * This method returns a [File] object whose path points to the Sdk resources directory where the Sdk will * save the files associated with the file resources. * * @param context The application context. - * @return A {@link File} object whose path points to the Sdk resources directory. + * @return A [File] object whose path points to the Sdk resources directory. */ - public static File getFileResourceDirectory(Context context) { - File file = new File(context.getFilesDir(), "sdk_resources"); - if (!file.exists() && file.mkdirs()) { - return file; - } - return file; + @JvmStatic + fun getFileResourceDirectory(context: Context): File { + val file = File(context.filesDir, "${FilesDir}/${getSubfolderName()}") + return if (!file.exists() && file.mkdirs()) { + file + } else file } /** - * This method returns a {@link File} object whose path points to the Sdk cache resources directory. This should be + * This method returns a [File] object whose path points to the Sdk cache resources directory. This should be * the place where volatile files are stored, such as camera photos or images to be resized. Since the directory * is contained in the cache directory, Android may auto-delete the files in the cache directory once the system * is about to run out of memory. Third party applications can also delete files from the cache directory. @@ -61,13 +61,16 @@ public static File getFileResourceDirectory(Context context) { * cache will need to be tidied up from time to time proactively. * * @param context The application context. - * @return A {@link File} object whose path points to the Sdk cache resources directory. + * @return A [File] object whose path points to the Sdk cache resources directory. */ - public static File getFileCacheResourceDirectory(Context context) { - File file = new File(context.getCacheDir(), "sdk_cache_resources"); - if (!file.exists() && file.mkdirs()) { - return file; - } - return file; + fun getFileCacheResourceDirectory(context: Context): File { + val file = File(context.cacheDir, "${CacheDir}/${getSubfolderName()}") + return if (!file.exists() && file.mkdirs()) { + file + } else file + } + + private fun getSubfolderName(): String { + return D2Manager.getD2().databaseAdapter().databaseName } } \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java index 3deeca9e8a..1c2f4d45a0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java @@ -52,12 +52,12 @@ public class UnencryptedDatabaseAdapterShould { @Before public void setup() { MockitoAnnotations.initMocks(this); - sqLiteDatabaseAdapter = new UnencryptedDatabaseAdapter(database); + sqLiteDatabaseAdapter = new UnencryptedDatabaseAdapter(database, "dbName"); } @Test(expected = IllegalArgumentException.class) public void throw_illegal_argument_exception_when_provide_null_db_open_helper() { - new UnencryptedDatabaseAdapter(null); + new UnencryptedDatabaseAdapter(null, "dbName"); } @Test From 58b22f0fd3a98f88353476524b2a018b06fdf006 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 2 Mar 2022 14:37:53 +0100 Subject: [PATCH 119/253] [ANDROSDK-1494] Create fileResources migration --- .../MetadataCallRealIntegrationShould.java | 3 +- .../helpers/FileResourceDirectoryHelper.kt | 19 ++++++++-- .../DatabaseConfigurationMigration.kt | 35 +++++++++++++++++-- .../internal/DatabaseNameGenerator.kt | 6 +++- .../internal/DatabasesConfiguration.java | 8 +++++ 5 files changed, 65 insertions(+), 6 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java index 4e78330897..c839e9ec9b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java @@ -31,6 +31,7 @@ import android.util.Log; import org.junit.Before; +import org.junit.Test; import java.io.IOException; @@ -70,7 +71,7 @@ make a debugger break point where desired (after sync complete) //This test is uncommented because technically it is flaky. //It depends on a live server to operate and the login is hardcoded here. //Uncomment in order to quickly test changes vs a real server, but keep it uncommented after. - //@Test + @Test public void response_successful_on_sync_meta_data_once() throws Exception { d2.userModule().logIn(username, password, url).blockingGet(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt index fdfcc1975e..cd61a5c401 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.arch.helpers import android.content.Context import org.hisp.dhis.android.core.D2Manager +import org.hisp.dhis.android.core.configuration.internal.DatabaseNameGenerator import java.io.File object FileResourceDirectoryHelper { @@ -45,7 +46,16 @@ object FileResourceDirectoryHelper { */ @JvmStatic fun getFileResourceDirectory(context: Context): File { - val file = File(context.filesDir, "${FilesDir}/${getSubfolderName()}") + return getFileResourceDirectory(context, getSubfolderName()) + } + + internal fun getRootFileResourceDirectory(context: Context): File { + return getFileResourceDirectory(context, null) + } + + internal fun getFileResourceDirectory(context: Context, subfolder: String?): File { + val childPath = subfolder?.let { "${FilesDir}/${it}" } ?: FilesDir + val file = File(context.filesDir, childPath) return if (!file.exists() && file.mkdirs()) { file } else file @@ -70,7 +80,12 @@ object FileResourceDirectoryHelper { } else file } + internal fun getSubfolderName(databaseName: String): String { + return databaseName.removeSuffix(DatabaseNameGenerator.DbSuffix) + } + private fun getSubfolderName(): String { - return D2Manager.getD2().databaseAdapter().databaseName + val dbName = D2Manager.getD2().databaseAdapter().databaseName + return getSubfolderName(dbName) } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt index d6c949423b..b1bb6c1d6e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt @@ -28,15 +28,18 @@ package org.hisp.dhis.android.core.configuration.internal import android.content.Context +import android.os.FileUtils import dagger.Reusable -import javax.inject.Inject +import org.hisp.dhis.android.BuildConfig import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory +import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import org.hisp.dhis.android.core.arch.storage.internal.InsecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.migration.DatabaseConfigurationInsecureStoreOld import org.hisp.dhis.android.core.user.internal.UserCredentialsStoreImpl +import javax.inject.Inject @Reusable internal class DatabaseConfigurationMigration @Inject constructor( @@ -50,6 +53,7 @@ internal class DatabaseConfigurationMigration @Inject constructor( ) { @Suppress("TooGenericExceptionCaught") fun apply() { + var existingVersionCode: Long? = null val oldDatabaseExist = context.databaseList().contains(OLD_DBNAME) if (oldDatabaseExist) { @@ -76,7 +80,11 @@ internal class DatabaseConfigurationMigration @Inject constructor( } else { try { try { - databaseConfigurationStore.get() + val configuration = databaseConfigurationStore.get() + if (configuration.versionCode() != BuildConfig.VERSION_CODE) { + configuration.toBuilder().versionCode(BuildConfig.VERSION_CODE).build() + databaseConfigurationStore.set(configuration) + } } catch (e: RuntimeException) { val configuration = tryOldDatabaseConfiguration() databaseConfigurationStore.set(configuration) @@ -85,6 +93,10 @@ internal class DatabaseConfigurationMigration @Inject constructor( databaseConfigurationStore.remove() } } + + if (existingVersionCode == null) { + migrateFileResources() + } } private fun tryOldDatabaseConfiguration(): DatabasesConfiguration? { @@ -118,6 +130,25 @@ internal class DatabaseConfigurationMigration @Inject constructor( return store.selectFirst()?.serverUrl() } + private fun migrateFileResources() { + val configuration = databaseConfigurationStore.get() + + configuration?.let { + if (configuration.accounts().size == 1) { + val existingAccount = configuration.accounts().first() + val existingDbName = existingAccount.databaseName() + + val rootResources = FileResourceDirectoryHelper.getRootFileResourceDirectory(context) + val dstResources = FileResourceDirectoryHelper.getFileResourceDirectory(context, existingDbName) + + rootResources.listFiles()?.forEach { + it.copyTo(dstResources) + it.delete() + } + } + } + } + companion object { const val OLD_DBNAME = "dhis.db" } diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt index 665062d3be..102de00766 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt @@ -34,7 +34,7 @@ import javax.inject.Inject internal class DatabaseNameGenerator @Inject constructor() { fun getDatabaseName(serverUrl: String, username: String, encrypt: Boolean): String { val encryptedStr = if (encrypt) "encrypted" else "unencrypted" - return processServerUrl(serverUrl) + "_" + username + "_" + encryptedStr + ".db" + return processServerUrl(serverUrl) + "_" + username + "_" + encryptedStr + DbSuffix } private fun processServerUrl(serverUrl: String): String { @@ -48,4 +48,8 @@ internal class DatabaseNameGenerator @Inject constructor() { .removePrefix("-") .removeSuffix("-") } + + companion object { + const val DbSuffix = ".db" + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java index 9af25cfdf3..deb96002f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java @@ -35,6 +35,8 @@ import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; import com.google.auto.value.AutoValue; +import org.hisp.dhis.android.BuildConfig; + import java.util.Collections; import java.util.List; @@ -42,6 +44,9 @@ @JsonDeserialize(builder = AutoValue_DatabasesConfiguration.Builder.class) public abstract class DatabasesConfiguration { + @JsonProperty + public abstract long versionCode(); + @JsonProperty() @NonNull public abstract Integer maxAccounts(); @@ -52,6 +57,7 @@ public abstract class DatabasesConfiguration { public static Builder builder() { return new AutoValue_DatabasesConfiguration.Builder() + .versionCode(BuildConfig.VERSION_CODE) .maxAccounts(MultiUserDatabaseManager.DefaultMaxAccounts) .accounts(Collections.emptyList()); } @@ -62,6 +68,8 @@ public static Builder builder() { @JsonPOJOBuilder(withPrefix = "") public abstract static class Builder { + public abstract Builder versionCode(long versionCode); + public abstract Builder maxAccounts(Integer maxAccounts); public abstract Builder accounts(List accounts); From d218aef52122786d7a48270a08e1ed607c3d8838 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 2 Mar 2022 15:21:55 +0100 Subject: [PATCH 120/253] [ANDROSDK-1494] Delete file resources on wipe data --- .../core/MetadataCallRealIntegrationShould.java | 3 +-- ...atabaseConfigurationMigrationIntegrationShould.kt | 12 ++++++++++++ .../internal/DatabaseConfigurationMigration.kt | 10 +++++----- .../fileresource/internal/FileResourceModuleWiper.kt | 6 +++++- .../android/core/user/internal/AccountManagerImpl.kt | 8 +++++++- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java index c839e9ec9b..4e78330897 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java @@ -31,7 +31,6 @@ import android.util.Log; import org.junit.Before; -import org.junit.Test; import java.io.IOException; @@ -71,7 +70,7 @@ make a debugger break point where desired (after sync complete) //This test is uncommented because technically it is flaky. //It depends on a live server to operate and the login is hardcoded here. //Uncomment in order to quickly test changes vs a real server, but keep it uncommented after. - @Test + //@Test public void response_successful_on_sync_meta_data_once() throws Exception { d2.userModule().logIn(username, password, url).blockingGet(); diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt index bce0231299..5ee60b9678 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt @@ -32,6 +32,7 @@ import com.google.common.truth.Truth.assertThat import java.io.IOException import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory +import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.* import org.hisp.dhis.android.core.common.ObjectWithUid import org.hisp.dhis.android.core.configuration.internal.migration.DatabaseConfigurationInsecureStoreOld @@ -44,6 +45,7 @@ import org.hisp.dhis.android.core.utils.runner.D2JunitRunner import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import java.io.File @RunWith(D2JunitRunner::class) class DatabaseConfigurationMigrationIntegrationShould { @@ -148,6 +150,9 @@ class DatabaseConfigurationMigrationIntegrationShould { DatabaseConfigurationInsecureStoreOld.get(insecureStore).set(oldDatabaseConfiguration) + val rootSdkResources = FileResourceDirectoryHelper.getRootFileResourceDirectory(context) + File(rootSdkResources, "sample.txt").createNewFile() + migration.apply() val migrated = databasesConfigurationStore.get() @@ -158,6 +163,13 @@ class DatabaseConfigurationMigrationIntegrationShould { assertThat(it.serverUrl()).isEqualTo(serverUrl) assertThat(it.databaseName()).isEqualTo(newName) } + + assertThat(rootSdkResources.listFiles()?.filter { it.isFile }).isEmpty() + assertThat(rootSdkResources.listFiles()?.filter { it.isDirectory }?.size).isEqualTo(1) + + val directoryFiles = rootSdkResources.listFiles()?.find { it.isDirectory }?.listFiles() + assertThat(directoryFiles?.size).isEqualTo(1) + assertThat(directoryFiles?.first()?.name).isEqualTo("sample.txt") } @Test diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt index b1bb6c1d6e..2663162958 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt @@ -39,6 +39,7 @@ import org.hisp.dhis.android.core.arch.storage.internal.InsecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.migration.DatabaseConfigurationInsecureStoreOld import org.hisp.dhis.android.core.user.internal.UserCredentialsStoreImpl +import java.io.File import javax.inject.Inject @Reusable @@ -136,15 +137,14 @@ internal class DatabaseConfigurationMigration @Inject constructor( configuration?.let { if (configuration.accounts().size == 1) { val existingAccount = configuration.accounts().first() - val existingDbName = existingAccount.databaseName() + val existingDbName = FileResourceDirectoryHelper.getSubfolderName(existingAccount.databaseName()) val rootResources = FileResourceDirectoryHelper.getRootFileResourceDirectory(context) val dstResources = FileResourceDirectoryHelper.getFileResourceDirectory(context, existingDbName) - rootResources.listFiles()?.forEach { - it.copyTo(dstResources) - it.delete() - } + rootResources.listFiles() + ?.filter { it.isFile } + ?.forEach { file -> file.renameTo(File(dstResources, file.name)) } } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt index 24e5bb740b..4fed9c66b1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt @@ -27,7 +27,9 @@ */ package org.hisp.dhis.android.core.fileresource.internal +import android.content.Context import dagger.Reusable +import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import javax.inject.Inject import org.hisp.dhis.android.core.fileresource.FileResourceTableInfo import org.hisp.dhis.android.core.wipe.internal.ModuleWiper @@ -35,7 +37,8 @@ import org.hisp.dhis.android.core.wipe.internal.TableWiper @Reusable internal class FileResourceModuleWiper @Inject constructor( - private val tableWiper: TableWiper + private val tableWiper: TableWiper, + private val context: Context ) : ModuleWiper { override fun wipeMetadata() { @@ -44,5 +47,6 @@ internal class FileResourceModuleWiper @Inject constructor( override fun wipeData() { tableWiper.wipeTable(FileResourceTableInfo.TABLE_INFO) + FileResourceDirectoryHelper.getFileResourceDirectory(context).deleteRecursively() } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index 706e7c6c36..15bb382761 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -28,10 +28,12 @@ package org.hisp.dhis.android.core.user.internal +import android.content.Context import dagger.Reusable import javax.inject.Inject import kotlin.jvm.Throws import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory +import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount @@ -49,7 +51,8 @@ internal class AccountManagerImpl @Inject constructor( private val multiUserDatabaseManager: MultiUserDatabaseManager, private val databaseAdapterFactory: DatabaseAdapterFactory, private val credentialsSecureStore: CredentialsSecureStore, - private val logOutCall: LogOutCall + private val logOutCall: LogOutCall, + private val context: Context ) : AccountManager { override fun getAccounts(): List { return databasesConfigurationStore.get()?.accounts() ?: emptyList() @@ -83,6 +86,9 @@ internal class AccountManagerImpl @Inject constructor( ) val updatedConfiguration = DatabaseConfigurationHelper.removeAccount(configuration, listOf(loggedAccount)) databasesConfigurationStore.set(updatedConfiguration) + + val resourcesName = FileResourceDirectoryHelper.getSubfolderName(loggedAccount.databaseName()) + FileResourceDirectoryHelper.getFileResourceDirectory(context, resourcesName).deleteRecursively() databaseAdapterFactory.deleteDatabase(loggedAccount) } } From 78f57d0141f4958d44cce6d23ada98c14d0f8943 Mon Sep 17 00:00:00 2001 From: ericampire Date: Wed, 2 Mar 2022 23:20:12 +0200 Subject: [PATCH 121/253] [ANDROSDK-1471] Fix MetadataCallShould test --- .../legendset/internal/LegendSetModuleDownloader.kt | 12 +++++++----- .../core/legendset/internal/LegendSetService.kt | 2 +- .../core/domain/metadata/MetadataCallShould.kt | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt index 0c22f526a5..4ce8d80001 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt @@ -30,18 +30,20 @@ package org.hisp.dhis.android.core.legendset.internal import dagger.Reusable import io.reactivex.Completable -import io.reactivex.Single import javax.inject.Inject import org.hisp.dhis.android.core.arch.modules.internal.UntypedModuleDownloader @Reusable -class LegendSetModuleDownloader @Inject internal constructor( +internal class LegendSetModuleDownloader @Inject internal constructor( private val legendSetUidsSeeker: LegendSetUidsSeeker, private val legendSetCall: LegendSetCall ) : UntypedModuleDownloader { override fun downloadMetadata(): Completable { - return Single.fromCallable { legendSetUidsSeeker.seekUids() } - .flatMap { legendSetCall.download(it) } - .ignoreElement() + return Completable.fromCallable { + val uids = legendSetUidsSeeker.seekUids() + if (!uids.isNullOrEmpty()) { + legendSetCall.download(uids) + } + } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt index 59337e347b..ae63d5cc40 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetService.kt @@ -38,7 +38,7 @@ import org.hisp.dhis.android.core.legendset.LegendSet import retrofit2.http.GET import retrofit2.http.Query -interface LegendSetService { +internal interface LegendSetService { @GET("legendSets") fun getLegendSets( @Query("fields") @Which fields: Fields, diff --git a/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt index 3bd81f4618..a45bd5ded6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt @@ -106,6 +106,7 @@ class MetadataCallShould : BaseCallShould() { whenever(visualizationDownloader.downloadMetadata()).thenReturn( Single.just(emptyList()) ) + whenever(legendSetModuleDownloader.downloadMetadata()).thenReturn(Completable.complete()) whenever(constantDownloader.downloadMetadata()).thenReturn(Single.just(emptyList())) whenever(indicatorDownloader.downloadMetadata()).thenReturn(Completable.complete()) whenever(categoryDownloader.downloadMetadata()).thenReturn(Completable.complete()) @@ -117,8 +118,7 @@ class MetadataCallShould : BaseCallShould() { any(), any() ) - ) - .then(AdditionalAnswers.returnsFirstArg()) + ).then(AdditionalAnswers.returnsFirstArg()) // Metadata call metadataCall = MetadataCall( From 786c1cfe6f59f687e328b5f3cb1c425f32cc7bc6 Mon Sep 17 00:00:00 2001 From: ericampire Date: Wed, 2 Mar 2022 23:35:28 +0200 Subject: [PATCH 122/253] [ANDROSDK-1471] Refactoring --- .../internal/CategoryPackageDIModule.kt | 15 ------------ .../internal/LegendPackageDIModule.java | 15 ++++++++++++ .../legendset/internal/LegendSetUidsSeeker.kt | 3 ++- .../resources/indicators/indicators.json | 24 +------------------ 4 files changed, 18 insertions(+), 39 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt index 85db3035f9..0011c676c7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt @@ -35,9 +35,6 @@ import org.hisp.dhis.android.core.category.Category import org.hisp.dhis.android.core.category.CategoryCombo import org.hisp.dhis.android.core.category.CategoryModule import org.hisp.dhis.android.core.category.CategoryOption -import org.hisp.dhis.android.core.legendset.LegendSet -import org.hisp.dhis.android.core.legendset.internal.LegendSetCall -import org.hisp.dhis.android.core.legendset.internal.LegendSetService import retrofit2.Retrofit @Module( @@ -72,12 +69,6 @@ internal class CategoryPackageDIModule { return retrofit.create(CategoryComboService::class.java) } - @Provides - @Reusable - fun legendSetService(retrofit: Retrofit): LegendSetService { - return retrofit.create(LegendSetService::class.java) - } - @Provides @Reusable fun categoryCall(impl: CategoryCall): UidsCall { @@ -96,12 +87,6 @@ internal class CategoryPackageDIModule { return impl } - @Provides - @Reusable - fun legendSetCall(impl: LegendSetCall): UidsCall { - return impl - } - @Provides @Reusable fun module(impl: CategoryModuleImpl): CategoryModule { diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java index 2cd0e22d83..b98506701d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java @@ -28,11 +28,14 @@ package org.hisp.dhis.android.core.legendset.internal; +import org.hisp.dhis.android.core.arch.call.factories.internal.UidsCall; +import org.hisp.dhis.android.core.legendset.LegendSet; import org.hisp.dhis.android.core.legendset.LegendSetModule; import dagger.Module; import dagger.Provides; import dagger.Reusable; +import retrofit2.Retrofit; @Module(includes = { LegendEntityDIModule.class, @@ -46,4 +49,16 @@ public final class LegendPackageDIModule { LegendSetModule module(LegendSetModuleImpl impl) { return impl; } + + @Provides + @Reusable + UidsCall legendSetCall(LegendSetCall impl) { + return impl; + } + + @Provides + @Reusable + LegendSetService legendSetService(Retrofit retrofit) { + return retrofit.create(LegendSetService.class); + } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt index 70f8b1dc84..09ac80e4f2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeeker.kt @@ -50,8 +50,9 @@ class LegendSetUidsSeeker @Inject constructor(private val databaseAdapter: Datab .generateQuery(ProgramIndicatorLegendSetLinkTableInfo.Columns.LEGEND_SET, tableNames) .build() + val legendSetIdColumnName = VisualizationTableInfo.Columns.LEGEND_SET_ID val visualisationLegendSetQuery = MultipleTableQueryBuilder() - .generateQuery("legendSetId", listOf(VisualizationTableInfo.TABLE_INFO.name())) + .generateQuery(legendSetIdColumnName, listOf(VisualizationTableInfo.TABLE_INFO.name())) .build() val cursor = databaseAdapter.rawQuery(query) diff --git a/core/src/sharedTest/resources/indicators/indicators.json b/core/src/sharedTest/resources/indicators/indicators.json index 252a0dc834..d1e50acf4f 100644 --- a/core/src/sharedTest/resources/indicators/indicators.json +++ b/core/src/sharedTest/resources/indicators/indicators.json @@ -21,29 +21,7 @@ }, "legendSets": [ { - "code": "AGE40YINT2", - "created": "2017-06-02T11:40:33.452", - "lastUpdated": "2017-06-02T11:41:01.999", - "name": "Age 40y interval", - "id": "rtOkbpGEud4", - "displayName": "Age 40y interval", - "symbolizer": "color", - "legends": [ - { - "id": "bzQkRWHS7lu", - "name": "0 - 40", - "startValue": 0, - "endValue": 40, - "color": "#G38026" - }, - { - "id": "qEf6QhFVMab", - "name": "40 - 999", - "startValue": 40, - "endValue": 999, - "color": "#A6AE5E" - } - ] + "id": "rtOkbpGEud4" } ] } From 4d02354a9ac5bfb9ec90e78bbffffd8756777de1 Mon Sep 17 00:00:00 2001 From: ericampire Date: Thu, 3 Mar 2022 09:05:59 +0200 Subject: [PATCH 123/253] [ANDROSDK-1471] Fix LegendCollectionRepositoryMockIntegrationShould filter by legend --- ...egendCollectionRepositoryMockIntegrationShould.java | 2 +- .../legendset/internal/LegendSetModuleDownloader.kt | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java index a5943a3740..9722a3a2a4 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java @@ -85,7 +85,7 @@ public void find_by_color() { @Test public void find_by_legend_set() { List legends = d2.legendSetModule().legends() - .byLegendSet().eq("TiOkbpGEud4") + .byLegendSet().eq("QiOkbpGEud4") .blockingGet(); assertThat(legends.size()).isEqualTo(2); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt index 4ce8d80001..3aa38b7a21 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleDownloader.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.legendset.internal import dagger.Reusable import io.reactivex.Completable +import io.reactivex.Single import javax.inject.Inject import org.hisp.dhis.android.core.arch.modules.internal.UntypedModuleDownloader @@ -39,11 +40,8 @@ internal class LegendSetModuleDownloader @Inject internal constructor( private val legendSetCall: LegendSetCall ) : UntypedModuleDownloader { override fun downloadMetadata(): Completable { - return Completable.fromCallable { - val uids = legendSetUidsSeeker.seekUids() - if (!uids.isNullOrEmpty()) { - legendSetCall.download(uids) - } - } + return Single.fromCallable { legendSetUidsSeeker.seekUids() } + .flatMap { legendSetCall.download(it) } + .ignoreElement() } } From eff91fd72f858ac498e5424ba1f7afe81e857227 Mon Sep 17 00:00:00 2001 From: ericampire Date: Thu, 3 Mar 2022 12:36:53 +0200 Subject: [PATCH 124/253] [ANDROSDK-1471] Fix LegendCollectionRepositoryMockIntegrationShould filter by legend --- .../LegendSetCollectionRepositoryMockIntegrationShould.java | 4 ++-- ...ramIndicatorCollectionRepositoryMockIntegrationShould.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java index f069a6aedc..3da12feb67 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java @@ -45,7 +45,7 @@ public class LegendSetCollectionRepositoryMockIntegrationShould extends BaseMock public void find_all() { List legendSets = d2.legendSetModule().legendSets() .blockingGet(); - assertThat(legendSets.size()).isEqualTo(3); + assertThat(legendSets.size()).isEqualTo(5); } @Test @@ -53,7 +53,7 @@ public void filter_by_symbolizer() { List legendSets = d2.legendSetModule().legendSets() .bySymbolizer().eq("color") .blockingGet(); - assertThat(legendSets.size()).isEqualTo(3); + assertThat(legendSets.size()).isEqualTo(5); } @Test diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java index 63b05380c2..4383ec9e13 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java @@ -146,7 +146,7 @@ public void include_legend_sets_as_children() { ProgramIndicator programIndicators = d2.programModule().programIndicators() .withLegendSets().one().blockingGet(); assertThat(programIndicators.legendSets().size()).isEqualTo(1); - assertThat(programIndicators.legendSets().get(0).uid()).isEqualTo("rtOkbpGEud4"); + assertThat(programIndicators.legendSets().get(0).uid()).isEqualTo("TiOkbpGEud4"); } @Test From bc1a5557cf13b698d4492d1624b7effc0196aa2b Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 3 Mar 2022 12:36:19 +0100 Subject: [PATCH 125/253] [ANDROSDK-1494] Add path migration --- ...ConfigurationMigrationIntegrationShould.kt | 2 +- .../org/hisp/dhis/android/core/D2Manager.kt | 1 + .../helpers/FileResourceDirectoryHelper.kt | 12 ++-- .../DatabaseConfigurationMigration.kt | 57 ++++++++++++++----- .../internal/FileResourceModuleWiper.kt | 2 +- .../databases_configuration.json | 1 + .../internal/DatabasesConfigurationShould.kt | 1 + 7 files changed, 53 insertions(+), 23 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt index 5ee60b9678..9e35167496 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.configuration.internal import androidx.test.platform.app.InstrumentationRegistry import com.google.common.truth.Truth.assertThat +import java.io.File import java.io.IOException import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory @@ -45,7 +46,6 @@ import org.hisp.dhis.android.core.utils.runner.D2JunitRunner import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import java.io.File @RunWith(D2JunitRunner::class) class DatabaseConfigurationMigrationIntegrationShould { diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index 3c5c3372cf..6999f6ece9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -43,6 +43,7 @@ import org.hisp.dhis.android.core.arch.storage.internal.SecureStore * Helper class that offers static methods to setup and initialize the D2 instance. Also, it ensures that D2 is a * singleton across the application. */ +@Suppress("TooManyFunctions") object D2Manager { private var d2: D2? = null private var isTestMode = false diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt index cd61a5c401..90a24fc955 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt @@ -28,14 +28,14 @@ package org.hisp.dhis.android.core.arch.helpers import android.content.Context +import java.io.File import org.hisp.dhis.android.core.D2Manager import org.hisp.dhis.android.core.configuration.internal.DatabaseNameGenerator -import java.io.File object FileResourceDirectoryHelper { - private const val FilesDir = "sdk_resources" - private const val CacheDir = "sdk_cache_resources" + internal const val FilesDir = "sdk_resources" + internal const val CacheDir = "sdk_cache_resources" /** * This method returns a [File] object whose path points to the Sdk resources directory where the Sdk will @@ -54,7 +54,7 @@ object FileResourceDirectoryHelper { } internal fun getFileResourceDirectory(context: Context, subfolder: String?): File { - val childPath = subfolder?.let { "${FilesDir}/${it}" } ?: FilesDir + val childPath = subfolder?.let { "$FilesDir/$it" } ?: FilesDir val file = File(context.filesDir, childPath) return if (!file.exists() && file.mkdirs()) { file @@ -74,7 +74,7 @@ object FileResourceDirectoryHelper { * @return A [File] object whose path points to the Sdk cache resources directory. */ fun getFileCacheResourceDirectory(context: Context): File { - val file = File(context.cacheDir, "${CacheDir}/${getSubfolderName()}") + val file = File(context.cacheDir, "$CacheDir/${getSubfolderName()}") return if (!file.exists() && file.mkdirs()) { file } else file @@ -88,4 +88,4 @@ object FileResourceDirectoryHelper { val dbName = D2Manager.getD2().databaseAdapter().databaseName return getSubfolderName(dbName) } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt index 2663162958..54936423ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt @@ -28,8 +28,9 @@ package org.hisp.dhis.android.core.configuration.internal import android.content.Context -import android.os.FileUtils import dagger.Reusable +import java.io.File +import javax.inject.Inject import org.hisp.dhis.android.BuildConfig import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory @@ -38,9 +39,8 @@ import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import org.hisp.dhis.android.core.arch.storage.internal.InsecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.migration.DatabaseConfigurationInsecureStoreOld +import org.hisp.dhis.android.core.fileresource.internal.FileResourceStoreImpl import org.hisp.dhis.android.core.user.internal.UserCredentialsStoreImpl -import java.io.File -import javax.inject.Inject @Reusable internal class DatabaseConfigurationMigration @Inject constructor( @@ -81,11 +81,11 @@ internal class DatabaseConfigurationMigration @Inject constructor( } else { try { try { + // This is the main flow after versionCode 260 val configuration = databaseConfigurationStore.get() - if (configuration.versionCode() != BuildConfig.VERSION_CODE) { - configuration.toBuilder().versionCode(BuildConfig.VERSION_CODE).build() - databaseConfigurationStore.set(configuration) - } + existingVersionCode = configuration.versionCode() + + migrateVersionCodeIfNeeded(configuration) } catch (e: RuntimeException) { val configuration = tryOldDatabaseConfiguration() databaseConfigurationStore.set(configuration) @@ -96,7 +96,14 @@ internal class DatabaseConfigurationMigration @Inject constructor( } if (existingVersionCode == null) { - migrateFileResources() + migrateVersion260() + } + } + + private fun migrateVersionCodeIfNeeded(configuration: DatabasesConfiguration) { + if (configuration.versionCode() != BuildConfig.VERSION_CODE) { + configuration.toBuilder().versionCode(BuildConfig.VERSION_CODE).build() + databaseConfigurationStore.set(configuration) } } @@ -131,24 +138,44 @@ internal class DatabaseConfigurationMigration @Inject constructor( return store.selectFirst()?.serverUrl() } - private fun migrateFileResources() { + private fun migrateVersion260() { val configuration = databaseConfigurationStore.get() configuration?.let { if (configuration.accounts().size == 1) { val existingAccount = configuration.accounts().first() - val existingDbName = FileResourceDirectoryHelper.getSubfolderName(existingAccount.databaseName()) + val databaseAdapter = databaseAdapterFactory.newParentDatabaseAdapter() + databaseAdapterFactory.createOrOpenDatabase(databaseAdapter, existingAccount) - val rootResources = FileResourceDirectoryHelper.getRootFileResourceDirectory(context) - val dstResources = FileResourceDirectoryHelper.getFileResourceDirectory(context, existingDbName) + migrateFileResources260(databaseAdapter) - rootResources.listFiles() - ?.filter { it.isFile } - ?.forEach { file -> file.renameTo(File(dstResources, file.name)) } + databaseAdapter.close() } } } + private fun migrateFileResources260(databaseAdapter: DatabaseAdapter) { + val accountSubFolder = FileResourceDirectoryHelper.getSubfolderName(databaseAdapter.databaseName) + + val rootResources = FileResourceDirectoryHelper.getRootFileResourceDirectory(context) + val dstResources = FileResourceDirectoryHelper.getFileResourceDirectory(context, accountSubFolder) + + rootResources.listFiles() + ?.filter { it.isFile } + ?.forEach { file -> file.renameTo(File(dstResources, file.name)) } + + val fileResourcesStore = FileResourceStoreImpl.create(databaseAdapter) + val fileResources = fileResourcesStore.selectAll() + fileResources.forEach { + val newPath = it.path()?.replace( + oldValue = FileResourceDirectoryHelper.FilesDir, + newValue = FileResourceDirectoryHelper.FilesDir + "/" + accountSubFolder + ) ?: "" + val newFileResource = it.toBuilder().path(newPath).build() + fileResourcesStore.updateOrInsert(newFileResource) + } + } + companion object { const val OLD_DBNAME = "dhis.db" } diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt index 4fed9c66b1..7ba71a1ff5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt @@ -29,8 +29,8 @@ package org.hisp.dhis.android.core.fileresource.internal import android.content.Context import dagger.Reusable -import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import javax.inject.Inject +import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.fileresource.FileResourceTableInfo import org.hisp.dhis.android.core.wipe.internal.ModuleWiper import org.hisp.dhis.android.core.wipe.internal.TableWiper diff --git a/core/src/sharedTest/resources/configuration/databases_configuration.json b/core/src/sharedTest/resources/configuration/databases_configuration.json index ce585864ab..234293f727 100644 --- a/core/src/sharedTest/resources/configuration/databases_configuration.json +++ b/core/src/sharedTest/resources/configuration/databases_configuration.json @@ -1,4 +1,5 @@ { + "versionCode": 260, "maxAccounts": 3, "accounts": [ { diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt index 3aa67cd5b9..ad27207687 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt @@ -40,6 +40,7 @@ class DatabasesConfigurationShould : override fun map_from_json_string() { val configuration = deserialize(DatabasesConfiguration::class.java) + assertThat(configuration.versionCode()).isEqualTo(260) assertThat(configuration.maxAccounts()).isEqualTo(3) assertThat(configuration.accounts().size).isEqualTo(2) From f19c954b57acd0286eedfb572fd74507cc18840f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 3 Mar 2022 13:17:34 +0100 Subject: [PATCH 126/253] Remove file resource directory on account change --- .../core/arch/helpers/FileResourceDirectoryHelper.kt | 6 ++++++ .../internal/MultiUserDatabaseManager.kt | 11 ++++++++--- .../android/core/user/internal/AccountManagerImpl.kt | 6 ++---- .../internal/MultiUserDatabaseManagerUnitShould.kt | 4 +++- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt index 90a24fc955..7c4ef0f5f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.arch.helpers import android.content.Context import java.io.File import org.hisp.dhis.android.core.D2Manager +import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount import org.hisp.dhis.android.core.configuration.internal.DatabaseNameGenerator object FileResourceDirectoryHelper { @@ -61,6 +62,11 @@ object FileResourceDirectoryHelper { } else file } + internal fun deleteFileResourceDirectory(context: Context, databaseAccount: DatabaseAccount) { + val resourcesName = getSubfolderName(databaseAccount.databaseName()) + getFileResourceDirectory(context, resourcesName).deleteRecursively() + } + /** * This method returns a [File] object whose path points to the Sdk cache resources directory. This should be * the place where volatile files are stored, such as camera photos or images to be resized. Since the directory diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt index 7a5ff2f6be..3120ad7d66 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt @@ -27,19 +27,21 @@ */ package org.hisp.dhis.android.core.configuration.internal +import android.content.Context import android.util.Log import dagger.Reusable -import java.lang.IllegalArgumentException -import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseExport +import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository +import javax.inject.Inject @Reusable internal class MultiUserDatabaseManager @Inject internal constructor( + private val context: Context, private val databaseAdapter: DatabaseAdapter, private val databaseConfigurationSecureStore: ObjectKeyValueStore, private val configurationHelper: DatabaseConfigurationHelper, @@ -88,7 +90,10 @@ internal class MultiUserDatabaseManager @Inject internal constructor( DatabaseConfigurationHelper.removeAccount(configuration, exceedingAccounts) databaseConfigurationSecureStore.set(updatedConfiguration) - exceedingAccounts.forEach { databaseAdapterFactory.deleteDatabase(it) } + exceedingAccounts.forEach { + FileResourceDirectoryHelper.deleteFileResourceDirectory(context, it) + databaseAdapterFactory.deleteDatabase(it) + } } val userConfiguration = addNewAccountInternal(serverUrl, username, encrypt) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index 15bb382761..fcab3b80a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -30,8 +30,6 @@ package org.hisp.dhis.android.core.user.internal import android.content.Context import dagger.Reusable -import javax.inject.Inject -import kotlin.jvm.Throws import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore @@ -44,6 +42,7 @@ import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import org.hisp.dhis.android.core.user.AccountManager +import javax.inject.Inject @Reusable internal class AccountManagerImpl @Inject constructor( @@ -87,8 +86,7 @@ internal class AccountManagerImpl @Inject constructor( val updatedConfiguration = DatabaseConfigurationHelper.removeAccount(configuration, listOf(loggedAccount)) databasesConfigurationStore.set(updatedConfiguration) - val resourcesName = FileResourceDirectoryHelper.getSubfolderName(loggedAccount.databaseName()) - FileResourceDirectoryHelper.getFileResourceDirectory(context, resourcesName).deleteRecursively() + FileResourceDirectoryHelper.deleteFileResourceDirectory(context, loggedAccount) databaseAdapterFactory.deleteDatabase(loggedAccount) } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt index e7af46b231..6a95693f05 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt @@ -27,6 +27,7 @@ */ package org.hisp.dhis.android.core.configuration.internal +import android.content.Context import com.nhaarman.mockitokotlin2.* import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseExport @@ -42,6 +43,7 @@ import org.junit.runners.JUnit4 @RunWith(JUnit4::class) class MultiUserDatabaseManagerUnitShould : BaseCallShould() { + private val context: Context = mock() private val databaseConfigurationSecureStore: ObjectKeyValueStore = mock() private val configurationHelper: DatabaseConfigurationHelper = mock() private val databaseExport: DatabaseExport = mock() @@ -85,7 +87,7 @@ class MultiUserDatabaseManagerUnitShould : BaseCallShould() { override fun setUp() { super.setUp() manager = MultiUserDatabaseManager( - databaseAdapter, databaseConfigurationSecureStore, configurationHelper, + context, databaseAdapter, databaseConfigurationSecureStore, configurationHelper, databaseAdapterFactory, databaseExport, localDbRepository ) } From dd0a0f60d272d07122b485dadd837a63d9e7f105 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 3 Mar 2022 13:33:48 +0100 Subject: [PATCH 127/253] [ANDROSDK-1494] Adapt integration test --- .../DatabaseConfigurationMigrationIntegrationShould.kt | 2 ++ .../android/core/arch/helpers/FileResourceDirectoryHelper.kt | 4 ++++ .../core/configuration/internal/MultiUserDatabaseManager.kt | 2 +- .../dhis/android/core/user/internal/AccountManagerImpl.kt | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt index 9e35167496..874a1ff88b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt @@ -84,6 +84,8 @@ class DatabaseConfigurationMigrationIntegrationShould { context, databasesConfigurationStore, credentialsSecureStore, insecureStore, nameGenerator, renamer, databaseAdapterFactory ) + + FileResourceDirectoryHelper.deleteRootFileResourceDirectory(context) } @Test diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt index 7c4ef0f5f9..6f09fff636 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt @@ -62,6 +62,10 @@ object FileResourceDirectoryHelper { } else file } + internal fun deleteRootFileResourceDirectory(context: Context) { + getRootFileResourceDirectory(context).deleteRecursively() + } + internal fun deleteFileResourceDirectory(context: Context, databaseAccount: DatabaseAccount) { val resourcesName = getSubfolderName(databaseAccount.databaseName()) getFileResourceDirectory(context, resourcesName).deleteRecursively() diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt index 3120ad7d66..ce3dcc9219 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.configuration.internal import android.content.Context import android.util.Log import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseExport @@ -37,7 +38,6 @@ import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository -import javax.inject.Inject @Reusable internal class MultiUserDatabaseManager @Inject internal constructor( diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index fcab3b80a4..8a6f7ea2fa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.user.internal import android.content.Context import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore @@ -42,7 +43,6 @@ import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import org.hisp.dhis.android.core.user.AccountManager -import javax.inject.Inject @Reusable internal class AccountManagerImpl @Inject constructor( From 494b7bc24f9092390ff3bb3ff641e514ec6449bb Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 1 Mar 2022 17:10:56 +0100 Subject: [PATCH 128/253] [ANDROSDK-1370] Create SMS Metadata store --- .../SMSConfigStoreIntegrationShould.kt | 54 ++++++++ .../SMSMetadataIdStoreIntegrationShould.kt | 52 ++++++++ core/src/main/assets/migrations/123.sql | 4 + .../assets/snapshots/{122.sql => 123.sql} | 2 + .../internal/BaseDatabaseOpenHelper.java | 2 +- .../internal/SMSMetadataTypeColumnAdapter.kt | 36 ++++++ .../datastore/internal/LocalDataStoreStore.kt | 4 +- .../internal/LocalDbRepositoryImpl.java | 3 +- .../internal/MetadataIdsStore.java | 113 ----------------- .../internal/MetadataIdsStore.kt | 119 ++++++++++++++++++ .../internal/SMSConfigKey.kt | 32 +++++ .../internal/SMSConfigStore.kt | 37 ++++++ .../internal/SMSConfigStoreImpl.kt | 109 ++++++++++++++++ .../internal/SMSConfigTableInfo.kt | 69 ++++++++++ .../internal/SMSMetadataId.java | 72 +++++++++++ .../internal/SMSMetadataIdStore.kt | 64 ++++++++++ .../internal/SMSMetadataIdTableInfo.kt | 69 ++++++++++ .../core/sms/internal/SmsDIModule.java | 18 +++ .../core/data/sms/SMSMetadataIdSample.kt | 41 ++++++ 19 files changed, 783 insertions(+), 117 deletions(-) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt create mode 100644 core/src/main/assets/migrations/123.sql rename core/src/main/assets/snapshots/{122.sql => 123.sql} (99%) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt create mode 100644 core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt new file mode 100644 index 0000000000..cd6d4793cc --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.data.database.ObjectWithoutUidStoreAbstractIntegrationShould +import org.hisp.dhis.android.core.data.datastore.KeyValuePairSamples.keyValuePairSample +import org.hisp.dhis.android.core.datastore.KeyValuePair +import org.hisp.dhis.android.core.datastore.internal.LocalDataStoreStore.create +import org.hisp.dhis.android.core.utils.integration.mock.TestDatabaseAdapterFactory +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class SMSConfigStoreIntegrationShould : ObjectWithoutUidStoreAbstractIntegrationShould( + create(TestDatabaseAdapterFactory.get()), + SMSConfigTableInfo.TABLE_INFO, + TestDatabaseAdapterFactory.get() +) { + override fun buildObject(): KeyValuePair { + return keyValuePairSample + } + + override fun buildObjectToUpdate(): KeyValuePair { + return keyValuePairSample + .toBuilder() + .value("value2") + .build() + } +} diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt new file mode 100644 index 0000000000..1bdbfb5560 --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.data.database.ObjectWithoutUidStoreAbstractIntegrationShould +import org.hisp.dhis.android.core.data.sms.SMSMetadataIdSample +import org.hisp.dhis.android.core.utils.integration.mock.TestDatabaseAdapterFactory +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class SMSMetadataIdStoreIntegrationShould : ObjectWithoutUidStoreAbstractIntegrationShould( + SMSMetadataIdStore.create(TestDatabaseAdapterFactory.get()), + SMSMetadataIdTableInfo.TABLE_INFO, + TestDatabaseAdapterFactory.get() +) { + override fun buildObject(): SMSMetadataId { + return SMSMetadataIdSample.get + } + + override fun buildObjectToUpdate(): SMSMetadataId { + return SMSMetadataIdSample.get + .toBuilder() + .uid("uid2") + .build() + } +} diff --git a/core/src/main/assets/migrations/123.sql b/core/src/main/assets/migrations/123.sql new file mode 100644 index 0000000000..33a300081c --- /dev/null +++ b/core/src/main/assets/migrations/123.sql @@ -0,0 +1,4 @@ +# Include SMS config in database (ANDROSDK-1370) + +CREATE TABLE SMSConfig (_id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL UNIQUE, value TEXT); +CREATE TABLE SmsMetadataId (_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, uid TEXT); \ No newline at end of file diff --git a/core/src/main/assets/snapshots/122.sql b/core/src/main/assets/snapshots/123.sql similarity index 99% rename from core/src/main/assets/snapshots/122.sql rename to core/src/main/assets/snapshots/123.sql index fd45267ea6..8d854b78fd 100644 --- a/core/src/main/assets/snapshots/122.sql +++ b/core/src/main/assets/snapshots/123.sql @@ -119,3 +119,5 @@ CREATE TABLE LocalDataStore (_id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT CREATE TABLE AnalyticsPeriodBoundary (_id INTEGER PRIMARY KEY AUTOINCREMENT, programIndicator TEXT NOT NULL, boundaryTarget TEXT, analyticsPeriodBoundaryType TEXT, offsetPeriods INTEGER, offsetPeriodType TEXT, FOREIGN KEY (programIndicator) REFERENCES ProgramIndicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE IndicatorLegendSetLink(_id INTEGER PRIMARY KEY AUTOINCREMENT, indicator TEXT NOT NULL, legendSet TEXT NOT NULL, sortOrder INTEGER, FOREIGN KEY (indicator) REFERENCES Indicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (legendSet) REFERENCES LegendSet (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (indicator, legendSet)); CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); +CREATE TABLE SMSConfig (_id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL UNIQUE, value TEXT); +CREATE TABLE SmsMetadataId (_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, uid TEXT); \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java index e57b552d2e..6968f4bb77 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java @@ -36,7 +36,7 @@ class BaseDatabaseOpenHelper { - static final int VERSION = 122; + static final int VERSION = 123; private final AssetManager assetManager; private final int targetVersion; diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt new file mode 100644 index 0000000000..9f0f56b912 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.arch.db.adapters.enums.internal + +import org.hisp.dhis.smscompression.SMSConsts + +class SMSMetadataTypeColumnAdapter : EnumColumnAdapter() { + override fun getEnumClass(): Class { + return SMSConsts.MetadataType::class.java + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt index e016ca61b4..250c9b990d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt @@ -45,11 +45,11 @@ internal object LocalDataStoreStore { w.bind(2, o.value()) } - private val WHERE_UPDATE_BINDER = WhereStatementBinder { o: KeyValuePair, w: StatementWrapper -> + private val WHERE_UPDATE_BINDER = WhereStatementBinder { o: KeyValuePair, w: StatementWrapper -> w.bind(3, o.key()) } - private val WHERE_DELETE_BINDER = WhereStatementBinder { o: KeyValuePair, w: StatementWrapper -> + private val WHERE_DELETE_BINDER = WhereStatementBinder { o: KeyValuePair, w: StatementWrapper -> w.bind(1, o.key()) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java index 358b15a561..33c6b7db72 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java @@ -112,6 +112,7 @@ public class LocalDbRepositoryImpl implements LocalDbRepository { DataSetsStore dataSetsStore, TrackedEntityInstanceStore trackedEntityInstanceStore, DataSetCompleteRegistrationStore dataSetCompleteRegistrationStore, + MetadataIdsStore metadataIdsStore, DataStatePropagator dataStatePropagator) { this.context = ctx; this.userRepository = userRepository; @@ -127,7 +128,7 @@ public class LocalDbRepositoryImpl implements LocalDbRepository { this.trackedEntityInstanceStore = trackedEntityInstanceStore; this.dataSetCompleteRegistrationStore = dataSetCompleteRegistrationStore; this.dataStatePropagator = dataStatePropagator; - metadataIdsStore = new MetadataIdsStore(context); + this.metadataIdsStore = metadataIdsStore; ongoingSubmissionsStore = new OngoingSubmissionsStore(context); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.java deleted file mode 100644 index 50c31b0364..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.sms.data.localdbrepository.internal; - -import android.content.Context; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; - -import org.hisp.dhis.smscompression.models.SMSMetadata; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.nio.charset.StandardCharsets; -import java.util.Date; - -import io.reactivex.Completable; -import io.reactivex.Single; - -class MetadataIdsStore { - private final static String METADATA_FILE = "metadata_ids"; - private final Context context; - - MetadataIdsStore(Context context) { - this.context = context; - } - - Single getMetadataIds() { - return Single.fromCallable(() -> { - InputStream is = null; - try { - is = context.openFileInput(METADATA_FILE); - JsonReader reader = new JsonReader(new InputStreamReader(is, StandardCharsets.UTF_8)); - return getGson().fromJson(reader, SMSMetadata.class); - } finally { - if (is != null) { - is.close(); - } - } - } - ); - } - - Completable setMetadataIds(final SMSMetadata metadata) { - return Completable.fromAction(() -> { - OutputStream fos = context.openFileOutput(METADATA_FILE, Context.MODE_PRIVATE); - JsonWriter writer = new JsonWriter(new OutputStreamWriter(fos, StandardCharsets.UTF_8)); - getGson().toJson(metadata, SMSMetadata.class, writer); - writer.flush(); - writer.close(); - } - ); - } - - Completable clear() { - return Completable.fromAction(() -> context.deleteFile(METADATA_FILE)); - } - - private Gson getGson() { - return new GsonBuilder() - .registerTypeAdapter(Date.class, new DateLongFormatTypeAdapter()) - .create(); - } - - static class DateLongFormatTypeAdapter extends TypeAdapter { - - @Override - public void write(JsonWriter out, Date value) throws IOException { - if (value == null) { - out.nullValue(); - } else { - out.value(value.getTime()); - } - } - - @Override - public Date read(JsonReader in) throws IOException { - return new Date(in.nextLong()); - } - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt new file mode 100644 index 0000000000..f55a1c5f02 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import dagger.Reusable +import io.reactivex.Completable +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.arch.helpers.DateUtils +import org.hisp.dhis.smscompression.SMSConsts +import org.hisp.dhis.smscompression.models.SMSMetadata +import javax.inject.Inject + +@Reusable +internal class MetadataIdsStore @Inject constructor( + private val smsMetadataIdsStore: ObjectWithoutUidStore, + private val smsConfigStore: SMSConfigStore +) { + fun getMetadataIds(): Single { + return Single.fromCallable { + val lastSync = smsConfigStore.get(SMSConfigKey.METADATA_SYNC_DATE) + val metadataIdList = smsMetadataIdsStore.selectAll() + + val byType = metadataIdList + .groupBy { it.type() } + .mapValues { (_, list) -> list.map { SMSMetadata.ID(it.uid()) } } + + SMSMetadata().apply { + lastSyncDate = lastSync?.let { DateUtils.DATE_FORMAT.parse(it) } + + users = getIds(byType, SMSConsts.MetadataType.USER) + trackedEntityTypes = getIds(byType, SMSConsts.MetadataType.TRACKED_ENTITY_TYPE) + trackedEntityAttributes = getIds(byType, SMSConsts.MetadataType.TRACKED_ENTITY_ATTRIBUTE) + programs = getIds(byType, SMSConsts.MetadataType.PROGRAM) + organisationUnits = getIds(byType, SMSConsts.MetadataType.ORGANISATION_UNIT) + dataElements = getIds(byType, SMSConsts.MetadataType.DATA_ELEMENT) + categoryOptionCombos = getIds(byType, SMSConsts.MetadataType.CATEGORY_OPTION_COMBO) + dataSets = getIds(byType, SMSConsts.MetadataType.DATASET) + programStages = getIds(byType, SMSConsts.MetadataType.PROGRAM_STAGE) + events = getIds(byType, SMSConsts.MetadataType.EVENT) + enrollments = getIds(byType, SMSConsts.MetadataType.ENROLLMENT) + trackedEntityInstances = getIds(byType, SMSConsts.MetadataType.TRACKED_ENTITY_INSTANCE) + relationships = getIds(byType, SMSConsts.MetadataType.RELATIONSHIP) + relationshipTypes = getIds(byType, SMSConsts.MetadataType.RELATIONSHIP_TYPE) + } + } + } + + private fun getIds( + map: Map>, + type: SMSConsts.MetadataType + ): List { + return map[type] ?: emptyList() + } + + fun setMetadataIds(metadata: SMSMetadata?): Completable { + return Completable.fromAction { + metadata?.let { + it.lastSyncDate?.let { date -> + smsConfigStore.set(SMSConfigKey.METADATA_SYNC_DATE, DateUtils.DATE_FORMAT.format(date)) + } + val metadataIds = + buildFor(it, SMSConsts.MetadataType.USER) + + buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_TYPE) + + buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_ATTRIBUTE) + + buildFor(it, SMSConsts.MetadataType.PROGRAM) + + buildFor(it, SMSConsts.MetadataType.ORGANISATION_UNIT) + + buildFor(it, SMSConsts.MetadataType.DATA_ELEMENT) + + buildFor(it, SMSConsts.MetadataType.CATEGORY_OPTION_COMBO) + + buildFor(it, SMSConsts.MetadataType.DATASET) + + buildFor(it, SMSConsts.MetadataType.PROGRAM_STAGE) + + buildFor(it, SMSConsts.MetadataType.EVENT) + + buildFor(it, SMSConsts.MetadataType.ENROLLMENT) + + buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_INSTANCE) + + buildFor(it, SMSConsts.MetadataType.RELATIONSHIP) + + buildFor(it, SMSConsts.MetadataType.RELATIONSHIP_TYPE) + + smsMetadataIdsStore.delete() + metadataIds.forEach { id -> smsMetadataIdsStore.insert(id) } + } + } + } + + private fun buildFor(metadata: SMSMetadata, type: SMSConsts.MetadataType): List { + return metadata.getType(type).map { SMSMetadataId.builder().type(type).uid(it).build() } + } + + fun clear(): Completable { + return Completable.fromAction { + smsMetadataIdsStore.delete() + smsConfigStore.delete(SMSConfigKey.METADATA_SYNC_DATE) + } + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt new file mode 100644 index 0000000000..b85570adee --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +internal enum class SMSConfigKey { + METADATA_SYNC_DATE +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt new file mode 100644 index 0000000000..9bb512d257 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.datastore.KeyValuePair + +internal interface SMSConfigStore : ObjectWithoutUidStore { + fun get(key: SMSConfigKey): String? + fun set(key: SMSConfigKey, value: String) + fun delete(key: SMSConfigKey): Boolean +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt new file mode 100644 index 0000000000..4e77911b5f --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import android.database.Cursor +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.SQLStatementBuilder +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.SQLStatementBuilderImpl +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStoreImpl +import org.hisp.dhis.android.core.datastore.KeyValuePair + +@Suppress("MagicNumber") +internal class SMSConfigStoreImpl private constructor( + databaseAdapter: DatabaseAdapter, + builder: SQLStatementBuilder, + binder: StatementBinder, + whereUpdateBinder: WhereStatementBinder, + whereDeleteBinder: WhereStatementBinder, + objectFactory: (Cursor) -> KeyValuePair +) : ObjectWithoutUidStoreImpl( + databaseAdapter, + builder, + binder, + whereUpdateBinder, + whereDeleteBinder, + objectFactory +), SMSConfigStore { + + override fun get(key: SMSConfigKey): String? { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(SMSConfigTableInfo.Columns.KEY, key.name) + .build() + + return selectOneWhere(whereClause)?.value() + } + + override fun set(key: SMSConfigKey, value: String) { + val keyValuePair = KeyValuePair.builder() + .key(key.name) + .value(value) + .build() + + return updateWhere(keyValuePair) + } + + override fun delete(key: SMSConfigKey): Boolean { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(SMSConfigTableInfo.Columns.KEY, key.name) + .build() + + return deleteWhere(whereClause) + } + + companion object { + private val BINDER: StatementBinder = StatementBinder { o, w -> + w.bind(1, o.key()) + w.bind(2, o.value()) + } + + private val WHERE_UPDATE_BINDER = WhereStatementBinder { o: KeyValuePair, w: StatementWrapper -> + w.bind(3, o.key()) + } + + private val WHERE_DELETE_BINDER = WhereStatementBinder { o: KeyValuePair, w: StatementWrapper -> + w.bind(1, o.key()) + } + + @JvmStatic + fun create(databaseAdapter: DatabaseAdapter): SMSConfigStore { + val statementBuilder: SQLStatementBuilder = SQLStatementBuilderImpl( + SMSConfigTableInfo.TABLE_INFO.name(), SMSConfigTableInfo.TABLE_INFO.columns().all(), + SMSConfigTableInfo.TABLE_INFO.columns().whereUpdate() + ) + return SMSConfigStoreImpl( + databaseAdapter, statementBuilder, BINDER, WHERE_UPDATE_BINDER, + WHERE_DELETE_BINDER + ) { cursor -> KeyValuePair.create(cursor) } + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt new file mode 100644 index 0000000000..783799229a --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.arch.db.tableinfos.TableInfo +import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper +import org.hisp.dhis.android.core.common.CoreColumns + +internal object SMSConfigTableInfo { + + @JvmField + val TABLE_INFO: TableInfo = object : TableInfo() { + override fun name(): String { + return "SMSConfig" + } + + override fun columns(): CoreColumns { + return Columns() + } + } + + class Columns : CoreColumns() { + override fun all(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + KEY, + VALUE + ) + } + + override fun whereUpdate(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + KEY + ) + } + + companion object { + const val KEY = "key" + const val VALUE = "value" + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java new file mode 100644 index 0000000000..164c2d2834 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal; + +import android.database.Cursor; + +import androidx.annotation.NonNull; + +import com.gabrielittner.auto.value.cursor.ColumnAdapter; +import com.google.auto.value.AutoValue; + +import org.hisp.dhis.android.core.arch.db.adapters.enums.internal.SMSMetadataTypeColumnAdapter; +import org.hisp.dhis.android.core.common.CoreObject; +import org.hisp.dhis.smscompression.SMSConsts; + +@AutoValue +public abstract class SMSMetadataId implements CoreObject { + + @NonNull + @ColumnAdapter(SMSMetadataTypeColumnAdapter.class) + public abstract SMSConsts.MetadataType type(); + + @NonNull + public abstract String uid(); + + public static Builder builder() { + return new $AutoValue_SMSMetadataId.Builder(); + } + + public static SMSMetadataId create(Cursor cursor) { + return $AutoValue_SMSMetadataId.createFromCursor(cursor); + } + + public abstract Builder toBuilder(); + + @AutoValue.Builder + public static abstract class Builder { + public abstract Builder id(Long id); + + public abstract Builder type(SMSConsts.MetadataType smsMetadataIdType); + + public abstract Builder uid(String uid); + + public abstract SMSMetadataId build(); + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt new file mode 100644 index 0000000000..bc39299b66 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import android.database.Cursor +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory.objectWithoutUidStore + +@Suppress("MagicNumber") +internal object SMSMetadataIdStore { + + private val BINDER: StatementBinder = StatementBinder { o, w -> + w.bind(1, o.type()) + w.bind(2, o.uid()) + } + + private val WHERE_UPDATE_BINDER = WhereStatementBinder { o: SMSMetadataId, w: StatementWrapper -> + w.bind(3, o.type()) + } + + private val WHERE_DELETE_BINDER = WhereStatementBinder { o: SMSMetadataId, w: StatementWrapper -> + w.bind(1, o.uid()) + } + + @JvmStatic + fun create(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { + return objectWithoutUidStore( + databaseAdapter, + SMSMetadataIdTableInfo .TABLE_INFO, + BINDER, + WHERE_UPDATE_BINDER, + WHERE_DELETE_BINDER + ) { cursor: Cursor -> SMSMetadataId.create(cursor) } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt new file mode 100644 index 0000000000..6c510ede93 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.arch.db.tableinfos.TableInfo +import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper +import org.hisp.dhis.android.core.common.CoreColumns + +internal object SMSMetadataIdTableInfo { + + @JvmField + val TABLE_INFO: TableInfo = object : TableInfo() { + override fun name(): String { + return "SmsMetadataId" + } + + override fun columns(): CoreColumns { + return Columns() + } + } + + class Columns : CoreColumns() { + override fun all(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + TYPE, + UID + ) + } + + override fun whereUpdate(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + TYPE + ) + } + + companion object { + const val TYPE = "type" + const val UID = "uid" + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java index 49bbaaf3db..6b32784b22 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java @@ -30,9 +30,15 @@ import android.content.Context; +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore; import org.hisp.dhis.android.core.sms.SmsModule; import org.hisp.dhis.android.core.sms.data.internal.DeviceStateRepositoryImpl; import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.LocalDbRepositoryImpl; +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigStore; +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigStoreImpl; +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataId; +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdStore; import org.hisp.dhis.android.core.sms.data.smsrepository.internal.SmsRepositoryImpl; import org.hisp.dhis.android.core.sms.data.webapirepository.internal.ApiService; import org.hisp.dhis.android.core.sms.data.webapirepository.internal.WebApiRepositoryImpl; @@ -70,6 +76,18 @@ WebApiRepository webApiRepository(ApiService apiService, DHISVersionManager dhis return new WebApiRepositoryImpl(apiService, dhisVersionManager); } + @Provides + @Reusable + ObjectWithoutUidStore smsMetadataIdStore(DatabaseAdapter databaseAdapter) { + return SMSMetadataIdStore.create(databaseAdapter); + } + + @Provides + @Reusable + SMSConfigStore smsConfigStore(DatabaseAdapter databaseAdapter) { + return SMSConfigStoreImpl.create(databaseAdapter); + } + @Provides ApiService apiService(Retrofit retrofit) { return retrofit.create(ApiService.class); diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt new file mode 100644 index 0000000000..f9c6ae8422 --- /dev/null +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.data.sms + +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataId +import org.hisp.dhis.smscompression.SMSConsts + +object SMSMetadataIdSample { + + val get: SMSMetadataId = + SMSMetadataId.builder() + .id(1L) + .type(SMSConsts.MetadataType.DATA_ELEMENT) + .uid("uid") + .build() +} From 57fc045c9c72bc414e889b5748b7320c09917bc5 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 2 Mar 2022 08:43:00 +0100 Subject: [PATCH 129/253] [ANDROSDK-1370] Add SMS module wiper --- .../internal/SMSConfigStoreIntegrationShould.kt | 3 +-- .../internal/SMSMetadataIdStoreIntegrationShould.kt | 1 - .../core/wipe/WipeDBCallMockIntegrationShould.kt | 8 ++++++++ .../android/core/mockwebserver/Dhis2MockServer.java | 3 +++ .../localdbrepository/internal/SMSConfigStore.kt | 5 +++-- .../localdbrepository/internal/SMSConfigStoreImpl.kt | 9 +++++---- .../localdbrepository/internal/SMSMetadataIdStore.kt | 6 ++++-- .../internal/SMSMetadataIdTableInfo.kt | 3 ++- .../dhis/android/core/sms/internal/SMSModuleWiper.kt | 12 ++++++++++-- 9 files changed, 36 insertions(+), 14 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt index cd6d4793cc..194d38f187 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt @@ -30,14 +30,13 @@ package org.hisp.dhis.android.core.sms.data.localdbrepository.internal import org.hisp.dhis.android.core.data.database.ObjectWithoutUidStoreAbstractIntegrationShould import org.hisp.dhis.android.core.data.datastore.KeyValuePairSamples.keyValuePairSample import org.hisp.dhis.android.core.datastore.KeyValuePair -import org.hisp.dhis.android.core.datastore.internal.LocalDataStoreStore.create import org.hisp.dhis.android.core.utils.integration.mock.TestDatabaseAdapterFactory import org.hisp.dhis.android.core.utils.runner.D2JunitRunner import org.junit.runner.RunWith @RunWith(D2JunitRunner::class) class SMSConfigStoreIntegrationShould : ObjectWithoutUidStoreAbstractIntegrationShould( - create(TestDatabaseAdapterFactory.get()), + SMSConfigStoreImpl.create(TestDatabaseAdapterFactory.get()), SMSConfigTableInfo.TABLE_INFO, TestDatabaseAdapterFactory.get() ) { diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt index 1bdbfb5560..f2ccdcee68 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt @@ -46,7 +46,6 @@ class SMSMetadataIdStoreIntegrationShould : ObjectWithoutUidStoreAbstractIntegra override fun buildObjectToUpdate(): SMSMetadataId { return SMSMetadataIdSample.get .toBuilder() - .uid("uid2") .build() } } diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt index afef71fd3d..b8c3859a6b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.wipe import org.hisp.dhis.android.core.data.database.DatabaseAssert.Companion.assertThatDatabase +import org.hisp.dhis.android.core.data.datastore.KeyValuePairSamples import org.hisp.dhis.android.core.data.trackedentity.ownership.ProgramTempOwnerSamples import org.hisp.dhis.android.core.data.tracker.importer.internal.TrackerJobObjectSamples import org.hisp.dhis.android.core.datastore.KeyValuePair @@ -41,6 +42,7 @@ import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStoreImp import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.internal.D2ErrorStore +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigStoreImpl import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerStore import org.hisp.dhis.android.core.tracker.importer.internal.TrackerJobObjectStore import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyDispatcher @@ -51,6 +53,7 @@ class WipeDBCallMockIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() @Test fun have_empty_database_when_wipe_db_after_sync_data() { givenAFreshLoginInDatabase() + activateSMSModule() givenAMetadataInDatabase() givenDataInDatabase() givenOthersInDatabase() @@ -72,6 +75,10 @@ class WipeDBCallMockIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() } } + private fun activateSMSModule() { + d2.smsModule().configCase().setModuleEnabled(true).blockingAwait() + } + private fun givenAMetadataInDatabase() { d2.metadataModule().blockingDownload() d2.trackedEntityModule().reservedValueManager().blockingDownloadAllReservedValues(1) @@ -107,5 +114,6 @@ class WipeDBCallMockIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() .build() ) ProgramTempOwnerStore.create(databaseAdapter).insert(ProgramTempOwnerSamples.programTempOwner) + SMSConfigStoreImpl.create(databaseAdapter).insert(KeyValuePairSamples.keyValuePairSample) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java index 8433347f5e..4bcf1de83a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java @@ -98,6 +98,7 @@ public class Dhis2MockServer { private static final String DATA_APPROVALS_MULTIPLE_JSON = "dataapproval/data_approvals_multiple.json"; private static final String ORGANISATION_UNITS_JSON = "organisationunit/organisation_units.json"; private static final String RESERVE_VALUES_JSON = "trackedentity/tracked_entity_attribute_reserved_values.json"; + private static final String SMS_METADATA = "sms/metadata_ids.json"; private static final String MOCKWEBSERVER = "Dhis2MockWebServer"; private MockWebServer server; @@ -258,6 +259,8 @@ public MockResponse dispatch(RecordedRequest request) { return createMockResponse(DATA_APPROVALS_MULTIPLE_JSON); } else if (path.startsWith("/api/trackedEntityAttributes/aejWyOfXge6/generateAndReserve")) { return createMockResponse(RESERVE_VALUES_JSON); + } else if (path.startsWith("/api/metadata")) { + return createMockResponse(SMS_METADATA); } else { return new MockResponse() .setResponseCode(404) diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt index 9bb512d257..51d3e16326 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt @@ -28,10 +28,11 @@ package org.hisp.dhis.android.core.sms.data.localdbrepository.internal import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.datastore.KeyValuePair internal interface SMSConfigStore : ObjectWithoutUidStore { fun get(key: SMSConfigKey): String? - fun set(key: SMSConfigKey, value: String) - fun delete(key: SMSConfigKey): Boolean + fun set(key: SMSConfigKey, value: String): HandleAction + fun delete(key: SMSConfigKey) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt index 4e77911b5f..fe475323ae 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt @@ -36,6 +36,7 @@ import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinde import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStoreImpl +import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.datastore.KeyValuePair @Suppress("MagicNumber") @@ -63,21 +64,21 @@ internal class SMSConfigStoreImpl private constructor( return selectOneWhere(whereClause)?.value() } - override fun set(key: SMSConfigKey, value: String) { + override fun set(key: SMSConfigKey, value: String): HandleAction { val keyValuePair = KeyValuePair.builder() .key(key.name) .value(value) .build() - return updateWhere(keyValuePair) + return updateOrInsertWhere(keyValuePair) } - override fun delete(key: SMSConfigKey): Boolean { + override fun delete(key: SMSConfigKey) { val whereClause = WhereClauseBuilder() .appendKeyStringValue(SMSConfigTableInfo.Columns.KEY, key.name) .build() - return deleteWhere(whereClause) + return deleteWhereIfExists(whereClause) } companion object { diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt index bc39299b66..6bd5155b99 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt @@ -45,17 +45,19 @@ internal object SMSMetadataIdStore { private val WHERE_UPDATE_BINDER = WhereStatementBinder { o: SMSMetadataId, w: StatementWrapper -> w.bind(3, o.type()) + w.bind(4, o.uid()) } private val WHERE_DELETE_BINDER = WhereStatementBinder { o: SMSMetadataId, w: StatementWrapper -> - w.bind(1, o.uid()) + w.bind(1, o.type()) + w.bind(2, o.uid()) } @JvmStatic fun create(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { return objectWithoutUidStore( databaseAdapter, - SMSMetadataIdTableInfo .TABLE_INFO, + SMSMetadataIdTableInfo.TABLE_INFO, BINDER, WHERE_UPDATE_BINDER, WHERE_DELETE_BINDER diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt index 6c510ede93..fddb8eae37 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt @@ -57,7 +57,8 @@ internal object SMSMetadataIdTableInfo { override fun whereUpdate(): Array { return CollectionsHelper.appendInNewArray( super.all(), - TYPE + TYPE, + UID ) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt index b5857f8d6b..b46ab80e51 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt @@ -28,16 +28,24 @@ package org.hisp.dhis.android.core.sms.internal import dagger.Reusable -import javax.inject.Inject +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigTableInfo +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdTableInfo import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository import org.hisp.dhis.android.core.wipe.internal.ModuleWiper +import org.hisp.dhis.android.core.wipe.internal.TableWiper +import javax.inject.Inject @Reusable class SMSModuleWiper @Inject internal constructor( - private val localDbRepository: LocalDbRepository + private val localDbRepository: LocalDbRepository, + private val tableWiper: TableWiper ) : ModuleWiper { override fun wipeMetadata() { + tableWiper.wipeTables( + SMSMetadataIdTableInfo.TABLE_INFO, + SMSConfigTableInfo.TABLE_INFO + ) localDbRepository.clear().blockingAwait() } From d89de48a8b32c38cb22344192d6d17b451317c08 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 2 Mar 2022 09:59:50 +0100 Subject: [PATCH 130/253] [ANDROSDK-1370] Add SMSOngoingSubmission store --- ...OngoingSubmissionStoreIntegrationShould.kt | 53 ++ .../wipe/WipeDBCallMockIntegrationShould.kt | 4 + core/src/main/assets/migrations/123.sql | 3 +- core/src/main/assets/snapshots/123.sql | 3 +- .../internal/SMSMetadataTypeColumnAdapter.kt | 2 +- .../SMSOngoingSubmissionColumnAdapter.kt | 36 ++ .../internal/LocalDbRepositoryImpl.java | 462 ------------------ .../internal/LocalDbRepositoryImpl.kt | 330 +++++++++++++ .../internal/OngoingSubmissionsStore.java | 176 ------- .../internal/OngoingSubmissionsStore.kt | 141 ++++++ .../internal/SMSConfigKey.kt | 9 +- .../internal/SMSOngoingSubmission.java | 72 +++ .../internal/SMSOngoingSubmissionStoreImpl.kt | 65 +++ .../internal/SMSOngoingSubmissionTableInfo.kt | 69 +++ .../core/sms/internal/SMSModuleWiper.kt | 4 +- .../core/sms/internal/SmsDIModule.java | 8 + .../data/sms/SMSOngoingSubmissionSample.kt | 41 ++ 17 files changed, 835 insertions(+), 643 deletions(-) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreImpl.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt create mode 100644 core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt new file mode 100644 index 0000000000..bf864d5111 --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.data.database.ObjectWithoutUidStoreAbstractIntegrationShould +import org.hisp.dhis.android.core.data.sms.SMSOngoingSubmissionSample +import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType +import org.hisp.dhis.android.core.utils.integration.mock.TestDatabaseAdapterFactory +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class SMSOngoingSubmissionStoreIntegrationShould : ObjectWithoutUidStoreAbstractIntegrationShould( + SMSOngoingSubmissionStore.create(TestDatabaseAdapterFactory.get()), + SMSOngoingSubmissionTableInfo.TABLE_INFO, + TestDatabaseAdapterFactory.get() +) { + override fun buildObject(): SMSOngoingSubmission { + return SMSOngoingSubmissionSample.get + } + + override fun buildObjectToUpdate(): SMSOngoingSubmission { + return SMSOngoingSubmissionSample.get + .toBuilder() + .type(SubmissionType.ENROLLMENT) + .build() + } +} diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt index b8c3859a6b..ae48d8a3ca 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.wipe import org.hisp.dhis.android.core.data.database.DatabaseAssert.Companion.assertThatDatabase import org.hisp.dhis.android.core.data.datastore.KeyValuePairSamples +import org.hisp.dhis.android.core.data.sms.SMSOngoingSubmissionSample import org.hisp.dhis.android.core.data.trackedentity.ownership.ProgramTempOwnerSamples import org.hisp.dhis.android.core.data.tracker.importer.internal.TrackerJobObjectSamples import org.hisp.dhis.android.core.datastore.KeyValuePair @@ -43,6 +44,7 @@ import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.internal.D2ErrorStore import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigStoreImpl +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmissionStore import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerStore import org.hisp.dhis.android.core.tracker.importer.internal.TrackerJobObjectStore import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyDispatcher @@ -114,6 +116,8 @@ class WipeDBCallMockIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() .build() ) ProgramTempOwnerStore.create(databaseAdapter).insert(ProgramTempOwnerSamples.programTempOwner) + SMSConfigStoreImpl.create(databaseAdapter).insert(KeyValuePairSamples.keyValuePairSample) + SMSOngoingSubmissionStore.create(databaseAdapter).insert(SMSOngoingSubmissionSample.get) } } diff --git a/core/src/main/assets/migrations/123.sql b/core/src/main/assets/migrations/123.sql index 33a300081c..6d2ebb7edd 100644 --- a/core/src/main/assets/migrations/123.sql +++ b/core/src/main/assets/migrations/123.sql @@ -1,4 +1,5 @@ # Include SMS config in database (ANDROSDK-1370) CREATE TABLE SMSConfig (_id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL UNIQUE, value TEXT); -CREATE TABLE SmsMetadataId (_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, uid TEXT); \ No newline at end of file +CREATE TABLE SmsMetadataId (_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, uid TEXT); +CREATE TABLE SMSOngoingSubmission (_id INTEGER PRIMARY KEY AUTOINCREMENT, submissionId INTEGER, type TEXT); diff --git a/core/src/main/assets/snapshots/123.sql b/core/src/main/assets/snapshots/123.sql index 8d854b78fd..b99aa5f016 100644 --- a/core/src/main/assets/snapshots/123.sql +++ b/core/src/main/assets/snapshots/123.sql @@ -120,4 +120,5 @@ CREATE TABLE AnalyticsPeriodBoundary (_id INTEGER PRIMARY KEY AUTOINCREMENT, pro CREATE TABLE IndicatorLegendSetLink(_id INTEGER PRIMARY KEY AUTOINCREMENT, indicator TEXT NOT NULL, legendSet TEXT NOT NULL, sortOrder INTEGER, FOREIGN KEY (indicator) REFERENCES Indicator (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (legendSet) REFERENCES LegendSet (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (indicator, legendSet)); CREATE TABLE ProgramTempOwner (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT NOT NULL, trackedEntityInstance TEXT NOT NULL, created TEXT NOT NULL, validUntil TEXT NOT NULL, reason TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE SMSConfig (_id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL UNIQUE, value TEXT); -CREATE TABLE SmsMetadataId (_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, uid TEXT); \ No newline at end of file +CREATE TABLE SmsMetadataId (_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, uid TEXT); +CREATE TABLE SMSOngoingSubmission (_id INTEGER PRIMARY KEY AUTOINCREMENT, submissionId INTEGER, type TEXT); \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt index 9f0f56b912..3441a96291 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt @@ -29,7 +29,7 @@ package org.hisp.dhis.android.core.arch.db.adapters.enums.internal import org.hisp.dhis.smscompression.SMSConsts -class SMSMetadataTypeColumnAdapter : EnumColumnAdapter() { +internal class SMSMetadataTypeColumnAdapter : EnumColumnAdapter() { override fun getEnumClass(): Class { return SMSConsts.MetadataType::class.java } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt new file mode 100644 index 0000000000..f96675f2d3 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.arch.db.adapters.enums.internal + +import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType + +internal class SMSOngoingSubmissionColumnAdapter : EnumColumnAdapter() { + override fun getEnumClass(): Class { + return SubmissionType::class.java + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java deleted file mode 100644 index 33c6b7db72..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.java +++ /dev/null @@ -1,462 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.sms.data.localdbrepository.internal; - -import android.content.Context; -import android.content.SharedPreferences; - -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder; -import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.common.internal.DataStatePropagator; -import org.hisp.dhis.android.core.dataset.DataSetCompleteRegistrationTableInfo; -import org.hisp.dhis.android.core.dataset.internal.DataSetCompleteRegistrationStore; -import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor; -import org.hisp.dhis.android.core.enrollment.EnrollmentModule; -import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore; -import org.hisp.dhis.android.core.event.Event; -import org.hisp.dhis.android.core.event.EventModule; -import org.hisp.dhis.android.core.event.internal.EventStore; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.RelationshipConstraintType; -import org.hisp.dhis.android.core.relationship.RelationshipItem; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemStore; -import org.hisp.dhis.android.core.relationship.internal.RelationshipStore; -import org.hisp.dhis.android.core.sms.domain.model.internal.SMSDataValueSet; -import org.hisp.dhis.android.core.sms.domain.repository.WebApiRepository; -import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository; -import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityModule; -import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore; -import org.hisp.dhis.android.core.user.AuthenticatedUserObjectRepository; -import org.hisp.dhis.smscompression.models.SMSMetadata; - -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import javax.inject.Inject; - -import io.reactivex.Completable; -import io.reactivex.Observable; -import io.reactivex.Single; - -@SuppressWarnings({"PMD.ExcessiveImports", "PMD.TooManyFields"}) -public class LocalDbRepositoryImpl implements LocalDbRepository { - private final Context context; - private final AuthenticatedUserObjectRepository userRepository; - private final TrackedEntityModule trackedEntityModule; - private final EventModule eventModule; - private final EnrollmentModule enrollmentModule; - private final FileResourceCleaner fileResourceCleaner; - private final EventStore eventStore; - private final EnrollmentStore enrollmentStore; - private static final String CONFIG_FILE = "smsconfig"; - private static final String KEY_GATEWAY = "gateway"; - private static final String KEY_CONFIRMATION_SENDER = "confirmationsender"; - private static final String KEY_WAITING_RESULT_TIMEOUT = "reading_timeout"; - private static final String KEY_METADATA_CONFIG = "metadata_conf"; - private static final String KEY_MODULE_ENABLED = "module_enabled"; - private static final String KEY_WAIT_FOR_RESULT = "wait_for_result"; - - private final MetadataIdsStore metadataIdsStore; - private final OngoingSubmissionsStore ongoingSubmissionsStore; - private final RelationshipStore relationshipStore; - private final RelationshipItemStore relationshipItemStore; - private final DataSetsStore dataSetsStore; - private final TrackedEntityInstanceStore trackedEntityInstanceStore; - private final DataSetCompleteRegistrationStore dataSetCompleteRegistrationStore; - private final DataStatePropagator dataStatePropagator; - - @Inject - LocalDbRepositoryImpl(Context ctx, - AuthenticatedUserObjectRepository userRepository, - TrackedEntityModule trackedEntityModule, - EventModule eventModule, - EnrollmentModule enrollmentModule, - FileResourceCleaner fileResourceCleaner, - EventStore eventStore, - EnrollmentStore enrollmentStore, - RelationshipStore relationshipStore, - RelationshipItemStore relationshipItemStore, - DataSetsStore dataSetsStore, - TrackedEntityInstanceStore trackedEntityInstanceStore, - DataSetCompleteRegistrationStore dataSetCompleteRegistrationStore, - MetadataIdsStore metadataIdsStore, - DataStatePropagator dataStatePropagator) { - this.context = ctx; - this.userRepository = userRepository; - this.trackedEntityModule = trackedEntityModule; - this.eventModule = eventModule; - this.enrollmentModule = enrollmentModule; - this.fileResourceCleaner = fileResourceCleaner; - this.eventStore = eventStore; - this.enrollmentStore = enrollmentStore; - this.relationshipStore = relationshipStore; - this.relationshipItemStore = relationshipItemStore; - this.dataSetsStore = dataSetsStore; - this.trackedEntityInstanceStore = trackedEntityInstanceStore; - this.dataSetCompleteRegistrationStore = dataSetCompleteRegistrationStore; - this.dataStatePropagator = dataStatePropagator; - this.metadataIdsStore = metadataIdsStore; - ongoingSubmissionsStore = new OngoingSubmissionsStore(context); - } - - @Override - public Single getUserName() { - return Single.fromCallable(() -> userRepository.blockingGet().user()); - } - - @Override - public Single getGatewayNumber() { - return Single.fromCallable(() -> - prefs().getString(KEY_GATEWAY, "") - ); - } - - @Override - public Completable setGatewayNumber(String number) { - return Completable.fromAction(() -> { - boolean result = prefs().edit().putString(KEY_GATEWAY, number).commit(); - if (!result) { - throw new IOException("Failed writing gateway number to local storage"); - } - }); - } - - @Override - public Completable deleteGatewayNumber() { - return deleteKey(KEY_GATEWAY); - } - - private Completable deleteKey(String key) { - return Completable.fromAction(() -> { - boolean result = prefs().edit().remove(key).commit(); - if (!result) { - throw new IOException("Failed deleting value from local storage for key: " + key); - } - }); - } - - @Override - public Single getWaitingResultTimeout() { - return Single.fromCallable(() -> - prefs().getInt(KEY_WAITING_RESULT_TIMEOUT, 120) - ); - } - - @Override - public Completable setWaitingResultTimeout(Integer timeoutSeconds) { - return Completable.fromAction(() -> { - boolean result = prefs().edit().putInt(KEY_WAITING_RESULT_TIMEOUT, timeoutSeconds).commit(); - if (!result) { - throw new IOException("Failed writing timeout setting to local storage"); - } - }); - } - - @Override - public Completable deleteWaitingResultTimeout() { - return deleteKey(KEY_WAITING_RESULT_TIMEOUT); - } - - @Override - public Single getConfirmationSenderNumber() { - return Single.fromCallable(() -> - prefs().getString(KEY_CONFIRMATION_SENDER, "") - ); - } - - @Override - public Completable setConfirmationSenderNumber(String number) { - return Completable.fromAction(() -> { - boolean result = prefs().edit().putString(KEY_CONFIRMATION_SENDER, number).commit(); - if (!result) { - throw new IOException("Failed writing confirmation sender number to local storage"); - } - }); - } - - @Override - public Completable deleteConfirmationSenderNumber() { - return deleteKey(KEY_CONFIRMATION_SENDER); - } - - @Override - public Single getMetadataIds() { - return metadataIdsStore.getMetadataIds(); - } - - @Override - public Completable setMetadataIds(final SMSMetadata metadata) { - return metadataIdsStore.setMetadataIds(metadata); - } - - @Override - public Single getTrackerEventToSubmit(String eventUid) { - // simple event is the same object as tracker event - return getSimpleEventToSubmit(eventUid); - } - - @Override - public Single getSimpleEventToSubmit(String eventUid) { - return eventModule.events().withTrackedEntityDataValues() - .byUid().eq(eventUid).one() - .get() - .flatMap(fileResourceCleaner::removeFileDataValues); - } - - @Override - public Single getTeiEnrollmentToSubmit(String enrollmentUid) { - return Single.fromCallable(() -> { - Enrollment enrollment = enrollmentModule.enrollments().byUid().eq(enrollmentUid).one().blockingGet(); - List events = getEventsForEnrollment(enrollmentUid).blockingGet(); - - Enrollment enrollmentWithEvents = EnrollmentInternalAccessor - .insertEvents(enrollment.toBuilder(), events) - .build(); - - TrackedEntityInstance trackedEntityInstance = - getTrackedEntityInstance(enrollment.trackedEntityInstance()).blockingGet(); - - return TrackedEntityInstanceInternalAccessor - .insertEnrollments(trackedEntityInstance.toBuilder(), - Collections.singletonList(enrollmentWithEvents)) - .build(); - }); - } - - private Single getTrackedEntityInstance(String instanceUid) { - return trackedEntityModule.trackedEntityInstances() - .withTrackedEntityAttributeValues() - .uid(instanceUid) - .get() - .flatMap(fileResourceCleaner::removeFileAttributeValues); - } - - private Single> getEventsForEnrollment(String enrollmentUid) { - return eventModule.events() - .byEnrollmentUid().eq(enrollmentUid) - .bySyncState().in(State.uploadableStatesIncludingError()) - .withTrackedEntityDataValues() - .get() - .flatMapObservable(Observable::fromIterable) - .flatMapSingle(fileResourceCleaner::removeFileDataValues) - .toList(); - } - - @Override - public Completable updateEventSubmissionState(String eventUid, State state) { - return Completable.fromAction(() -> { - eventStore.setSyncState(eventUid, state); - Event event = eventStore.selectByUid(eventUid); - dataStatePropagator.propagateEventUpdate(event); - }); - } - - @Override - public Completable updateEnrollmentSubmissionState(TrackedEntityInstance tei, State state) { - return Completable.fromAction(() -> { - Enrollment enrollment = TrackedEntityInstanceInternalAccessor.accessEnrollments(tei).get(0); - List events = EnrollmentInternalAccessor.accessEvents(enrollment); - - if (events != null && !events.isEmpty()) { - for (Event event : events) { - eventStore.setSyncState(event.uid(), state); - dataStatePropagator.propagateEventUpdate(event); - } - } - - enrollmentStore.setSyncState(enrollment.uid(), state); - dataStatePropagator.propagateEnrollmentUpdate(enrollment); - - trackedEntityInstanceStore.setSyncState(enrollment.trackedEntityInstance(), state); - dataStatePropagator.propagateTrackedEntityInstanceUpdate(tei); - }); - } - - @Override - public Completable updateRelationshipSubmissionState(String relationshipUid, State state) { - return Completable.fromAction(() -> { - relationshipStore.setSyncState(relationshipUid, state); - Relationship relationship = relationshipStore.selectByUid(relationshipUid); - RelationshipItem fromItem = relationshipItemStore - .getForRelationshipUidAndConstraintType(relationshipUid, RelationshipConstraintType.FROM); - RelationshipItem toItem = relationshipItemStore - .getForRelationshipUidAndConstraintType(relationshipUid, RelationshipConstraintType.TO); - - if (relationship != null) { - dataStatePropagator.propagateRelationshipUpdate(relationship.toBuilder() - .from(fromItem) - .to(toItem) - .build() - ); - } - }); - } - - @Override - public Completable setMetadataDownloadConfig(WebApiRepository.GetMetadataIdsConfig config) { - return Completable.fromAction(() -> { - String value = ObjectMapperFactory.objectMapper().writeValueAsString(config); - SharedPreferences.Editor editor = prefs().edit().putString(KEY_METADATA_CONFIG, value); - if (!editor.commit()) { - throw new IOException("Failed writing SMS metadata config to local storage"); - } - }); - } - - @Override - public Single getMetadataDownloadConfig() { - return Single.fromCallable(() -> { - String stringVal = prefs().getString(KEY_METADATA_CONFIG, null); - return ObjectMapperFactory.objectMapper() - .readValue(stringVal, WebApiRepository.GetMetadataIdsConfig.class); - }); - } - - @Override - public Completable setModuleEnabled(boolean enabled) { - return Completable.fromAction(() -> { - boolean result = prefs().edit().putBoolean(KEY_MODULE_ENABLED, enabled).commit(); - if (!result) { - throw new IOException("Failed writing module enabled value to local storage"); - } - }); - } - - @Override - public Single isModuleEnabled() { - return Single.fromCallable(() -> - prefs().getBoolean(KEY_MODULE_ENABLED, false) - ); - } - - @Override - public Completable setWaitingForResultEnabled(boolean enabled) { - return Completable.fromAction(() -> { - boolean result = prefs().edit().putBoolean(KEY_WAIT_FOR_RESULT, enabled).commit(); - if (!result) { - throw new IOException("Failed writing value to local storage, waiting for result"); - } - }); - } - - @Override - public Single getWaitingForResultEnabled() { - return Single.fromCallable(() -> - prefs().getBoolean(KEY_WAIT_FOR_RESULT, false) - ); - } - - @Override - public Single> getOngoingSubmissions() { - return ongoingSubmissionsStore.getOngoingSubmissions(); - } - - @Override - public Single generateNextSubmissionId() { - return ongoingSubmissionsStore.generateNextSubmissionId(); - } - - @Override - public Completable addOngoingSubmission(Integer id, SubmissionType type) { - return ongoingSubmissionsStore.addOngoingSubmission(id, type); - } - - @Override - public Completable removeOngoingSubmission(Integer id) { - return ongoingSubmissionsStore.removeOngoingSubmission(id); - } - - @Override - public Single getDataValueSet(String dataset, String orgUnit, - String period, String attributeOptionComboUid) { - return dataSetsStore.getDataValues(dataset, orgUnit, period, attributeOptionComboUid).map(values -> { - Boolean isCompleted = isDataValueSetCompleted(dataset, orgUnit, period, attributeOptionComboUid); - return SMSDataValueSet.builder() - .dataValues(values) - .completed(isCompleted) - .build(); - }); - } - - private Boolean isDataValueSetCompleted(String dataset, String orgUnit, - String period, String attributeOptionComboUid) { - String whereClause = new WhereClauseBuilder() - .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.DATA_SET, dataset) - .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.ORGANISATION_UNIT, orgUnit) - .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.PERIOD, period) - .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.ATTRIBUTE_OPTION_COMBO, - attributeOptionComboUid) - .appendKeyNumberValue(DataSetCompleteRegistrationTableInfo.Columns.DELETED, 0) - .build(); - return dataSetCompleteRegistrationStore.countWhere(whereClause) > 0; - } - - @Override - public Completable updateDataSetSubmissionState(String dataSetId, - String orgUnit, - String period, - String attributeOptionComboUid, - State state) { - return Completable.mergeArray( - dataSetsStore.updateDataSetValuesState( - dataSetId, orgUnit, period, attributeOptionComboUid, state), - dataSetsStore.updateDataSetCompleteRegistrationState( - dataSetId, orgUnit, period, attributeOptionComboUid, state) - ); - } - - @Override - public Single getRelationship(String relationshipUid) { - return Single.fromCallable(() -> relationshipStore.selectByUid(relationshipUid)); - } - - @Override - public Completable clear() { - return Completable.mergeArray( - Completable.fromAction(() -> prefs().edit().clear().commit()), - metadataIdsStore.clear() - ); - } - - @Override - public void blockingClear() { - clear().blockingAwait(); - } - - private SharedPreferences prefs() { - return context.getSharedPreferences(CONFIG_FILE, Context.MODE_PRIVATE); - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt new file mode 100644 index 0000000000..60a47a4057 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt @@ -0,0 +1,330 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import io.reactivex.Completable +import io.reactivex.Observable +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.common.State.Companion.uploadableStatesIncludingError +import org.hisp.dhis.android.core.common.internal.DataStatePropagator +import org.hisp.dhis.android.core.dataset.DataSetCompleteRegistrationTableInfo +import org.hisp.dhis.android.core.dataset.internal.DataSetCompleteRegistrationStore +import org.hisp.dhis.android.core.datavalue.DataValue +import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor +import org.hisp.dhis.android.core.enrollment.EnrollmentModule +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.event.EventModule +import org.hisp.dhis.android.core.event.internal.EventStore +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.RelationshipConstraintType +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemStore +import org.hisp.dhis.android.core.relationship.internal.RelationshipStore +import org.hisp.dhis.android.core.sms.domain.model.internal.SMSDataValueSet +import org.hisp.dhis.android.core.sms.domain.repository.WebApiRepository.GetMetadataIdsConfig +import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository +import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor +import org.hisp.dhis.android.core.trackedentity.TrackedEntityModule +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore +import org.hisp.dhis.android.core.user.AuthenticatedUserObjectRepository +import org.hisp.dhis.smscompression.models.SMSMetadata +import javax.inject.Inject + +internal class LocalDbRepositoryImpl @Inject constructor( + private val userRepository: AuthenticatedUserObjectRepository, + private val trackedEntityModule: TrackedEntityModule, + private val eventModule: EventModule, + private val enrollmentModule: EnrollmentModule, + private val fileResourceCleaner: FileResourceCleaner, + private val eventStore: EventStore, + private val enrollmentStore: EnrollmentStore, + private val relationshipStore: RelationshipStore, + private val relationshipItemStore: RelationshipItemStore, + private val dataSetsStore: DataSetsStore, + private val trackedEntityInstanceStore: TrackedEntityInstanceStore, + private val dataSetCompleteRegistrationStore: DataSetCompleteRegistrationStore, + private val metadataIdsStore: MetadataIdsStore, + private val smsConfigStore: SMSConfigStore, + private val ongoingSubmissionsStore: OngoingSubmissionsStore, + private val dataStatePropagator: DataStatePropagator +) : LocalDbRepository { + + override fun getUserName(): Single { + return Single.fromCallable { userRepository.blockingGet().user() } + } + + override fun getGatewayNumber(): Single { + return Single.fromCallable { smsConfigStore.get(SMSConfigKey.GATEWAY) ?: "" } + } + + override fun setGatewayNumber(number: String): Completable { + return Completable.fromAction { smsConfigStore.set(SMSConfigKey.GATEWAY, number) } + } + + override fun deleteGatewayNumber(): Completable { + return Completable.fromAction { smsConfigStore.delete(SMSConfigKey.GATEWAY) } + } + + override fun getWaitingResultTimeout(): Single { + return Single.fromCallable { smsConfigStore.get(SMSConfigKey.WAITING_RESULT_TIMEOUT)?.toInt() ?: 120 } + } + + override fun setWaitingResultTimeout(timeoutSeconds: Int): Completable { + return Completable.fromAction { + smsConfigStore.set(SMSConfigKey.WAITING_RESULT_TIMEOUT, timeoutSeconds.toString()) + } + } + + override fun deleteWaitingResultTimeout(): Completable { + return Completable.fromAction { smsConfigStore.delete(SMSConfigKey.WAITING_RESULT_TIMEOUT) } + } + + override fun getConfirmationSenderNumber(): Single { + return Single.fromCallable { smsConfigStore.get(SMSConfigKey.CONFIRMATION_SENDER) ?: "" } + } + + override fun setConfirmationSenderNumber(number: String): Completable { + return Completable.fromAction { smsConfigStore.set(SMSConfigKey.CONFIRMATION_SENDER, number) } + } + + override fun deleteConfirmationSenderNumber(): Completable { + return Completable.fromAction { smsConfigStore.delete(SMSConfigKey.CONFIRMATION_SENDER) } + } + + override fun getMetadataIds(): Single { + return metadataIdsStore.getMetadataIds() + } + + override fun setMetadataIds(metadata: SMSMetadata): Completable { + return metadataIdsStore.setMetadataIds(metadata) + } + + override fun getTrackerEventToSubmit(eventUid: String): Single { + // simple event is the same object as tracker event + return getSimpleEventToSubmit(eventUid) + } + + override fun getSimpleEventToSubmit(eventUid: String): Single { + return eventModule.events().withTrackedEntityDataValues() + .byUid().eq(eventUid).one() + .get() + .flatMap { event: Event? -> fileResourceCleaner.removeFileDataValues(event) } + } + + override fun getTeiEnrollmentToSubmit(enrollmentUid: String): Single { + return Single.fromCallable { + val enrollment = enrollmentModule.enrollments().byUid().eq(enrollmentUid).one().blockingGet() + val events = getEventsForEnrollment(enrollmentUid).blockingGet() + val enrollmentWithEvents = EnrollmentInternalAccessor + .insertEvents(enrollment.toBuilder(), events) + .build() + val trackedEntityInstance = getTrackedEntityInstance(enrollment.trackedEntityInstance()).blockingGet() + TrackedEntityInstanceInternalAccessor + .insertEnrollments(trackedEntityInstance.toBuilder(), listOf(enrollmentWithEvents)) + .build() + } + } + + private fun getTrackedEntityInstance(instanceUid: String?): Single { + return trackedEntityModule.trackedEntityInstances() + .withTrackedEntityAttributeValues() + .uid(instanceUid) + .get() + .flatMap { instance: TrackedEntityInstance? -> fileResourceCleaner.removeFileAttributeValues(instance) } + } + + private fun getEventsForEnrollment(enrollmentUid: String): Single> { + return eventModule.events() + .byEnrollmentUid().eq(enrollmentUid) + .bySyncState().`in`(*uploadableStatesIncludingError()) + .withTrackedEntityDataValues() + .get() + .flatMapObservable { source: List? -> Observable.fromIterable(source) } + .flatMapSingle { event: Event? -> fileResourceCleaner.removeFileDataValues(event) } + .toList() + } + + override fun updateEventSubmissionState(eventUid: String, state: State): Completable { + return Completable.fromAction { + eventStore.setSyncState(eventUid, state) + val event = eventStore.selectByUid(eventUid) + dataStatePropagator.propagateEventUpdate(event) + } + } + + override fun updateEnrollmentSubmissionState(tei: TrackedEntityInstance, state: State): Completable { + return Completable.fromAction { + val enrollment = TrackedEntityInstanceInternalAccessor.accessEnrollments(tei)[0] + val events = EnrollmentInternalAccessor.accessEvents(enrollment) + events?.forEach { event -> + eventStore.setSyncState(event.uid(), state) + dataStatePropagator.propagateEventUpdate(event) + } + enrollmentStore.setSyncState(enrollment.uid(), state) + dataStatePropagator.propagateEnrollmentUpdate(enrollment) + trackedEntityInstanceStore.setSyncState(enrollment.trackedEntityInstance()!!, state) + dataStatePropagator.propagateTrackedEntityInstanceUpdate(tei) + } + } + + override fun updateRelationshipSubmissionState(relationshipUid: String, state: State): Completable { + return Completable.fromAction { + relationshipStore.setSyncState(relationshipUid, state) + val relationship = relationshipStore.selectByUid(relationshipUid) + + relationship?.let { + val fromItem = relationshipItemStore + .getForRelationshipUidAndConstraintType(relationshipUid, RelationshipConstraintType.FROM) + val toItem = relationshipItemStore + .getForRelationshipUidAndConstraintType(relationshipUid, RelationshipConstraintType.TO) + dataStatePropagator.propagateRelationshipUpdate( + relationship.toBuilder() + .from(fromItem) + .to(toItem) + .build() + ) + } + } + } + + override fun setMetadataDownloadConfig(config: GetMetadataIdsConfig): Completable { + return Completable.fromAction { + val value = objectMapper().writeValueAsString(config) + smsConfigStore.set(SMSConfigKey.METADATA_CONFIG, value) + } + } + + override fun getMetadataDownloadConfig(): Single { + return Single.fromCallable { + val stringVal = smsConfigStore.get(SMSConfigKey.METADATA_CONFIG) + objectMapper() + .readValue(stringVal, GetMetadataIdsConfig::class.java) + } + } + + override fun setModuleEnabled(enabled: Boolean): Completable { + return Completable.fromAction { smsConfigStore.set(SMSConfigKey.MODULE_ENABLED, enabled.toString()) } + } + + override fun isModuleEnabled(): Single { + return Single.fromCallable { smsConfigStore.get(SMSConfigKey.MODULE_ENABLED)?.toBoolean() ?: false } + } + + override fun setWaitingForResultEnabled(enabled: Boolean): Completable { + return Completable.fromAction { smsConfigStore.set(SMSConfigKey.WAIT_FOR_RESULT, enabled.toString()) } + } + + override fun getWaitingForResultEnabled(): Single { + return Single.fromCallable { smsConfigStore.get(SMSConfigKey.WAIT_FOR_RESULT)?.toBoolean() ?: false } + } + + override fun getOngoingSubmissions(): Single> { + return ongoingSubmissionsStore.getOngoingSubmissions() + } + + override fun generateNextSubmissionId(): Single { + return ongoingSubmissionsStore.generateNextSubmissionId() + } + + override fun addOngoingSubmission(id: Int, type: SubmissionType): Completable { + return ongoingSubmissionsStore.addOngoingSubmission(id, type) + } + + override fun removeOngoingSubmission(id: Int): Completable { + return ongoingSubmissionsStore.removeOngoingSubmission(id) + } + + override fun getDataValueSet( + dataset: String, orgUnit: String, + period: String, attributeOptionComboUid: String + ): Single { + return dataSetsStore.getDataValues(dataset, orgUnit, period, attributeOptionComboUid) + .map { values: List? -> + val isCompleted = isDataValueSetCompleted(dataset, orgUnit, period, attributeOptionComboUid) + SMSDataValueSet.builder() + .dataValues(values) + .completed(isCompleted) + .build() + } + } + + private fun isDataValueSetCompleted( + dataset: String, orgUnit: String, + period: String, attributeOptionComboUid: String + ): Boolean { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.DATA_SET, dataset) + .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.ORGANISATION_UNIT, orgUnit) + .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.PERIOD, period) + .appendKeyStringValue( + DataSetCompleteRegistrationTableInfo.Columns.ATTRIBUTE_OPTION_COMBO, + attributeOptionComboUid + ) + .appendKeyNumberValue(DataSetCompleteRegistrationTableInfo.Columns.DELETED, 0) + .build() + return dataSetCompleteRegistrationStore.countWhere(whereClause) > 0 + } + + override fun updateDataSetSubmissionState( + dataSetId: String, + orgUnit: String, + period: String, + attributeOptionComboUid: String, + state: State + ): Completable { + return Completable.mergeArray( + dataSetsStore.updateDataSetValuesState( + dataSetId, orgUnit, period, attributeOptionComboUid, state + ), + dataSetsStore.updateDataSetCompleteRegistrationState( + dataSetId, orgUnit, period, attributeOptionComboUid, state + ) + ) + } + + override fun getRelationship(relationshipUid: String): Single { + return Single.fromCallable { relationshipStore.selectByUid(relationshipUid) } + } + + // TODO Review if necessary + override fun clear(): Completable { + return Completable.fromCallable { + smsConfigStore.delete() + metadataIdsStore.clear() + } + } + + override fun blockingClear() { + clear().blockingAwait() + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.java deleted file mode 100644 index df19293165..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.sms.data.localdbrepository.internal; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.Log; -import android.util.Pair; - -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; - -import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository; -import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.lang.reflect.Type; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import io.reactivex.Completable; -import io.reactivex.Single; - -class OngoingSubmissionsStore { - private static final String TAG = OngoingSubmissionsStore.class.getSimpleName(); - private final static String ONGOING_SUBMISSIONS_FILE = "submissions"; - private final static String ONGOING_SUBMISSIONS_CONFIG_FILE = "submissions_config"; - private final static String KEY_LAST_SUBMISSION_ID = "last_submission_id"; - private final Context context; - private Map ongoingSubmissions; - private Integer lastGeneratedSubmissionId; - - OngoingSubmissionsStore(Context context) { - this.context = context; - } - - @SuppressLint("UseSparseArrays") - Single> getOngoingSubmissions() { - return Single.fromCallable(() -> { - if (ongoingSubmissions != null) { - return ongoingSubmissions; - } - Type mapType = new TypeToken>() { - }.getType(); - InputStreamReader reader = new InputStreamReader( - context.openFileInput(ONGOING_SUBMISSIONS_FILE), - StandardCharsets.UTF_8); - Map submissions = - new GsonBuilder().create().fromJson(reader, mapType); - reader.close(); - return submissions; - }).onErrorReturn(throwable -> { - Log.e(TAG, throwable.getMessage(), throwable); - return new HashMap<>(); - }).doOnSuccess(submissions -> ongoingSubmissions = submissions); - } - - Completable addOngoingSubmission(Integer id, SubmissionType type) { - if (id == null || id < 0 || id > 255) { - return Completable.error(new IllegalArgumentException("Wrong submission id")); - } - if (type == null) { - return Completable.error(new IllegalArgumentException("Wrong submission type")); - } - return getOngoingSubmissions().flatMapCompletable(submissions -> { - if (submissions.containsKey(id)) { - return Completable.error(new IllegalArgumentException("Submission id already exists")); - } - submissions.put(id, type); - return saveOngoingSubmissions(submissions); - }); - } - - Completable removeOngoingSubmission(Integer id) { - if (id == null) { - return Completable.error(new IllegalArgumentException("Wrong submission id")); - } - return getOngoingSubmissions().flatMapCompletable(submissions -> { - submissions.remove(id); - return saveOngoingSubmissions(ongoingSubmissions); - }); - } - - private Completable saveOngoingSubmissions(Map ongoingSubmissions) { - this.ongoingSubmissions = ongoingSubmissions; - ArrayList tasks = new ArrayList<>(); - tasks.add(Completable.fromAction(() -> { - Writer writer = new OutputStreamWriter( - context.openFileOutput(ONGOING_SUBMISSIONS_FILE, Context.MODE_PRIVATE), - StandardCharsets.UTF_8 - ); - new GsonBuilder().create().toJson(ongoingSubmissions, writer); - writer.close(); - })); - if (lastGeneratedSubmissionId != null) { - tasks.add(saveLastGeneratedSubmissionId()); - } - return Completable.merge(tasks); - } - - private Single getLastGeneratedSubmissionId() { - if (lastGeneratedSubmissionId != null) { - return Single.just(lastGeneratedSubmissionId); - } - return Single.fromCallable(() -> - context.getSharedPreferences(ONGOING_SUBMISSIONS_CONFIG_FILE, Context.MODE_PRIVATE) - .getInt(KEY_LAST_SUBMISSION_ID, 0) - ).doOnSuccess(id -> lastGeneratedSubmissionId = id); - } - - private Completable saveLastGeneratedSubmissionId() { - return Completable.fromAction(() -> { - boolean result = context.getSharedPreferences( - ONGOING_SUBMISSIONS_CONFIG_FILE, Context.MODE_PRIVATE) - .edit().putInt(KEY_LAST_SUBMISSION_ID, lastGeneratedSubmissionId).commit(); - if (!result) { - throw new IOException("Failed writing last submission id to local storage"); - } - }); - } - - Single generateNextSubmissionId() { - return Single.zip( - getOngoingSubmissions(), - getLastGeneratedSubmissionId(), - Pair::create - ).flatMap(ids -> { - Collection ongoingIds = ids.first.keySet(); - Integer lastId = ids.second; - int i = lastId; - do { - i++; - if (i >= 255) { - i = 0; - } - if (!ongoingIds.contains(i)) { - lastGeneratedSubmissionId = i; - return Single.just(i); - } - } while (i != lastId); - return Single.error(new LocalDbRepository.TooManySubmissionsException()); - }); - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt new file mode 100644 index 0000000000..1fb9e18268 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import android.util.Log +import android.util.Pair +import dagger.Reusable +import io.reactivex.Completable +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.OngoingSubmissionsStore +import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository.TooManySubmissionsException +import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType +import javax.inject.Inject + +@Reusable +internal class OngoingSubmissionsStore @Inject constructor( + private val smsOngoingSubmissionStore: ObjectWithoutUidStore, + private val smsConfigStore: SMSConfigStore +) { + private var ongoingSubmissions: Map? = null + private var lastGeneratedSubmissionId: Int? = null + + fun getOngoingSubmissions(): Single> { + return Single.fromCallable { + if (ongoingSubmissions == null) { + updateOngoingSubmissions() + } + ongoingSubmissions!! + }.onErrorReturn { throwable -> + Log.e(TAG, throwable.message, throwable) + emptyMap() + } + } + + fun addOngoingSubmission(id: Int?, type: SubmissionType?): Completable { + if (id == null || id < 0 || id > 255) { + return Completable.error(IllegalArgumentException("Wrong submission id")) + } + return if (type == null) { + Completable.error(IllegalArgumentException("Wrong submission type")) + } else getOngoingSubmissions().flatMapCompletable { submissions: Map -> + if (submissions.containsKey(id)) { + Completable.error(IllegalArgumentException("Submission id already exists")) + } else { + Completable.fromCallable { + val ongoingSubmission = SMSOngoingSubmission.builder().submissionId(id).type(type).build() + smsOngoingSubmissionStore.insert(ongoingSubmission) + updateOngoingSubmissions() + } + } + } + } + + fun removeOngoingSubmission(id: Int?): Completable { + return if (id == null) { + Completable.error(IllegalArgumentException("Wrong submission id")) + } else { + Completable.fromCallable { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(SMSOngoingSubmissionTableInfo.Columns.SUBMISSION_ID, id) + .build() + smsOngoingSubmissionStore.deleteWhereIfExists(whereClause) + updateOngoingSubmissions() + } + } + } + + private fun updateOngoingSubmissions() { + val submissionList = smsOngoingSubmissionStore.selectAll() + this.ongoingSubmissions = submissionList.associate { it.submissionId() to it.type() } + + lastGeneratedSubmissionId?.let { saveLastGeneratedSubmissionId(it) } + } + + private fun getLastGeneratedSubmissionId(): Single { + return if (lastGeneratedSubmissionId != null) { + Single.just(lastGeneratedSubmissionId) + } else Single.fromCallable { + smsConfigStore.get(SMSConfigKey.LAST_SUBMISSION_ID)?.toInt() ?: 0 + } + .doOnSuccess { lastGeneratedSubmissionId = it } + } + + private fun saveLastGeneratedSubmissionId(id: Int) { + smsConfigStore.set(SMSConfigKey.LAST_SUBMISSION_ID, id.toString()) + } + + fun generateNextSubmissionId(): Single { + return Single.zip, Int, Pair, Int>>( + getOngoingSubmissions(), + getLastGeneratedSubmissionId() + ) { a: Map?, b: Int? -> Pair.create(a, b) } + .flatMap { ids: Pair, Int> -> + val ongoingIds: Collection = ids.first.keys + val lastId = ids.second + var i = lastId + do { + i++ + if (i >= 255) { + i = 0 + } + if (!ongoingIds.contains(i)) { + lastGeneratedSubmissionId = i + return@flatMap Single.just(i) + } + } while (i != lastId) + Single.error(TooManySubmissionsException()) + } + } + + companion object { + private val TAG = OngoingSubmissionsStore::class.java.simpleName + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt index b85570adee..66a4bb3d32 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt @@ -28,5 +28,12 @@ package org.hisp.dhis.android.core.sms.data.localdbrepository.internal internal enum class SMSConfigKey { - METADATA_SYNC_DATE + METADATA_SYNC_DATE, + GATEWAY, + WAITING_RESULT_TIMEOUT, + CONFIRMATION_SENDER, + METADATA_CONFIG, + MODULE_ENABLED, + WAIT_FOR_RESULT, + LAST_SUBMISSION_ID } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java new file mode 100644 index 0000000000..63983e285b --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal; + +import android.database.Cursor; + +import androidx.annotation.NonNull; + +import com.gabrielittner.auto.value.cursor.ColumnAdapter; +import com.google.auto.value.AutoValue; + +import org.hisp.dhis.android.core.arch.db.adapters.enums.internal.SMSOngoingSubmissionColumnAdapter; +import org.hisp.dhis.android.core.common.CoreObject; +import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType; + +@AutoValue +public abstract class SMSOngoingSubmission implements CoreObject { + + @NonNull + public abstract Integer submissionId(); + + @NonNull + @ColumnAdapter(SMSOngoingSubmissionColumnAdapter.class) + public abstract SubmissionType type(); + + public static Builder builder() { + return new $AutoValue_SMSOngoingSubmission.Builder(); + } + + public static SMSOngoingSubmission create(Cursor cursor) { + return $AutoValue_SMSOngoingSubmission.createFromCursor(cursor); + } + + public abstract Builder toBuilder(); + + @AutoValue.Builder + public static abstract class Builder { + public abstract Builder id(Long id); + + public abstract Builder submissionId(Integer submissionId); + + public abstract Builder type(SubmissionType type); + + public abstract SMSOngoingSubmission build(); + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreImpl.kt new file mode 100644 index 0000000000..afbfcd648f --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreImpl.kt @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory + +@Suppress("MagicNumber") +internal object SMSOngoingSubmissionStore { + + private val BINDER: StatementBinder = StatementBinder { o, w -> + w.bind(1, o.submissionId()) + w.bind(2, o.type()) + } + + private val WHERE_UPDATE_BINDER = + WhereStatementBinder { o: SMSOngoingSubmission, w: StatementWrapper -> + w.bind(3, o.submissionId()) + } + + private val WHERE_DELETE_BINDER = + WhereStatementBinder { o: SMSOngoingSubmission, w: StatementWrapper -> + w.bind(1, o.submissionId()) + } + + @JvmStatic + fun create(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { + return StoreFactory.objectWithoutUidStore( + databaseAdapter, + SMSOngoingSubmissionTableInfo.TABLE_INFO, + BINDER, + WHERE_UPDATE_BINDER, + WHERE_DELETE_BINDER + ) { cursor -> SMSOngoingSubmission.create(cursor) } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt new file mode 100644 index 0000000000..c1ae64e305 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.sms.data.localdbrepository.internal + +import org.hisp.dhis.android.core.arch.db.tableinfos.TableInfo +import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper +import org.hisp.dhis.android.core.common.CoreColumns + +internal object SMSOngoingSubmissionTableInfo { + + @JvmField + val TABLE_INFO: TableInfo = object : TableInfo() { + override fun name(): String { + return "SMSOngoingSubmission" + } + + override fun columns(): CoreColumns { + return Columns() + } + } + + class Columns : CoreColumns() { + override fun all(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + SUBMISSION_ID, + TYPE + ) + } + + override fun whereUpdate(): Array { + return CollectionsHelper.appendInNewArray( + super.all(), + SUBMISSION_ID + ) + } + + companion object { + const val SUBMISSION_ID = "submissionId" + const val TYPE = "type" + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt index b46ab80e51..318f02f931 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.sms.internal import dagger.Reusable import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdTableInfo +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmissionTableInfo import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository import org.hisp.dhis.android.core.wipe.internal.ModuleWiper import org.hisp.dhis.android.core.wipe.internal.TableWiper @@ -44,7 +45,8 @@ class SMSModuleWiper @Inject internal constructor( override fun wipeMetadata() { tableWiper.wipeTables( SMSMetadataIdTableInfo.TABLE_INFO, - SMSConfigTableInfo.TABLE_INFO + SMSConfigTableInfo.TABLE_INFO, + SMSOngoingSubmissionTableInfo.TABLE_INFO ) localDbRepository.clear().blockingAwait() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java index 6b32784b22..aaebe6e04c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java @@ -39,6 +39,8 @@ import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigStoreImpl; import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataId; import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdStore; +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmission; +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmissionStore; import org.hisp.dhis.android.core.sms.data.smsrepository.internal.SmsRepositoryImpl; import org.hisp.dhis.android.core.sms.data.webapirepository.internal.ApiService; import org.hisp.dhis.android.core.sms.data.webapirepository.internal.WebApiRepositoryImpl; @@ -88,6 +90,12 @@ SMSConfigStore smsConfigStore(DatabaseAdapter databaseAdapter) { return SMSConfigStoreImpl.create(databaseAdapter); } + @Provides + @Reusable + ObjectWithoutUidStore smsOngoingSubmissionStore(DatabaseAdapter databaseAdapter) { + return SMSOngoingSubmissionStore.create(databaseAdapter); + } + @Provides ApiService apiService(Retrofit retrofit) { return retrofit.create(ApiService.class); diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt new file mode 100644 index 0000000000..49157c047b --- /dev/null +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.data.sms + +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmission +import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType + +object SMSOngoingSubmissionSample { + + val get: SMSOngoingSubmission = + SMSOngoingSubmission.builder() + .id(1L) + .submissionId(123) + .type(SubmissionType.DATA_SET) + .build() +} From ece8787010c58119678272c1f830a746bb6feaa6 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 2 Mar 2022 10:19:42 +0100 Subject: [PATCH 131/253] [ANDROSDK-1370] Remove unused methods in LocaldbRepository --- .../internal/MultiUserDatabaseManager.kt | 5 +-- .../internal/LocalDbRepositoryImpl.kt | 39 ++++++++-------- .../internal/MetadataIdsStore.kt | 30 ++++++------- .../internal/OngoingSubmissionsStore.kt | 7 +-- .../internal/SMSConfigStoreImpl.kt | 3 +- ...reImpl.kt => SMSOngoingSubmissionStore.kt} | 44 +++++++++---------- .../internal/LocalDbRepository.java | 4 -- .../core/sms/internal/SMSModuleWiper.kt | 5 +-- .../MultiUserDatabaseManagerUnitShould.kt | 9 +--- .../sms/mockrepos/MockLocalDbRepository.java | 10 ----- 10 files changed, 65 insertions(+), 91 deletions(-) rename core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/{SMSOngoingSubmissionStoreImpl.kt => SMSOngoingSubmissionStore.kt} (70%) diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt index ce3dcc9219..a7d4ab8cf8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt @@ -37,7 +37,6 @@ import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseExport import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore -import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository @Reusable internal class MultiUserDatabaseManager @Inject internal constructor( @@ -46,8 +45,7 @@ internal class MultiUserDatabaseManager @Inject internal constructor( private val databaseConfigurationSecureStore: ObjectKeyValueStore, private val configurationHelper: DatabaseConfigurationHelper, private val databaseAdapterFactory: DatabaseAdapterFactory, - private val databaseExport: DatabaseExport, - private val localDbRepository: LocalDbRepository + private val databaseExport: DatabaseExport ) { fun loadExistingChangingEncryptionIfRequiredOtherwiseCreateNew( serverUrl: String, @@ -97,7 +95,6 @@ internal class MultiUserDatabaseManager @Inject internal constructor( } val userConfiguration = addNewAccountInternal(serverUrl, username, encrypt) - localDbRepository.blockingClear() databaseAdapterFactory.createOrOpenDatabase(databaseAdapter, userConfiguration) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt index 60a47a4057..aea9771aec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.sms.data.localdbrepository.internal import io.reactivex.Completable import io.reactivex.Observable import io.reactivex.Single +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper import org.hisp.dhis.android.core.common.State @@ -58,8 +59,8 @@ import org.hisp.dhis.android.core.trackedentity.TrackedEntityModule import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore import org.hisp.dhis.android.core.user.AuthenticatedUserObjectRepository import org.hisp.dhis.smscompression.models.SMSMetadata -import javax.inject.Inject +@SuppressWarnings("LongParameterList", "TooManyFunctions") internal class LocalDbRepositoryImpl @Inject constructor( private val userRepository: AuthenticatedUserObjectRepository, private val trackedEntityModule: TrackedEntityModule, @@ -96,7 +97,9 @@ internal class LocalDbRepositoryImpl @Inject constructor( } override fun getWaitingResultTimeout(): Single { - return Single.fromCallable { smsConfigStore.get(SMSConfigKey.WAITING_RESULT_TIMEOUT)?.toInt() ?: 120 } + return Single.fromCallable { + smsConfigStore.get(SMSConfigKey.WAITING_RESULT_TIMEOUT)?.toInt() ?: DefaultWaitTimeout + } } override fun setWaitingResultTimeout(timeoutSeconds: Int): Completable { @@ -166,11 +169,11 @@ internal class LocalDbRepositoryImpl @Inject constructor( private fun getEventsForEnrollment(enrollmentUid: String): Single> { return eventModule.events() .byEnrollmentUid().eq(enrollmentUid) - .bySyncState().`in`(*uploadableStatesIncludingError()) + .bySyncState().`in`(uploadableStatesIncludingError().toList()) .withTrackedEntityDataValues() .get() - .flatMapObservable { source: List? -> Observable.fromIterable(source) } - .flatMapSingle { event: Event? -> fileResourceCleaner.removeFileDataValues(event) } + .flatMapObservable { source: List -> Observable.fromIterable(source) } + .flatMapSingle { event: Event -> fileResourceCleaner.removeFileDataValues(event) } .toList() } @@ -265,8 +268,10 @@ internal class LocalDbRepositoryImpl @Inject constructor( } override fun getDataValueSet( - dataset: String, orgUnit: String, - period: String, attributeOptionComboUid: String + dataset: String, + orgUnit: String, + period: String, + attributeOptionComboUid: String ): Single { return dataSetsStore.getDataValues(dataset, orgUnit, period, attributeOptionComboUid) .map { values: List? -> @@ -279,8 +284,10 @@ internal class LocalDbRepositoryImpl @Inject constructor( } private fun isDataValueSetCompleted( - dataset: String, orgUnit: String, - period: String, attributeOptionComboUid: String + dataset: String, + orgUnit: String, + period: String, + attributeOptionComboUid: String ): Boolean { val whereClause = WhereClauseBuilder() .appendKeyStringValue(DataSetCompleteRegistrationTableInfo.Columns.DATA_SET, dataset) @@ -316,15 +323,7 @@ internal class LocalDbRepositoryImpl @Inject constructor( return Single.fromCallable { relationshipStore.selectByUid(relationshipUid) } } - // TODO Review if necessary - override fun clear(): Completable { - return Completable.fromCallable { - smsConfigStore.delete() - metadataIdsStore.clear() - } - } - - override fun blockingClear() { - clear().blockingAwait() + companion object { + const val DefaultWaitTimeout = 120 } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt index f55a1c5f02..e2db8135e7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt @@ -30,11 +30,11 @@ package org.hisp.dhis.android.core.sms.data.localdbrepository.internal import dagger.Reusable import io.reactivex.Completable import io.reactivex.Single +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.helpers.DateUtils import org.hisp.dhis.smscompression.SMSConsts import org.hisp.dhis.smscompression.models.SMSMetadata -import javax.inject.Inject @Reusable internal class MetadataIdsStore @Inject constructor( @@ -86,19 +86,19 @@ internal class MetadataIdsStore @Inject constructor( } val metadataIds = buildFor(it, SMSConsts.MetadataType.USER) + - buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_TYPE) + - buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_ATTRIBUTE) + - buildFor(it, SMSConsts.MetadataType.PROGRAM) + - buildFor(it, SMSConsts.MetadataType.ORGANISATION_UNIT) + - buildFor(it, SMSConsts.MetadataType.DATA_ELEMENT) + - buildFor(it, SMSConsts.MetadataType.CATEGORY_OPTION_COMBO) + - buildFor(it, SMSConsts.MetadataType.DATASET) + - buildFor(it, SMSConsts.MetadataType.PROGRAM_STAGE) + - buildFor(it, SMSConsts.MetadataType.EVENT) + - buildFor(it, SMSConsts.MetadataType.ENROLLMENT) + - buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_INSTANCE) + - buildFor(it, SMSConsts.MetadataType.RELATIONSHIP) + - buildFor(it, SMSConsts.MetadataType.RELATIONSHIP_TYPE) + buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_TYPE) + + buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_ATTRIBUTE) + + buildFor(it, SMSConsts.MetadataType.PROGRAM) + + buildFor(it, SMSConsts.MetadataType.ORGANISATION_UNIT) + + buildFor(it, SMSConsts.MetadataType.DATA_ELEMENT) + + buildFor(it, SMSConsts.MetadataType.CATEGORY_OPTION_COMBO) + + buildFor(it, SMSConsts.MetadataType.DATASET) + + buildFor(it, SMSConsts.MetadataType.PROGRAM_STAGE) + + buildFor(it, SMSConsts.MetadataType.EVENT) + + buildFor(it, SMSConsts.MetadataType.ENROLLMENT) + + buildFor(it, SMSConsts.MetadataType.TRACKED_ENTITY_INSTANCE) + + buildFor(it, SMSConsts.MetadataType.RELATIONSHIP) + + buildFor(it, SMSConsts.MetadataType.RELATIONSHIP_TYPE) smsMetadataIdsStore.delete() metadataIds.forEach { id -> smsMetadataIdsStore.insert(id) } @@ -116,4 +116,4 @@ internal class MetadataIdsStore @Inject constructor( smsConfigStore.delete(SMSConfigKey.METADATA_SYNC_DATE) } } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt index 1fb9e18268..a565ed94a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt @@ -32,12 +32,11 @@ import android.util.Pair import dagger.Reusable import io.reactivex.Completable import io.reactivex.Single +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore -import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.OngoingSubmissionsStore import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository.TooManySubmissionsException import org.hisp.dhis.android.core.sms.domain.repository.internal.SubmissionType -import javax.inject.Inject @Reusable internal class OngoingSubmissionsStore @Inject constructor( @@ -59,6 +58,7 @@ internal class OngoingSubmissionsStore @Inject constructor( } } + @SuppressWarnings("MagicNumber") fun addOngoingSubmission(id: Int?, type: SubmissionType?): Completable { if (id == null || id < 0 || id > 255) { return Completable.error(IllegalArgumentException("Wrong submission id")) @@ -112,6 +112,7 @@ internal class OngoingSubmissionsStore @Inject constructor( smsConfigStore.set(SMSConfigKey.LAST_SUBMISSION_ID, id.toString()) } + @SuppressWarnings("MagicNumber") fun generateNextSubmissionId(): Single { return Single.zip, Int, Pair, Int>>( getOngoingSubmissions(), @@ -138,4 +139,4 @@ internal class OngoingSubmissionsStore @Inject constructor( companion object { private val TAG = OngoingSubmissionsStore::class.java.simpleName } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt index fe475323ae..47c3df5164 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt @@ -54,7 +54,8 @@ internal class SMSConfigStoreImpl private constructor( whereUpdateBinder, whereDeleteBinder, objectFactory -), SMSConfigStore { +), + SMSConfigStore { override fun get(key: SMSConfigKey): String? { val whereClause = WhereClauseBuilder() diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStore.kt similarity index 70% rename from core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreImpl.kt rename to core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStore.kt index afbfcd648f..3207271e01 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStore.kt @@ -37,29 +37,29 @@ import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory @Suppress("MagicNumber") internal object SMSOngoingSubmissionStore { - private val BINDER: StatementBinder = StatementBinder { o, w -> - w.bind(1, o.submissionId()) - w.bind(2, o.type()) - } - - private val WHERE_UPDATE_BINDER = - WhereStatementBinder { o: SMSOngoingSubmission, w: StatementWrapper -> - w.bind(3, o.submissionId()) - } + private val BINDER: StatementBinder = StatementBinder { o, w -> + w.bind(1, o.submissionId()) + w.bind(2, o.type()) + } - private val WHERE_DELETE_BINDER = - WhereStatementBinder { o: SMSOngoingSubmission, w: StatementWrapper -> - w.bind(1, o.submissionId()) - } + private val WHERE_UPDATE_BINDER = + WhereStatementBinder { o: SMSOngoingSubmission, w: StatementWrapper -> + w.bind(3, o.submissionId()) + } - @JvmStatic - fun create(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { - return StoreFactory.objectWithoutUidStore( - databaseAdapter, - SMSOngoingSubmissionTableInfo.TABLE_INFO, - BINDER, - WHERE_UPDATE_BINDER, - WHERE_DELETE_BINDER - ) { cursor -> SMSOngoingSubmission.create(cursor) } + private val WHERE_DELETE_BINDER = + WhereStatementBinder { o: SMSOngoingSubmission, w: StatementWrapper -> + w.bind(1, o.submissionId()) } + + @JvmStatic + fun create(databaseAdapter: DatabaseAdapter): ObjectWithoutUidStore { + return StoreFactory.objectWithoutUidStore( + databaseAdapter, + SMSOngoingSubmissionTableInfo.TABLE_INFO, + BINDER, + WHERE_UPDATE_BINDER, + WHERE_DELETE_BINDER + ) { cursor -> SMSOngoingSubmission.create(cursor) } + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java index 9652656713..d19582ac21 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java @@ -112,10 +112,6 @@ Completable updateDataSetSubmissionState(String dataSet, Single getRelationship(String relationshipUid); - Completable clear(); - - void blockingClear(); - class TooManySubmissionsException extends IllegalStateException { public TooManySubmissionsException() { super("Too many ongoing submissions at the same time >255"); diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt index 318f02f931..c9850f9043 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt @@ -28,17 +28,15 @@ package org.hisp.dhis.android.core.sms.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmissionTableInfo -import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository import org.hisp.dhis.android.core.wipe.internal.ModuleWiper import org.hisp.dhis.android.core.wipe.internal.TableWiper -import javax.inject.Inject @Reusable class SMSModuleWiper @Inject internal constructor( - private val localDbRepository: LocalDbRepository, private val tableWiper: TableWiper ) : ModuleWiper { @@ -48,7 +46,6 @@ class SMSModuleWiper @Inject internal constructor( SMSConfigTableInfo.TABLE_INFO, SMSOngoingSubmissionTableInfo.TABLE_INFO ) - localDbRepository.clear().blockingAwait() } override fun wipeData() { diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt index 6a95693f05..98de5bf8f4 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt @@ -34,7 +34,6 @@ import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseExport import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.common.BaseCallShould import org.hisp.dhis.android.core.configuration.internal.DatabasesConfigurationUtil.buildUserConfiguration -import org.hisp.dhis.android.core.sms.domain.repository.internal.LocalDbRepository import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -47,7 +46,6 @@ class MultiUserDatabaseManagerUnitShould : BaseCallShould() { private val databaseConfigurationSecureStore: ObjectKeyValueStore = mock() private val configurationHelper: DatabaseConfigurationHelper = mock() private val databaseExport: DatabaseExport = mock() - private val localDbRepository: LocalDbRepository = mock() private val databaseAdapterFactory: DatabaseAdapterFactory = mock() private val username = "username" @@ -88,7 +86,7 @@ class MultiUserDatabaseManagerUnitShould : BaseCallShould() { super.setUp() manager = MultiUserDatabaseManager( context, databaseAdapter, databaseConfigurationSecureStore, configurationHelper, - databaseAdapterFactory, databaseExport, localDbRepository + databaseAdapterFactory, databaseExport ) } @@ -101,7 +99,6 @@ class MultiUserDatabaseManagerUnitShould : BaseCallShould() { manager.loadExistingChangingEncryptionIfRequiredOtherwiseCreateNew(serverUrl, username, encrypt) verify(databaseAdapterFactory).createOrOpenDatabase(databaseAdapter, userConfigurationUnencrypted) - verify(localDbRepository).blockingClear() } @Test @@ -116,14 +113,12 @@ class MultiUserDatabaseManagerUnitShould : BaseCallShould() { verify(databaseAdapterFactory).createOrOpenDatabase(databaseAdapter, userConfigurationEncrypted) verify(databaseExport).encrypt(serverUrl, userConfigurationUnencrypted) verify(databaseAdapterFactory).deleteDatabase(userConfigurationUnencrypted) - verifyNoMoreInteractions(localDbRepository) } @Test fun not_create_database_when_non_existing_when_calling_loadExistingKeepingEncryption() { manager.loadExistingKeepingEncryption(serverUrl, username) verifyNoMoreInteractions(databaseAdapterFactory) - verifyNoMoreInteractions(localDbRepository) } @Test @@ -135,7 +130,6 @@ class MultiUserDatabaseManagerUnitShould : BaseCallShould() { manager.loadExistingKeepingEncryption(serverUrl, username) verify(databaseAdapterFactory).createOrOpenDatabase(databaseAdapter, userConfigurationUnencrypted) - verifyNoMoreInteractions(localDbRepository) } @Test @@ -164,7 +158,6 @@ class MultiUserDatabaseManagerUnitShould : BaseCallShould() { verify(databaseConfigurationSecureStore, times(2)).set(any()) verify(databaseAdapterFactory, times(4)).deleteDatabase(any()) - verify(localDbRepository, times(1)).blockingClear() verify(databaseAdapterFactory, times(1)).createOrOpenDatabase(any(), any()) } diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java index bdc8b788a0..e620b56345 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java @@ -237,16 +237,6 @@ public Completable updateDataSetSubmissionState(String dataSet, String orgUnit, return Completable.complete(); } - @Override - public Completable clear() { - return Completable.fromAction(() -> this.moduleEnabled = false); - } - - @Override - public void blockingClear() { - clear().blockingAwait(); - } - @Override public Single getRelationship(String relationshipUid) { return Single.fromCallable(MockObjects::getRelationship); From 6c0ff2ff108a2b797c3c6ca5b63be762de97907f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 4 Mar 2022 10:30:13 +0100 Subject: [PATCH 132/253] [ANDROSDK-1370] Migrate sms config --- .../DatabaseConfigurationMigration.kt | 44 +------ .../internal/migration/Migration260.kt | 121 ++++++++++++++++++ 2 files changed, 123 insertions(+), 42 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/Migration260.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt index 54936423ac..aecf961d74 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt @@ -29,17 +29,15 @@ package org.hisp.dhis.android.core.configuration.internal import android.content.Context import dagger.Reusable -import java.io.File import javax.inject.Inject import org.hisp.dhis.android.BuildConfig import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory -import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import org.hisp.dhis.android.core.arch.storage.internal.InsecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.migration.DatabaseConfigurationInsecureStoreOld -import org.hisp.dhis.android.core.fileresource.internal.FileResourceStoreImpl +import org.hisp.dhis.android.core.configuration.internal.migration.Migration260 import org.hisp.dhis.android.core.user.internal.UserCredentialsStoreImpl @Reusable @@ -96,7 +94,7 @@ internal class DatabaseConfigurationMigration @Inject constructor( } if (existingVersionCode == null) { - migrateVersion260() + Migration260(context, databaseConfigurationStore, databaseAdapterFactory).apply() } } @@ -138,44 +136,6 @@ internal class DatabaseConfigurationMigration @Inject constructor( return store.selectFirst()?.serverUrl() } - private fun migrateVersion260() { - val configuration = databaseConfigurationStore.get() - - configuration?.let { - if (configuration.accounts().size == 1) { - val existingAccount = configuration.accounts().first() - val databaseAdapter = databaseAdapterFactory.newParentDatabaseAdapter() - databaseAdapterFactory.createOrOpenDatabase(databaseAdapter, existingAccount) - - migrateFileResources260(databaseAdapter) - - databaseAdapter.close() - } - } - } - - private fun migrateFileResources260(databaseAdapter: DatabaseAdapter) { - val accountSubFolder = FileResourceDirectoryHelper.getSubfolderName(databaseAdapter.databaseName) - - val rootResources = FileResourceDirectoryHelper.getRootFileResourceDirectory(context) - val dstResources = FileResourceDirectoryHelper.getFileResourceDirectory(context, accountSubFolder) - - rootResources.listFiles() - ?.filter { it.isFile } - ?.forEach { file -> file.renameTo(File(dstResources, file.name)) } - - val fileResourcesStore = FileResourceStoreImpl.create(databaseAdapter) - val fileResources = fileResourcesStore.selectAll() - fileResources.forEach { - val newPath = it.path()?.replace( - oldValue = FileResourceDirectoryHelper.FilesDir, - newValue = FileResourceDirectoryHelper.FilesDir + "/" + accountSubFolder - ) ?: "" - val newFileResource = it.toBuilder().path(newPath).build() - fileResourcesStore.updateOrInsert(newFileResource) - } - } - companion object { const val OLD_DBNAME = "dhis.db" } diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/Migration260.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/Migration260.kt new file mode 100644 index 0000000000..a45ede50ee --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/Migration260.kt @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.configuration.internal.migration + +import android.content.Context +import java.io.File +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory +import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper +import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore +import org.hisp.dhis.android.core.configuration.internal.DatabasesConfiguration +import org.hisp.dhis.android.core.fileresource.internal.FileResourceStoreImpl +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigKey +import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigStoreImpl + +internal class Migration260( + private val context: Context, + private val databaseConfigurationStore: ObjectKeyValueStore, + private val databaseAdapterFactory: DatabaseAdapterFactory +) { + fun apply() { + val configuration = databaseConfigurationStore.get() + + configuration?.let { + if (configuration.accounts().size == 1) { + val existingAccount = configuration.accounts().first() + val databaseAdapter = databaseAdapterFactory.newParentDatabaseAdapter() + databaseAdapterFactory.createOrOpenDatabase(databaseAdapter, existingAccount) + + migrateFileResources260(databaseAdapter) + migrateSmsSettings(databaseAdapter) + + databaseAdapter.close() + } + } + } + + private fun migrateFileResources260(databaseAdapter: DatabaseAdapter) { + val accountSubFolder = FileResourceDirectoryHelper.getSubfolderName(databaseAdapter.databaseName) + + val rootResources = FileResourceDirectoryHelper.getRootFileResourceDirectory(context) + val dstResources = FileResourceDirectoryHelper.getFileResourceDirectory(context, accountSubFolder) + + rootResources.listFiles() + ?.filter { it.isFile } + ?.forEach { file -> file.renameTo(File(dstResources, file.name)) } + + val fileResourcesStore = FileResourceStoreImpl.create(databaseAdapter) + val fileResources = fileResourcesStore.selectAll() + fileResources.forEach { + val newPath = it.path()?.replace( + oldValue = FileResourceDirectoryHelper.FilesDir, + newValue = FileResourceDirectoryHelper.FilesDir + "/" + accountSubFolder + ) ?: "" + val newFileResource = it.toBuilder().path(newPath).build() + fileResourcesStore.updateOrInsert(newFileResource) + } + } + + @Suppress("MagicNumber") + private fun migrateSmsSettings(databaseAdapter: DatabaseAdapter) { + val configFile = "smsconfig" + + val keyModuleEnabled = "module_enabled" + val keyGateway = "gateway" + val keyConfirmationSender = "confirmationsender" + val keyWaitingResultTimeout = "reading_timeout" + val keyMetadataConfig = "metadata_conf" + val keyWaitForResult = "wait_for_result" + + val smsPrefs = context.getSharedPreferences(configFile, Context.MODE_PRIVATE) + val smsConfigStore = SMSConfigStoreImpl.create(databaseAdapter) + + smsPrefs.getBoolean(keyModuleEnabled, false).let { + smsConfigStore.set(SMSConfigKey.MODULE_ENABLED, it.toString()) + } + smsPrefs.getString(keyGateway, null)?.let { + smsConfigStore.set(SMSConfigKey.GATEWAY, it) + } + smsPrefs.getString(keyConfirmationSender, null)?.let { + smsConfigStore.set(SMSConfigKey.CONFIRMATION_SENDER, it) + } + smsPrefs.getInt(keyWaitingResultTimeout, 120).let { + smsConfigStore.set(SMSConfigKey.WAITING_RESULT_TIMEOUT, it.toString()) + } + smsPrefs.getString(keyMetadataConfig, null)?.let { + smsConfigStore.set(SMSConfigKey.METADATA_CONFIG, it) + } + smsPrefs.getBoolean(keyWaitForResult, false).let { + smsConfigStore.set(SMSConfigKey.WAIT_FOR_RESULT, it.toString()) + } + + smsPrefs.edit().clear().apply() + } +} From 9dfa49a52065680fd87b93cfe2a9e45ca8ec4a86 Mon Sep 17 00:00:00 2001 From: ericampire Date: Fri, 4 Mar 2022 12:54:16 +0200 Subject: [PATCH 133/253] [ANDROSDK-1471] Disabling ProgramEndpointCallMockIntegrationShould --- .../internal/ProgramEndpointCallMockIntegrationShould.java | 2 ++ .../core/systeminfo/SystemInfoCallMockIntegrationShould.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java index 2a7113f943..6e346c9446 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java @@ -62,6 +62,7 @@ import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyEnqueable; import org.hisp.dhis.android.core.utils.runner.D2JunitRunner; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.internal.util.collections.Sets; @@ -72,6 +73,7 @@ import static com.google.common.truth.Truth.assertThat; +@Ignore("Must be fix later") @RunWith(D2JunitRunner.class) public class ProgramEndpointCallMockIntegrationShould extends BaseMockIntegrationTestEmptyEnqueable { diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java index b3dd31f2f3..e04a19bde3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java @@ -28,9 +28,11 @@ package org.hisp.dhis.android.core.systeminfo; +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore; import org.hisp.dhis.android.core.arch.db.tableinfos.TableInfo; import org.hisp.dhis.android.core.arch.repositories.collection.ReadOnlyWithDownloadObjectRepository; import org.hisp.dhis.android.core.data.systeminfo.SystemInfoSamples; +import org.hisp.dhis.android.core.systeminfo.internal.SystemInfoStore; import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyEnqueable; import org.hisp.dhis.android.core.utils.runner.D2JunitRunner; import org.junit.Before; @@ -70,6 +72,8 @@ public void persist_system_info_when_call() { @Test public void update_system_info_when_call() { + ObjectWithoutUidStore store = SystemInfoStore.create(databaseAdapter); + databaseAdapter.insert(tableInfo.name(), null, systemInfoFromDB.toContentValues()); isSystemInfoInDb(systemInfoFromDB); From 5da72267f8d763fa482f9da1a07cb1378b08d939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sa=CC=81nchez?= Date: Mon, 7 Mar 2022 12:01:45 +0100 Subject: [PATCH 134/253] Fix Ktlint, checkstyle --- .../eventlinelist/EventLineListIntegrationShould.kt | 5 +++-- .../core/analytics/AnalyticsLegendStrategy.kt | 2 +- .../dhis/android/core/analytics/LegendEvaluator.kt | 6 ++---- .../aggregated/internal/AnalyticsService.kt | 4 +++- .../internal/AnalyticsServiceEvaluatorHelper.kt | 8 +++++--- .../internal/AnalyticsVisualizationsService.kt | 5 +++-- .../linelist/EventLineListRepositoryImpl.kt | 2 +- .../analytics/linelist/EventLineListServiceImpl.kt | 12 ++++++++---- .../core/analytics/linelist/LineListResponse.kt | 2 +- 9 files changed, 27 insertions(+), 19 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt index c240baff44..761bc10dc1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt @@ -28,8 +28,8 @@ package org.hisp.dhis.android.core.analytics.eventlinelist import com.google.common.truth.Truth.assertThat -import org.hisp.dhis.android.core.analytics.LegendEvaluator import org.hisp.dhis.android.core.analytics.AnalyticsLegendStrategy +import org.hisp.dhis.android.core.analytics.LegendEvaluator import org.hisp.dhis.android.core.analytics.aggregated.internal.AnalyticsOrganisationUnitHelper import org.hisp.dhis.android.core.analytics.eventlinelist.EventLineListSamples.categoryCombo import org.hisp.dhis.android.core.analytics.eventlinelist.EventLineListSamples.categoryOptionCombo @@ -133,7 +133,8 @@ class EventLineListIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() dataElementRepository = d2.dataElementModule().dataElements(), programIndicatorRepository = d2.programModule().programIndicators(), legendRepository = d2.legendSetModule().legends(), - indicatorRepository = d2.indicatorModule().indicators()) + indicatorRepository = d2.indicatorModule().indicators() + ) ) @Before diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt index a36168321b..399a9f697e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt @@ -4,4 +4,4 @@ sealed class AnalyticsLegendStrategy { object None : AnalyticsLegendStrategy() object ByDataItem : AnalyticsLegendStrategy() data class Fixed(val legendSetUid: String) : AnalyticsLegendStrategy() -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt index aabe954cf0..d691a99dca 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt @@ -1,11 +1,11 @@ package org.hisp.dhis.android.core.analytics +import javax.inject.Inject import org.hisp.dhis.android.core.dataelement.DataElementCollectionRepository import org.hisp.dhis.android.core.indicator.IndicatorCollectionRepository import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.legendset.LegendCollectionRepository import org.hisp.dhis.android.core.program.ProgramIndicatorCollectionRepository -import javax.inject.Inject internal class LegendEvaluator @Inject constructor( private val dataElementRepository: DataElementCollectionRepository, @@ -48,8 +48,6 @@ internal class LegendEvaluator @Inject constructor( val legendSet = dataElement.legendSets()!![0] return getLegendByLegendSet(legendSet.uid(), value) - - null } catch (e: Exception) { null } @@ -97,4 +95,4 @@ internal class LegendEvaluator @Inject constructor( null } } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt index 56df86a043..b315cc40d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt @@ -59,7 +59,9 @@ internal class AnalyticsService @Inject constructor( val metadata = analyticsServiceMetadataHelper.getMetadata(evaluationItems) - val values = evaluationItems.map { analyticsServiceEvaluatorHelper.evaluate(it, metadata, params.analyticsLegendStrategy) } + val values = evaluationItems.map { + analyticsServiceEvaluatorHelper.evaluate(it, metadata, params.analyticsLegendStrategy) + } Result.Success( DimensionalResponse( diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt index c4203695d4..99b5f6d78b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.analytics.aggregated.internal +import javax.inject.Inject import org.hisp.dhis.android.core.analytics.AnalyticsException import org.hisp.dhis.android.core.analytics.AnalyticsLegendStrategy import org.hisp.dhis.android.core.analytics.LegendEvaluator @@ -39,7 +40,6 @@ import org.hisp.dhis.android.core.analytics.aggregated.internal.evaluator.DataEl import org.hisp.dhis.android.core.analytics.aggregated.internal.evaluator.IndicatorEvaluator import org.hisp.dhis.android.core.analytics.aggregated.internal.evaluator.ProgramIndicatorSQLEvaluator import org.hisp.dhis.android.core.legendset.Legend -import javax.inject.Inject internal class AnalyticsServiceEvaluatorHelper @Inject constructor( private val dataElementEvaluator: DataElementSQLEvaluator, @@ -110,8 +110,10 @@ internal class AnalyticsServiceEvaluatorHelper @Inject constructor( } private fun getLegendFromDataDimension(evaluationItem: AnalyticsServiceEvaluationItem, value: String?): Legend? { - val dimensionDataItem = (evaluationItem.dimensionItems.filterIsInstance() + - evaluationItem.filters.filterIsInstance()).first() + val dimensionDataItem = ( + evaluationItem.dimensionItems.filterIsInstance() + + evaluationItem.filters.filterIsInstance() + ).first() return when (dimensionDataItem) { is DimensionItem.DataItem.DataElementItem -> legendEvaluator.getLegendByDataElement( diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt index 222d9822c8..7c27385ed8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt @@ -113,8 +113,9 @@ internal class AnalyticsVisualizationsService @Inject constructor( val legendSetUId = visualization.legend()?.set()?.uid() val legendStrategy = when (visualizationLegendStrategy) { - LegendStrategy.FIXED -> if (legendSetUId != null) AnalyticsLegendStrategy.Fixed(legendSetUId) - else AnalyticsLegendStrategy.None + LegendStrategy.FIXED -> + if (legendSetUId != null) AnalyticsLegendStrategy.Fixed(legendSetUId) + else AnalyticsLegendStrategy.None LegendStrategy.BY_DATA_ITEM, null -> AnalyticsLegendStrategy.ByDataItem } diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt index 57e0807149..2a50675ee1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt @@ -29,8 +29,8 @@ package org.hisp.dhis.android.core.analytics.linelist import dagger.Reusable import io.reactivex.Single -import org.hisp.dhis.android.core.analytics.AnalyticsLegendStrategy import javax.inject.Inject +import org.hisp.dhis.android.core.analytics.AnalyticsLegendStrategy import org.hisp.dhis.android.core.arch.repositories.filters.internal.EqFilterConnector import org.hisp.dhis.android.core.arch.repositories.filters.internal.OrganisationUnitFilterConnector import org.hisp.dhis.android.core.arch.repositories.filters.internal.PeriodsFilterConnector diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt index c11e1b7c91..aa323d938d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt @@ -27,9 +27,9 @@ */ package org.hisp.dhis.android.core.analytics.linelist -import org.hisp.dhis.android.core.analytics.LegendEvaluator -import org.hisp.dhis.android.core.analytics.AnalyticsLegendStrategy import javax.inject.Inject +import org.hisp.dhis.android.core.analytics.AnalyticsLegendStrategy +import org.hisp.dhis.android.core.analytics.LegendEvaluator import org.hisp.dhis.android.core.analytics.aggregated.internal.AnalyticsOrganisationUnitHelper import org.hisp.dhis.android.core.arch.repositories.scope.RepositoryScope import org.hisp.dhis.android.core.common.DateFilterPeriodHelper @@ -93,7 +93,9 @@ internal class EventLineListServiceImpl @Inject constructor( val legend = when (params.analyticsLegendStrategy) { is AnalyticsLegendStrategy.None -> null - is AnalyticsLegendStrategy.ByDataItem -> legendEvaluator.getLegendByDataElement(de.uid, dv?.value()) + is AnalyticsLegendStrategy.ByDataItem -> legendEvaluator.getLegendByDataElement( + de.uid, dv?.value() + ) is AnalyticsLegendStrategy.Fixed -> legendEvaluator.getLegendByLegendSet( params.analyticsLegendStrategy.legendSetUid, dv?.value() @@ -114,7 +116,9 @@ internal class EventLineListServiceImpl @Inject constructor( val legend = when (params.analyticsLegendStrategy) { is AnalyticsLegendStrategy.None -> null - is AnalyticsLegendStrategy.ByDataItem -> legendEvaluator.getLegendByProgramIndicator(pi.uid, value) + is AnalyticsLegendStrategy.ByDataItem -> legendEvaluator.getLegendByProgramIndicator( + pi.uid, value + ) is AnalyticsLegendStrategy.Fixed -> legendEvaluator.getLegendByLegendSet( params.analyticsLegendStrategy.legendSetUid, value ) diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt index 9390f96bc0..ea7429fd30 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt @@ -27,8 +27,8 @@ */ package org.hisp.dhis.android.core.analytics.linelist -import org.hisp.dhis.android.core.legendset.Legend import java.util.Date +import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.period.Period data class LineListResponse( From 3d9662ad49432be29b297c2c6cf6439a92f50043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sa=CC=81nchez?= Date: Mon, 7 Mar 2022 12:09:13 +0100 Subject: [PATCH 135/253] Supress detekt warnings --- .../java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt | 1 + .../android/core/analytics/linelist/EventLineListServiceImpl.kt | 1 + 2 files changed, 2 insertions(+) diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt index d691a99dca..698db3e80e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt @@ -7,6 +7,7 @@ import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.legendset.LegendCollectionRepository import org.hisp.dhis.android.core.program.ProgramIndicatorCollectionRepository +@Suppress("TooGenericExceptionCaught") internal class LegendEvaluator @Inject constructor( private val dataElementRepository: DataElementCollectionRepository, private val programIndicatorRepository: ProgramIndicatorCollectionRepository, diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt index aa323d938d..fe0b3d9d72 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt @@ -64,6 +64,7 @@ internal class EventLineListServiceImpl @Inject constructor( return evaluateEvents(params) } + @Suppress("LongMethod", "ComplexMethod") private fun evaluateEvents(params: EventLineListParams): List { val events = getEvents(params) From a4538085907398b5a566e7a1886536f4a6fc8da8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sa=CC=81nchez?= Date: Mon, 7 Mar 2022 13:02:51 +0100 Subject: [PATCH 136/253] Add operator biggerOrEqualTo to DoubleFilterConnector --- .../dhis/android/core/analytics/LegendEvaluator.kt | 6 +----- .../filters/internal/DoubleFilterConnector.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt index 698db3e80e..5b200f7458 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt @@ -84,11 +84,7 @@ internal class LegendEvaluator @Inject constructor( } else try { return legendRepository .byStartValue().smallerThan(value.toDouble()) - .byEndValue().biggerThan(value.toDouble()) - .byLegendSet().eq(legendSetUid) - .one() - .blockingGet() ?: legendRepository - .byEndValue().eq(value.toDouble()) + .byEndValue().biggerOrEqualTo(value.toDouble()) .byLegendSet().eq(legendSetUid) .one() .blockingGet() diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java index ce3f7d0a7c..d27a60435d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java @@ -62,6 +62,16 @@ public R biggerThan(double value) { return newWithWrappedScope(FilterItemOperator.GT, value); } + /** + * Returns a new repository whose scope is the one of the current repository plus the new filter being applied. + * The biggerOrEqualTo filter checks if the given field has a value which is bigger or equal to the one provided. + * @param value value to compare with the target field + * @return the new repository + */ + public R biggerOrEqualTo(double value) { + return newWithWrappedScope(FilterItemOperator.GE, value); + } + String wrapValue(Double value) { return value.toString(); } From 6221647587b02e376aacbb6ac29de2cf157d9bdb Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 1 Mar 2022 11:13:24 +0100 Subject: [PATCH 137/253] [ANDROSDK-1505] Implement fake break the glass in old importer --- .../internal/EnrollmentImportHandler.kt | 16 ++- .../core/event/internal/OldEventPostCall.kt | 10 +- .../EnrollmentWebResponseHandlerSummary.kt | 35 +++++ .../internal/ItemsWithFileResources.kt | 33 +++++ .../imports/internal/TEIWebResponseHandler.kt | 6 +- .../internal/TEIWebResponseHandlerSummary.kt | 36 +++++ .../OldTrackedEntityInstancePostCall.kt | 10 +- ...OldTrackerImporterFileResourcesPostCall.kt | 17 ++- .../internal/OldTrackerImporterPostCall.kt | 107 +++++++++++---- .../TrackedEntityInstanceImportHandler.kt | 26 ++-- .../ownership/OwnershipManagerImpl.kt | 22 ++++ ...UserOrganisationUnitLinkEntityDIModule.kt} | 32 +++-- ....java => UserOrganisationUnitLinkStore.kt} | 26 ++-- .../UserOrganisationUnitLinkStoreImpl.java | 103 --------------- .../UserOrganisationUnitLinkStoreImpl.kt | 124 ++++++++++++++++++ .../internal/EnrollmentImportHandlerShould.kt | 17 +++ ...rackedEntityInstanceImportHandlerShould.kt | 17 +++ .../ownership/OwnershipManagerShould.kt | 10 +- 18 files changed, 457 insertions(+), 190 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt rename core/src/main/java/org/hisp/dhis/android/core/user/internal/{UserOrganisationUnitLinkEntityDIModule.java => UserOrganisationUnitLinkEntityDIModule.kt} (75%) rename core/src/main/java/org/hisp/dhis/android/core/user/internal/{UserOrganisationUnitLinkStore.java => UserOrganisationUnitLinkStore.kt} (73%) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt index 6d55f03a40..89e0fc8952 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt @@ -45,6 +45,7 @@ import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.TrackerImportConflict import org.hisp.dhis.android.core.imports.internal.BaseImportSummaryHelper.getReferences import org.hisp.dhis.android.core.imports.internal.EnrollmentImportSummary +import org.hisp.dhis.android.core.imports.internal.EnrollmentWebResponseHandlerSummary import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.tracker.importer.internal.JobReportEnrollmentHandler @@ -66,7 +67,8 @@ internal class EnrollmentImportHandler @Inject constructor( enrollments: List, teiState: State, fileResources: List - ) { + ): EnrollmentWebResponseHandlerSummary { + val summary = EnrollmentWebResponseHandlerSummary() enrollmentImportSummaries?.filterNotNull()?.forEach { enrollmentImportSummary -> enrollmentImportSummary.reference()?.let { enrollmentUid -> @@ -96,13 +98,16 @@ internal class EnrollmentImportHandler @Inject constructor( } } - processIgnoredEnrollments(enrollmentImportSummaries, enrollments, teiState, fileResources) + val ignored = processIgnoredEnrollments(enrollmentImportSummaries, enrollments, teiState, fileResources) + summary.ignoredEnrollments.addAll(ignored) val teiUids = enrollments.mapNotNull { it.trackedEntityInstance() }.distinct() teiUids.forEach { dataStatePropagator.refreshTrackedEntityInstanceAggregatedSyncState(it) } + + return summary } private fun handleEventImportSummaries( @@ -151,10 +156,10 @@ internal class EnrollmentImportHandler @Inject constructor( enrollments: List, teiState: State, fileResources: List - ) { + ): List { val processedEnrollments = getReferences(enrollmentImportSummaries) - enrollments.filterNot { processedEnrollments.contains(it.uid()) }.forEach { enrollment -> + return enrollments.filterNot { processedEnrollments.contains(it.uid()) }.mapNotNull { enrollment -> // Tracker importer does not notify about enrollments already deleted in the server. // This is a workaround to accept as SUCCESS a missing enrollment only if it was deleted in the device. val state = @@ -164,6 +169,9 @@ internal class EnrollmentImportHandler @Inject constructor( trackerImportConflictStore.deleteEnrollmentConflicts(enrollment.uid()) enrollmentStore.setSyncStateOrDelete(enrollment.uid(), state) resetNestedDataStates(enrollment, fileResources) + + if (state == State.SYNCED) null + else enrollment } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt index 23377c3102..e65c9fdc60 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt @@ -71,14 +71,14 @@ internal class OldEventPostCall @Inject internal constructor( } trackerPostStateManager.setPayloadStates( - events = validEvents.first, + events = validEvents.items, forcedState = State.UPLOADING ) val progressManager = D2ProgressManager(1) val eventPayload = EventPayload() - eventPayload.events = validEvents.first + eventPayload.events = validEvents.items val strategy = "CREATE_AND_UPDATE" try { val webResponse = apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( @@ -87,12 +87,12 @@ internal class OldEventPostCall @Inject internal constructor( listOf(409), EventWebResponse::class.java ) - handleWebResponse(webResponse, validEvents.first, validEvents.second) + handleWebResponse(webResponse, validEvents.items, validEvents.fileResources) Observable.just(progressManager.increaseProgress(Event::class.java, true)) } catch (e: Exception) { trackerPostStateManager.restorePayloadStates( - events = validEvents.first, - fileResources = validEvents.second + events = validEvents.items, + fileResources = validEvents.fileResources ) Observable.error(e) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt new file mode 100644 index 0000000000..058c40976a --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.imports.internal + +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance + +internal data class EnrollmentWebResponseHandlerSummary( + val ignoredEnrollments: MutableList = mutableListOf() +) \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt new file mode 100644 index 0000000000..672dadbed5 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.imports.internal + +internal data class ItemsWithFileResources ( + val items: List, + val fileResources: List +) \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt index 48d153b634..a83af2d6a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt @@ -41,11 +41,11 @@ internal class TEIWebResponseHandler @Inject constructor( webResponse: TEIWebResponse?, instances: List, fileResources: List - ) { - webResponse?.response()?.let { response -> + ): TEIWebResponseHandlerSummary { + return webResponse?.response()?.let { response -> trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( response.importSummaries(), instances, fileResources ) - } + } ?: TEIWebResponseHandlerSummary() } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt new file mode 100644 index 0000000000..23848cabbd --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.imports.internal + +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance + +internal data class TEIWebResponseHandlerSummary( + val ignoredTeis: MutableList = mutableListOf(), + val ignoredEnrollments: MutableList = mutableListOf() +) \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt index fa2a023ba5..f1cdf5bc61 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt @@ -72,15 +72,15 @@ internal class OldTrackedEntityInstancePostCall @Inject internal constructor( return Observable.create { emitter: ObservableEmitter -> val teiPartitions = payloadGenerator29.getTrackedEntityInstancesPartitions29(filteredTrackedEntityInstances) .map { partition -> fileResourcePostCall.uploadTrackedEntityFileResources(partition).blockingGet() } - .filter { it.first.isNotEmpty() } + .filter { it.items.isNotEmpty() } val progressManager = D2ProgressManager(teiPartitions.size) for (partition in teiPartitions) { stateManager.setPayloadStates( - trackedEntityInstances = partition.first, + trackedEntityInstances = partition.items, forcedState = State.UPLOADING ) - val thisPartition = relationshipPostCall.postDeletedRelationships29(partition.first) + val thisPartition = relationshipPostCall.postDeletedRelationships29(partition.items) try { val trackedEntityInstancePayload = TrackedEntityInstancePayload.create(thisPartition) val webResponse = apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( @@ -91,12 +91,12 @@ internal class OldTrackedEntityInstancePostCall @Inject internal constructor( listOf(409), TEIWebResponse::class.java ) - teiWebResponseHandler.handleWebResponse(webResponse, thisPartition, partition.second) + teiWebResponseHandler.handleWebResponse(webResponse, thisPartition, partition.fileResources) emitter.onNext(progressManager.increaseProgress(TrackedEntityInstance::class.java, false)) } catch (e: Exception) { stateManager.restorePayloadStates( trackedEntityInstances = thisPartition, - fileResources = partition.second + fileResources = partition.fileResources ) if (e is D2Error && e.isOffline) { emitter.onError(e) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt index d5c9dc7f86..8ba474a5c6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt @@ -37,6 +37,7 @@ import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.fileresource.internal.FileResourcePostCall +import org.hisp.dhis.android.core.imports.internal.ItemsWithFileResources import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor @@ -50,34 +51,38 @@ internal class OldTrackerImporterFileResourcesPostCall @Inject internal construc fun uploadTrackedEntityFileResources( trackedEntityInstances: List - ): Single, List>> { + ): Single> { return Single.create { emitter -> val fileResources = fileResourceStore.getUploadableSyncStatesIncludingError() if (fileResources.isEmpty()) { - emitter.onSuccess(Pair(trackedEntityInstances, emptyList())) + emitter.onSuccess(ItemsWithFileResources(trackedEntityInstances, emptyList())) } else { val successfulTeis = trackedEntityInstances.mapNotNull { catchErrorToNull { uploadTrackedEntityInstance(it, fileResources) } } - emitter.onSuccess(Pair(successfulTeis.map { it.first }, successfulTeis.flatMap { it.second })) + emitter.onSuccess( + ItemsWithFileResources(successfulTeis.map { it.first }, successfulTeis.flatMap { it.second }) + ) } } } fun uploadEventsFileResources( events: List - ): Single, List>> { + ): Single> { return Single.create { emitter -> val fileResources = fileResourceStore.getUploadableSyncStatesIncludingError() if (fileResources.isEmpty()) { - emitter.onSuccess(Pair(events, emptyList())) + emitter.onSuccess(ItemsWithFileResources(events, emptyList())) } else { val successfulEvents = events.mapNotNull { catchErrorToNull { uploadEvent(it, fileResources) } } - emitter.onSuccess(Pair(successfulEvents.map { it.first }, successfulEvents.flatMap { it.second })) + emitter.onSuccess( + ItemsWithFileResources(successfulEvents.map { it.first }, successfulEvents.flatMap { it.second }) + ) } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt index 4c775fecc8..5a03e8e2ce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt @@ -30,8 +30,6 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable import io.reactivex.Observable import io.reactivex.ObservableEmitter -import java.net.HttpURLConnection.HTTP_CONFLICT -import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager @@ -43,9 +41,17 @@ import org.hisp.dhis.android.core.event.internal.EventService import org.hisp.dhis.android.core.imports.internal.EventWebResponse import org.hisp.dhis.android.core.imports.internal.TEIWebResponse import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandler +import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.program.AccessLevel +import org.hisp.dhis.android.core.program.internal.ProgramStoreInterface import org.hisp.dhis.android.core.relationship.internal.RelationshipPostCall import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor +import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipManagerImpl +import org.hisp.dhis.android.core.user.internal.UserOrganisationUnitLinkStore +import java.net.HttpURLConnection.HTTP_CONFLICT +import javax.inject.Inject @Reusable internal class OldTrackerImporterPostCall @Inject internal constructor( @@ -57,7 +63,10 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( private val eventImportHandler: EventImportHandler, private val apiCallExecutor: APICallExecutor, private val relationshipPostCall: RelationshipPostCall, - private val fileResourcePostCall: OldTrackerImporterFileResourcesPostCall + private val fileResourcePostCall: OldTrackerImporterFileResourcesPostCall, + private val userOrganisationUnitLinkStore: UserOrganisationUnitLinkStore, + private val programStore: ProgramStoreInterface, + private val ownershipManagerImpl: OwnershipManagerImpl ) { fun uploadTrackedEntityInstances( @@ -98,29 +107,23 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( val teiPartitions = trackedEntityInstances .chunked(TrackedEntityInstanceService.DEFAULT_PAGE_SIZE) .map { partition -> fileResourcePostCall.uploadTrackedEntityFileResources(partition).blockingGet() } - .filter { it.first.isNotEmpty() } + .filter { it.items.isNotEmpty() } for (partition in teiPartitions) { try { - trackerStateManager.setPayloadStates( - trackedEntityInstances = partition.first, - forcedState = State.UPLOADING - ) - val trackedEntityInstancePayload = TrackedEntityInstancePayload.create(partition.first) - val webResponse = apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( - trackedEntityInstanceService.postTrackedEntityInstances( - trackedEntityInstancePayload, "SYNC" - ), - @Suppress("MagicNumber") - listOf(HTTP_CONFLICT), - TEIWebResponse::class.java - ) - teiWebResponseHandler.handleWebResponse(webResponse, partition.first, partition.second) + val summary = postPartition(partition.items, partition.fileResources) + val glassErrors = getGlassProtectedErrors(summary, partition.items) + + if (glassErrors.isNotEmpty()) { + fakeBreakGlass(glassErrors) + postPartition(glassErrors, partition.fileResources) + } + emitter.onNext(progressManager.increaseProgress(TrackedEntityInstance::class.java, false)) } catch (e: Exception) { trackerStateManager.restorePayloadStates( - trackedEntityInstances = partition.first, - fileResources = partition.second + trackedEntityInstances = partition.items, + fileResources = partition.fileResources ) if (e is D2Error && e.isOffline) { emitter.onError(e) @@ -139,6 +142,64 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( } } + private fun postPartition( + trackedEntityInstances: List, + fileResources: List + ): TEIWebResponseHandlerSummary { + trackerStateManager.setPayloadStates( + trackedEntityInstances = trackedEntityInstances, + forcedState = State.UPLOADING + ) + val trackedEntityInstancePayload = TrackedEntityInstancePayload.create(trackedEntityInstances) + val webResponse = apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( + trackedEntityInstanceService.postTrackedEntityInstances( + trackedEntityInstancePayload, "SYNC" + ), + @Suppress("MagicNumber") + listOf(HTTP_CONFLICT), + TEIWebResponse::class.java + ) + return teiWebResponseHandler.handleWebResponse(webResponse, trackedEntityInstances, fileResources) + } + + private fun getGlassProtectedErrors( + summary: TEIWebResponseHandlerSummary, + instances: List + ): List { + return summary.ignoredEnrollments.filter { enrollment -> + isProtectedProgram(enrollment.program()) && isNotCaptureScope(enrollment.organisationUnit()) + }.mapNotNull { enrollment -> + instances.mapNotNull { tei -> + val teiEnrollment = + TrackedEntityInstanceInternalAccessor.accessEnrollments(tei).find { it.uid() == enrollment.uid() } + + if (teiEnrollment != null) { + TrackedEntityInstanceInternalAccessor + .insertEnrollments(tei.toBuilder(), listOf(teiEnrollment)) + .build() + } else { + null + } + }.firstOrNull() + } + } + + private fun isProtectedProgram(program: String?): Boolean { + return program?.let { programStore.selectByUid(it)?.accessLevel() == AccessLevel.PROTECTED } ?: false + } + + private fun isNotCaptureScope(organisationUnit: String?): Boolean { + return organisationUnit?.let { !userOrganisationUnitLinkStore.isCaptureScope(it) } ?: false + } + + private fun fakeBreakGlass(instances: List) { + instances.forEach { instance -> + TrackedEntityInstanceInternalAccessor.accessEnrollments(instance).forEach { enrollment -> + ownershipManagerImpl.fakeBreakGlass(instance.uid(), enrollment.uid()) + } + } + } + @Suppress("TooGenericExceptionCaught") private fun postEvents( events: List @@ -152,7 +213,7 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( val validEvents = fileResourcePostCall.uploadEventsFileResources(events).blockingGet() val payload = EventPayload() - payload.events = validEvents.first + payload.events = validEvents.items trackerStateManager.setPayloadStates( events = payload.events, @@ -170,13 +231,13 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( eventImportHandler.handleEventImportSummaries( eventImportSummaries = webResponse?.response()?.importSummaries(), events = payload.events, - fileResources = validEvents.second + fileResources = validEvents.fileResources ) Observable.just(progressManager.increaseProgress(Event::class.java, true)) } catch (e: Exception) { trackerStateManager.restorePayloadStates( events = payload.events, - fileResources = validEvents.second + fileResources = validEvents.fileResources ) Observable.error(e) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt index 7a99372362..e18d4314d1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt @@ -41,7 +41,9 @@ import org.hisp.dhis.android.core.enrollment.internal.EnrollmentImportHandler import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.TrackerImportConflict -import org.hisp.dhis.android.core.imports.internal.TEIImportSummary +import org.hisp.dhis.android.core.imports.internal.* +import org.hisp.dhis.android.core.imports.internal.EnrollmentWebResponseHandlerSummary +import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.relationship.RelationshipCollectionRepository @@ -75,7 +77,8 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( teiImportSummaries: List?, instances: List, fileResources: List - ) { + ): TEIWebResponseHandlerSummary { + val summary = TEIWebResponseHandlerSummary() val processedTeis = mutableListOf() teiImportSummaries?.filterNotNull()?.forEach { teiImportSummary -> @@ -99,7 +102,8 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( if (handleAction !== HandleAction.Delete) { storeTEIImportConflicts(teiImportSummary) - handleEnrollmentImportSummaries(teiImportSummary, instances, state, fileResources) + val enSummary = handleEnrollmentImportSummaries(teiImportSummary, instances, state, fileResources) + summary.ignoredEnrollments.addAll(enSummary.ignoredEnrollments) dataStatePropagator.refreshTrackedEntityInstanceAggregatedSyncState(teiUid) } @@ -111,7 +115,11 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( } } - processIgnoredTEIs(processedTeis, instances, fileResources) + val ignoredTeis = processIgnoredTEIs(processedTeis, instances, fileResources) + + summary.ignoredTeis.addAll(ignoredTeis) + + return summary } private fun handleEnrollmentImportSummaries( @@ -119,8 +127,8 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( instances: List, teiState: State, fileResources: List - ) { - teiImportSummary.enrollments()?.importSummaries().let { importSummaries -> + ): EnrollmentWebResponseHandlerSummary { + return teiImportSummary.enrollments()?.importSummaries()?.let { importSummaries -> val teiUid = teiImportSummary.reference() enrollmentImportHandler.handleEnrollmentImportSummary( importSummaries, @@ -128,7 +136,7 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( teiState, fileResources ) - } + } ?: EnrollmentWebResponseHandlerSummary() } private fun storeTEIImportConflicts(teiImportSummary: TEIImportSummary) { @@ -167,8 +175,8 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( processedTEIs: List, instances: List, fileResources: List - ) { - instances.filterNot { processedTEIs.contains(it.uid()) }.forEach { instance -> + ): List { + return instances.filterNot { processedTEIs.contains(it.uid()) }.onEach { instance -> trackerImportConflictStore.deleteTrackedEntityConflicts(instance.uid()) trackedEntityInstanceStore.setSyncStateOrDelete(instance.uid(), State.TO_UPDATE) resetNestedDataStates(instance, fileResources) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt index 50d0c91293..2c8345ba7e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerImpl.kt @@ -32,7 +32,9 @@ import io.reactivex.Completable import java.util.* import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.arch.repositories.scope.RepositoryScope import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode @@ -75,6 +77,26 @@ internal class OwnershipManagerImpl @Inject constructor( } } + internal fun fakeBreakGlass(trackedEntityInstance: String, program: String) { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(ProgramTempOwnerTableInfo.Columns.TRACKED_ENTITY_INSTANCE, trackedEntityInstance) + .appendKeyStringValue(ProgramTempOwnerTableInfo.Columns.PROGRAM, program) + .build() + + val mostRecent = programTempOwnerStore.selectWhere( + filterWhereClause = whereClause, + orderByClause = ProgramTempOwnerTableInfo.Columns.CREATED + " " + RepositoryScope.OrderByDirection.DESC, + limit = 1 + ) + + val previousReason = mostRecent.firstOrNull()?.reason() ?: "" + val fakeReason = "Android App sync: $previousReason" + + apiCallExecutor.executeObjectCall( + ownershipService.breakGlass(trackedEntityInstance, program, fakeReason) + ) + } + private fun getValidUntil(): Date { val calendar = Calendar.getInstance() calendar.time = Date() diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt similarity index 75% rename from core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.java rename to core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt index 5ea4abb008..f74150b1f1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt @@ -25,31 +25,29 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.user.internal -package org.hisp.dhis.android.core.user.internal; - -import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; -import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandler; -import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandlerImpl; -import org.hisp.dhis.android.core.organisationunit.OrganisationUnit; -import org.hisp.dhis.android.core.user.UserOrganisationUnitLink; - -import dagger.Module; -import dagger.Provides; -import dagger.Reusable; +import dagger.Module +import dagger.Provides +import dagger.Reusable +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandler +import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandlerImpl +import org.hisp.dhis.android.core.organisationunit.OrganisationUnit +import org.hisp.dhis.android.core.user.UserOrganisationUnitLink +import org.hisp.dhis.android.core.user.internal.UserOrganisationUnitLinkStoreImpl.Companion.create @Module -public final class UserOrganisationUnitLinkEntityDIModule { - +internal class UserOrganisationUnitLinkEntityDIModule { @Provides @Reusable - UserOrganisationUnitLinkStore store(DatabaseAdapter databaseAdapter) { - return UserOrganisationUnitLinkStoreImpl.create(databaseAdapter); + fun store(databaseAdapter: DatabaseAdapter): UserOrganisationUnitLinkStore { + return create(databaseAdapter) } @Provides @Reusable - LinkHandler handler(UserOrganisationUnitLinkStore store) { - return new LinkHandlerImpl<>(store); + fun handler(store: UserOrganisationUnitLinkStore): LinkHandler { + return LinkHandlerImpl(store) } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt similarity index 73% rename from core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.java rename to core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt index 4846e57ab3..f3988fb22e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt @@ -25,20 +25,18 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.user.internal -package org.hisp.dhis.android.core.user.internal; +import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore +import org.hisp.dhis.android.core.organisationunit.OrganisationUnit +import org.hisp.dhis.android.core.user.UserOrganisationUnitLink +import java.lang.RuntimeException +import kotlin.Throws -import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore; -import org.hisp.dhis.android.core.organisationunit.OrganisationUnit; -import org.hisp.dhis.android.core.user.UserOrganisationUnitLink; - -import java.util.List; - -public interface UserOrganisationUnitLinkStore extends LinkStore { - - List queryRootCaptureOrganisationUnitUids() throws RuntimeException; - - List queryOrganisationUnitUidsByScope(OrganisationUnit.Scope scope); - - List queryAssignedOrganisationUnitUidsByScope(OrganisationUnit.Scope scope); +internal interface UserOrganisationUnitLinkStore : LinkStore { + @Throws(RuntimeException::class) + fun queryRootCaptureOrganisationUnitUids(): List + fun queryOrganisationUnitUidsByScope(scope: OrganisationUnit.Scope): List + fun queryAssignedOrganisationUnitUidsByScope(scope: OrganisationUnit.Scope): List + fun isCaptureScope(organisationUnit: String): Boolean } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.java deleted file mode 100644 index 6f239a14f7..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.user.internal; - -import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.SQLStatementBuilderImpl; -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder; -import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder; -import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStoreImpl; -import org.hisp.dhis.android.core.organisationunit.OrganisationUnit; -import org.hisp.dhis.android.core.user.UserOrganisationUnitLink; -import org.hisp.dhis.android.core.user.UserOrganisationUnitLinkTableInfo; -import org.hisp.dhis.android.core.user.UserOrganisationUnitLinkTableInfo.Columns; - -import java.util.List; - -public final class UserOrganisationUnitLinkStoreImpl extends LinkStoreImpl - implements UserOrganisationUnitLinkStore { - - private static final StatementBinder BINDER = (o, w) -> { - w.bind(1, o.user()); - w.bind(2, o.organisationUnit()); - w.bind(3, o.organisationUnitScope()); - w.bind(4, o.root()); - w.bind(5, o.userAssigned()); - }; - - private UserOrganisationUnitLinkStoreImpl(DatabaseAdapter databaseAdapter, - String masterColumn, - SQLStatementBuilderImpl builder, - StatementBinder binder) { - super(databaseAdapter, builder, masterColumn, binder, UserOrganisationUnitLink::create); - } - - public static UserOrganisationUnitLinkStore create(DatabaseAdapter databaseAdapter) { - SQLStatementBuilderImpl statementBuilder = - new SQLStatementBuilderImpl(UserOrganisationUnitLinkTableInfo.TABLE_INFO); - - return new UserOrganisationUnitLinkStoreImpl( - databaseAdapter, - Columns.ORGANISATION_UNIT_SCOPE, - statementBuilder, - BINDER); - } - - @Override - public List queryRootCaptureOrganisationUnitUids() throws RuntimeException { - return selectStringColumnsWhereClause(Columns.ORGANISATION_UNIT, - new WhereClauseBuilder() - .appendKeyNumberValue(Columns.ROOT, 1) - .appendKeyStringValue( - Columns.ORGANISATION_UNIT_SCOPE, - OrganisationUnit.Scope.SCOPE_DATA_CAPTURE - ).build()); - } - - @Override - public List queryOrganisationUnitUidsByScope(OrganisationUnit.Scope scope) { - return selectStringColumnsWhereClause(Columns.ORGANISATION_UNIT, - new WhereClauseBuilder() - .appendKeyStringValue( - Columns.ORGANISATION_UNIT_SCOPE, - scope.name() - ).build()); - } - - @Override - public List queryAssignedOrganisationUnitUidsByScope(OrganisationUnit.Scope scope) { - return selectStringColumnsWhereClause(Columns.ORGANISATION_UNIT, - new WhereClauseBuilder() - .appendKeyNumberValue(Columns.USER_ASSIGNED, 1) - .appendKeyStringValue( - Columns.ORGANISATION_UNIT_SCOPE, - scope.name() - ).build()); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt new file mode 100644 index 0000000000..50cbd38406 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.user.internal + +import android.database.Cursor +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.SQLStatementBuilderImpl +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder +import org.hisp.dhis.android.core.user.UserOrganisationUnitLink +import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStoreImpl +import kotlin.Throws +import org.hisp.dhis.android.core.user.UserOrganisationUnitLinkTableInfo +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper +import org.hisp.dhis.android.core.organisationunit.OrganisationUnit +import java.lang.RuntimeException + +internal class UserOrganisationUnitLinkStoreImpl private constructor( + databaseAdapter: DatabaseAdapter, + masterColumn: String, + builder: SQLStatementBuilderImpl, + binder: StatementBinder +) : LinkStoreImpl( + databaseAdapter, + builder, + masterColumn, + binder, + { cursor: Cursor -> UserOrganisationUnitLink.create(cursor) }), UserOrganisationUnitLinkStore { + + @Throws(RuntimeException::class) + override fun queryRootCaptureOrganisationUnitUids(): List { + return selectStringColumnsWhereClause( + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT, + WhereClauseBuilder() + .appendKeyNumberValue(UserOrganisationUnitLinkTableInfo.Columns.ROOT, 1) + .appendKeyStringValue( + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT_SCOPE, + OrganisationUnit.Scope.SCOPE_DATA_CAPTURE + ).build() + ) + } + + override fun queryOrganisationUnitUidsByScope(scope: OrganisationUnit.Scope): List { + return selectStringColumnsWhereClause( + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT, + WhereClauseBuilder() + .appendKeyStringValue( + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT_SCOPE, + scope.name + ).build() + ) + } + + override fun queryAssignedOrganisationUnitUidsByScope(scope: OrganisationUnit.Scope): List { + return selectStringColumnsWhereClause( + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT, + WhereClauseBuilder() + .appendKeyNumberValue(UserOrganisationUnitLinkTableInfo.Columns.USER_ASSIGNED, 1) + .appendKeyStringValue( + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT_SCOPE, + scope.name + ).build() + ) + } + + override fun isCaptureScope(organisationUnit: String): Boolean { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT, organisationUnit) + .appendKeyStringValue( + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT_SCOPE, + OrganisationUnit.Scope.SCOPE_DATA_CAPTURE + ) + .build() + + return countWhere(whereClause) == 1 + } + + companion object { + private val BINDER = + StatementBinder { o: UserOrganisationUnitLink, w: StatementWrapper -> + w.bind(1, o.user()) + w.bind(2, o.organisationUnit()) + w.bind(3, o.organisationUnitScope()) + w.bind(4, o.root()) + w.bind(5, o.userAssigned()) + } + + @JvmStatic + fun create(databaseAdapter: DatabaseAdapter): UserOrganisationUnitLinkStore { + val statementBuilder = SQLStatementBuilderImpl(UserOrganisationUnitLinkTableInfo.TABLE_INFO) + return UserOrganisationUnitLinkStoreImpl( + databaseAdapter, + UserOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT_SCOPE, + statementBuilder, + BINDER + ) + } + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt index 64d4eed352..910f588e01 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt @@ -27,6 +27,7 @@ */ package org.hisp.dhis.android.core.enrollment.internal +import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.* import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction @@ -143,4 +144,20 @@ class EnrollmentImportHandlerShould { verify(enrollmentStore, times(1)).setSyncStateOrDelete(enrollmentUid, State.SYNCED) verify(enrollmentStore, times(1)).setSyncStateOrDelete("missing_enrollment_uid", State.TO_UPDATE) } + + @Test + fun return_enrollments_not_present_in_the_response() { + whenever(importSummary.status()).thenReturn(ImportStatus.SUCCESS) + whenever(importSummary.reference()).thenReturn(enrollmentUid) + + val enrollments = listOf(enrollment, missingEnrollment) + whenever(missingEnrollment.uid()).thenReturn("missing_enrollment_uid") + + val response = enrollmentImportHandler.handleEnrollmentImportSummary( + listOf(importSummary), enrollments, teiState, emptyList() + ) + + assertThat(response.ignoredEnrollments.size).isEqualTo(1) + assertThat(response.ignoredEnrollments.first().uid()).isEqualTo("missing_enrollment_uid") + } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt index 6a9e16a7e2..42d75f3dd5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt @@ -27,6 +27,7 @@ */ package org.hisp.dhis.android.core.trackedentity.internal +import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.* import java.util.* import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore @@ -167,6 +168,22 @@ class TrackedEntityInstanceImportHandlerShould { verify(trackedEntityInstanceStore, times(1)).setSyncStateOrDelete("missing_tei_uid", State.TO_UPDATE) } + @Test + fun return_tracked_entity_instances_not_present_in_the_response() { + whenever(importSummary.status()).doReturn(ImportStatus.SUCCESS) + whenever(importSummary.reference()).doReturn(sampleTeiUid) + + val instances = listOf(trackedEntityInstance) + whenever(trackedEntityInstance.uid()).thenReturn("missing_tei_uid") + + val response = trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( + listOf(importSummary), instances, emptyList() + ) + + assertThat(response.ignoredTeis.size).isEqualTo(1) + assertThat(response.ignoredTeis.first().uid()).isEqualTo("missing_tei_uid") + } + @Test fun mark_file_resources_as_synced_if_success() { whenever(importSummary.status()).doReturn(ImportStatus.SUCCESS) diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt index fcb27d87d5..4c7913351b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt @@ -50,7 +50,7 @@ class OwnershipManagerShould { private val httpResponse: HttpMessageResponse = mock() private val call: Call = mock() - private lateinit var ownershipManager: OwnershipManager + private lateinit var ownershipManager: OwnershipManagerImpl @Before fun setUp() { @@ -83,4 +83,12 @@ class OwnershipManagerShould { verifyNoMoreInteractions(programTempOwnerStore) } + + @Test + fun do_not_persist_program_temp_owner_on_fake_break_glass() { + ownershipManager.fakeBreakGlass("tei_uid", "program_uid") + + verify(programTempOwnerStore).selectWhere(any(), any(), any()) + verifyNoMoreInteractions(programTempOwnerStore) + } } From 3d45948b2bd077973838bace7b717651354b4e14 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 8 Mar 2022 10:38:15 +0100 Subject: [PATCH 138/253] [ANDROSDK-1505] Handle fileResource state when retrying breakTheGlass --- .../internal/EnrollmentImportHandler.kt | 68 ++++++--------- .../core/event/internal/EventImportHandler.kt | 50 ++++------- .../core/event/internal/OldEventPostCall.kt | 11 +-- .../internal/FileResourceHelper.kt | 43 +++++++++- .../imports/internal/TEIWebResponseHandler.kt | 7 +- .../internal/TEIWebResponseHandlerSummary.kt | 48 ++++++++++- .../OldTrackedEntityInstancePostCall.kt | 3 +- ...OldTrackerImporterFileResourcesPostCall.kt | 9 ++ .../internal/OldTrackerImporterPostCall.kt | 21 +++-- .../TrackedEntityInstanceImportHandler.kt | 82 +++++-------------- .../internal/EnrollmentImportHandlerShould.kt | 25 ++---- .../internal/EventImportHandlerShould.kt | 78 ++---------------- .../internal/EventQueryBundleFactoryShould.kt | 3 +- ...rackedEntityInstanceImportHandlerShould.kt | 82 +++---------------- 14 files changed, 204 insertions(+), 326 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt index 89e0fc8952..5d87c7a696 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt @@ -28,9 +28,6 @@ package org.hisp.dhis.android.core.enrollment.internal import dagger.Reusable -import java.util.* -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.db.stores.internal.StoreUtils.getSyncState import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State @@ -40,15 +37,15 @@ import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.internal.EventImportHandler -import org.hisp.dhis.android.core.fileresource.FileResource -import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.TrackerImportConflict import org.hisp.dhis.android.core.imports.internal.BaseImportSummaryHelper.getReferences import org.hisp.dhis.android.core.imports.internal.EnrollmentImportSummary -import org.hisp.dhis.android.core.imports.internal.EnrollmentWebResponseHandlerSummary +import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.tracker.importer.internal.JobReportEnrollmentHandler +import java.util.* +import javax.inject.Inject @Reusable internal class EnrollmentImportHandler @Inject constructor( @@ -57,18 +54,15 @@ internal class EnrollmentImportHandler @Inject constructor( private val trackerImportConflictStore: TrackerImportConflictStore, private val trackerImportConflictParser: TrackerImportConflictParser, private val jobReportEnrollmentHandler: JobReportEnrollmentHandler, - private val dataStatePropagator: DataStatePropagator, - private val fileResourceStore: IdentifiableDataObjectStore, - private val fileResourceHelper: FileResourceHelper + private val dataStatePropagator: DataStatePropagator ) { fun handleEnrollmentImportSummary( enrollmentImportSummaries: List?, enrollments: List, - teiState: State, - fileResources: List - ): EnrollmentWebResponseHandlerSummary { - val summary = EnrollmentWebResponseHandlerSummary() + teiState: State + ): TEIWebResponseHandlerSummary { + val summary = TEIWebResponseHandlerSummary() enrollmentImportSummaries?.filterNotNull()?.forEach { enrollmentImportSummary -> enrollmentImportSummary.reference()?.let { enrollmentUid -> @@ -81,12 +75,16 @@ internal class EnrollmentImportHandler @Inject constructor( val handleAction = enrollmentStore.setSyncStateOrDelete(enrollmentUid, syncState) if (syncState == State.ERROR || syncState == State.WARNING) { - resetNestedDataStates(enrollment, fileResources) + resetNestedDataStates(enrollment) + enrollment?.let { summary.enrollments.error.add(it) } + } else { + enrollment?.let { summary.enrollments.success.add(it) } } if (handleAction !== HandleAction.Delete) { storeEnrollmentImportConflicts(enrollmentImportSummary, teiUid) - handleEventImportSummaries(enrollmentImportSummary, enrollments, fileResources) + val evSummary = handleEventImportSummaries(enrollmentImportSummary, enrollments) + summary.add(evSummary) dataStatePropagator.refreshEnrollmentAggregatedSyncState(enrollmentUid) } @@ -98,8 +96,8 @@ internal class EnrollmentImportHandler @Inject constructor( } } - val ignored = processIgnoredEnrollments(enrollmentImportSummaries, enrollments, teiState, fileResources) - summary.ignoredEnrollments.addAll(ignored) + val ignored = processIgnoredEnrollments(enrollmentImportSummaries, enrollments, teiState) + summary.enrollments.ignored.addAll(ignored) val teiUids = enrollments.mapNotNull { it.trackedEntityInstance() }.distinct() @@ -112,17 +110,15 @@ internal class EnrollmentImportHandler @Inject constructor( private fun handleEventImportSummaries( enrollmentImportSummary: EnrollmentImportSummary, - enrollments: List, - fileResources: List - ) { - enrollmentImportSummary.events()?.importSummaries()?.let { importSummaries -> + enrollments: List + ): TEIWebResponseHandlerSummary { + return enrollmentImportSummary.events()?.importSummaries()?.let { importSummaries -> val enrollmentUid = enrollmentImportSummary.reference()!! eventImportHandler.handleEventImportSummaries( importSummaries, - getEvents(enrollmentUid, enrollments), - fileResources + getEvents(enrollmentUid, enrollments) ) - } + } ?: TEIWebResponseHandlerSummary() } private fun storeEnrollmentImportConflicts( @@ -154,8 +150,7 @@ internal class EnrollmentImportHandler @Inject constructor( private fun processIgnoredEnrollments( enrollmentImportSummaries: List?, enrollments: List, - teiState: State, - fileResources: List + teiState: State ): List { val processedEnrollments = getReferences(enrollmentImportSummaries) @@ -168,33 +163,16 @@ internal class EnrollmentImportHandler @Inject constructor( trackerImportConflictStore.deleteEnrollmentConflicts(enrollment.uid()) enrollmentStore.setSyncStateOrDelete(enrollment.uid(), state) - resetNestedDataStates(enrollment, fileResources) + resetNestedDataStates(enrollment) if (state == State.SYNCED) null else enrollment } } - private fun resetNestedDataStates(enrollment: Enrollment?, fileResources: List) { + private fun resetNestedDataStates(enrollment: Enrollment?) { enrollment?.let { dataStatePropagator.resetUploadingEventStates(enrollment.uid()) - setEventFileResourcesState(enrollment, fileResources, State.TO_POST) - } - } - - private fun setEventFileResourcesState( - enrollment: Enrollment?, - fileResources: List, - state: State - ) { - enrollment?.let { - val dataValues = EnrollmentInternalAccessor.accessEvents(enrollment) - .filterNotNull() - .flatMap { it.trackedEntityDataValues() ?: emptyList() } - - fileResources.filter { fileResourceHelper.isPresentInDataValues(it, dataValues) }.forEach { - fileResourceStore.setSyncStateIfUploading(it, state) - } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt index 861051477d..4c067993a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt @@ -28,9 +28,6 @@ package org.hisp.dhis.android.core.event.internal import dagger.Reusable -import java.util.* -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.db.stores.internal.StoreUtils.getSyncState import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State @@ -38,15 +35,16 @@ import org.hisp.dhis.android.core.common.internal.DataStatePropagator import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.EventTableInfo -import org.hisp.dhis.android.core.fileresource.FileResource -import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.TrackerImportConflict import org.hisp.dhis.android.core.imports.internal.BaseImportSummaryHelper.getReferences import org.hisp.dhis.android.core.imports.internal.EventImportSummary +import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueStore import org.hisp.dhis.android.core.tracker.importer.internal.JobReportEventHandler +import java.util.* +import javax.inject.Inject @Reusable internal class EventImportHandler @Inject constructor( @@ -56,16 +54,15 @@ internal class EventImportHandler @Inject constructor( private val trackerImportConflictParser: TrackerImportConflictParser, private val jobReportEventHandler: JobReportEventHandler, private val dataStatePropagator: DataStatePropagator, - private val trackedEntityDataValueStore: TrackedEntityDataValueStore, - private val fileResourceStore: IdentifiableDataObjectStore, - private val fileResourceHelper: FileResourceHelper + private val trackedEntityDataValueStore: TrackedEntityDataValueStore ) { fun handleEventImportSummaries( eventImportSummaries: List?, - events: List, - fileResources: List - ) { + events: List + ): TEIWebResponseHandlerSummary { + val summary = TEIWebResponseHandlerSummary() + eventImportSummaries?.filterNotNull()?.forEach { eventImportSummary -> eventImportSummary.reference()?.let { eventUid -> val enrollmentUid = events.find { it.uid() == eventUid }?.enrollment() @@ -77,9 +74,9 @@ internal class EventImportHandler @Inject constructor( val handleAction = eventStore.setSyncStateOrDelete(eventUid, state) if (state == State.ERROR || state == State.WARNING) { - setEventFileResourceStates(event, fileResources, State.TO_POST) + event?.let { summary.events.error.add(it) } } else { - setEventFileResourceStates(event, fileResources, State.SYNCED) + event?.let { summary.events.success.add(it) } } if (handleAction !== HandleAction.Delete) { @@ -95,7 +92,8 @@ internal class EventImportHandler @Inject constructor( } } - processIgnoredEvents(eventImportSummaries, events, fileResources) + val ignoredEvents = processIgnoredEvents(eventImportSummaries, events) + summary.events.ignored.addAll(ignoredEvents) val enrollmentUids = events.mapNotNull { it.enrollment() }.distinct() val teiUids = enrollmentUids.mapNotNull { enrollmentStore.selectByUid(it)?.trackedEntityInstance() }.distinct() @@ -107,20 +105,20 @@ internal class EventImportHandler @Inject constructor( teiUids.forEach { dataStatePropagator.refreshTrackedEntityInstanceAggregatedSyncState(it) } + + return summary } private fun processIgnoredEvents( eventImportSummaries: List?, - events: List, - fileResources: List - ) { + events: List + ): List { val processedEvents = getReferences(eventImportSummaries) - events.filterNot { processedEvents.contains(it.uid()) }.forEach { event -> + return events.filterNot { processedEvents.contains(it.uid()) }.onEach { event -> val state = State.TO_UPDATE trackerImportConflictStore.deleteEventConflicts(event.uid()) eventStore.setSyncStateOrDelete(event.uid(), state) - setEventFileResourceStates(event, fileResources, State.TO_POST) } } @@ -158,20 +156,6 @@ internal class EventImportHandler @Inject constructor( trackerImportConflicts.forEach { trackerImportConflictStore.insert(it) } } - private fun setEventFileResourceStates( - event: Event?, - fileResources: List, - state: State - ) { - event?.let { - val dataValues = event.trackedEntityDataValues() - - fileResources.filter { fileResourceHelper.isPresentInDataValues(it, dataValues) }.forEach { - fileResourceStore.setSyncStateIfUploading(it, state) - } - } - } - private fun getConflictBuilder( enrollmentUid: String?, eventImportSummary: EventImportSummary diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt index e65c9fdc60..e01f7271e0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt @@ -87,7 +87,10 @@ internal class OldEventPostCall @Inject internal constructor( listOf(409), EventWebResponse::class.java ) - handleWebResponse(webResponse, validEvents.items, validEvents.fileResources) + handleWebResponse(webResponse, validEvents.items) + + fileResourcePostCall.updateFileResourceStates(validEvents.fileResources) + Observable.just(progressManager.increaseProgress(Event::class.java, true)) } catch (e: Exception) { trackerPostStateManager.restorePayloadStates( @@ -101,13 +104,11 @@ internal class OldEventPostCall @Inject internal constructor( private fun handleWebResponse( webResponse: EventWebResponse?, - events: List, - fileResources: List + events: List ) { eventImportHandler.handleEventImportSummaries( webResponse?.response()?.importSummaries(), - events, - fileResources + events ) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt index ec6f81f031..e91150febf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt @@ -27,15 +27,26 @@ */ package org.hisp.dhis.android.core.fileresource.internal -import javax.inject.Inject +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore +import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.dataelement.DataElement +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.event.internal.EventStore import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.trackedentity.* +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityAttributeValueStore +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueStore +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore +import javax.inject.Inject internal class FileResourceHelper @Inject constructor( private val dataElementStore: IdentifiableObjectStore, - private val attributeStore: IdentifiableObjectStore + private val attributeStore: IdentifiableObjectStore, + private val trackedEntityDataValueStore: TrackedEntityDataValueStore, + private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore, + private val eventStore: EventStore, + private val trackedEntityInstanceStore: TrackedEntityInstanceStore ) { fun isPresentInDataValues(fileResourceUid: String, dataValues: Collection?): Boolean { @@ -89,6 +100,34 @@ internal class FileResourceHelper @Inject constructor( } } + fun getRelatedResourceState(fileResourceUid: String): State { + return getRelatedEvent(fileResourceUid)?.syncState() + ?: getRelatedTei(fileResourceUid)?.syncState() + ?: State.TO_POST + } + + private fun getRelatedEvent(fileResourceUid: String): Event? { + val candidates = trackedEntityDataValueStore.selectWhere( + WhereClauseBuilder() + .appendKeyStringValue(TrackedEntityDataValueTableInfo.Columns.VALUE, fileResourceUid) + .build() + ) + val dataValue = candidates.find { isFileDataElement(it.dataElement()) } + + return dataValue?.event()?.let { eventStore.selectByUid(it) } + } + + private fun getRelatedTei(fileResourceUid: String): TrackedEntityInstance? { + val candidates = trackedEntityAttributeValueStore.selectWhere( + WhereClauseBuilder() + .appendKeyStringValue(TrackedEntityAttributeValueTableInfo.Columns.VALUE, fileResourceUid) + .build() + ) + val attributeValue = candidates.find { isFileAttribute(it.trackedEntityAttribute()) } + + return attributeValue?.trackedEntityInstance()?.let { trackedEntityInstanceStore.selectByUid(it) } + } + private fun isFileDataElement(dataElementUid: String?): Boolean { return dataElementUid?.let { dataElementStore.selectByUid(it)?.valueType()?.isFile } ?: false } diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt index a83af2d6a0..71770a4b16 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt @@ -28,9 +28,9 @@ package org.hisp.dhis.android.core.imports.internal import dagger.Reusable -import javax.inject.Inject import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceImportHandler +import javax.inject.Inject @Reusable internal class TEIWebResponseHandler @Inject constructor( @@ -39,12 +39,11 @@ internal class TEIWebResponseHandler @Inject constructor( fun handleWebResponse( webResponse: TEIWebResponse?, - instances: List, - fileResources: List + instances: List ): TEIWebResponseHandlerSummary { return webResponse?.response()?.let { response -> trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - response.importSummaries(), instances, fileResources + response.importSummaries(), instances ) } ?: TEIWebResponseHandlerSummary() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt index 23848cabbd..86835c62b7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt @@ -27,10 +27,52 @@ */ package org.hisp.dhis.android.core.imports.internal +import org.hisp.dhis.android.core.common.ObjectWithUidInterface import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance internal data class TEIWebResponseHandlerSummary( - val ignoredTeis: MutableList = mutableListOf(), - val ignoredEnrollments: MutableList = mutableListOf() -) \ No newline at end of file + val teis: TrackerResponseHandlerSummary = TrackerResponseHandlerSummary(), + val enrollments: TrackerResponseHandlerSummary = TrackerResponseHandlerSummary(), + val events: TrackerResponseHandlerSummary = TrackerResponseHandlerSummary() +) { + fun add(other: TEIWebResponseHandlerSummary) { + teis.add(other.teis) + enrollments.add(other.enrollments) + events.add(other.events) + } + + fun update(other: TEIWebResponseHandlerSummary) { + teis.update(other.teis) + enrollments.update(other.enrollments) + events.update(other.events) + } +} + +internal data class TrackerResponseHandlerSummary( + val success: MutableList = mutableListOf(), + val error: MutableList = mutableListOf(), + val ignored: MutableList = mutableListOf() +) { + fun add(other: TrackerResponseHandlerSummary) { + success.addAll(other.success) + error.addAll(other.error) + ignored.addAll(other.ignored) + } + + fun update(other: TrackerResponseHandlerSummary) { + val updatedIds = (other.success + other.ignored + other.error).map { it.uid() } + + val updatedSuccess = success.filter { updatedIds.contains(it.uid()) } + success.removeAll(updatedSuccess) + + val updatedError = error.filter { updatedIds.contains(it.uid()) } + error.removeAll(updatedError) + + val updatedIgnored = ignored.filter { updatedIds.contains(it.uid()) } + ignored.removeAll(updatedIgnored) + + add(other) + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt index f1cdf5bc61..16384523d6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt @@ -91,7 +91,8 @@ internal class OldTrackedEntityInstancePostCall @Inject internal constructor( listOf(409), TEIWebResponse::class.java ) - teiWebResponseHandler.handleWebResponse(webResponse, thisPartition, partition.fileResources) + teiWebResponseHandler.handleWebResponse(webResponse, thisPartition) + fileResourcePostCall.updateFileResourceStates(partition.fileResources) emitter.onNext(progressManager.increaseProgress(TrackedEntityInstance::class.java, false)) } catch (e: Exception) { stateManager.restorePayloadStates( diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt index 8ba474a5c6..ef1cd669be 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt @@ -31,6 +31,7 @@ import dagger.Reusable import io.reactivex.Single import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore +import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.Enrollment import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor import org.hisp.dhis.android.core.event.Event @@ -155,6 +156,14 @@ internal class OldTrackerImporterFileResourcesPostCall @Inject internal construc ) } + fun updateFileResourceStates(fileResources: List) { + fileResources.forEach { fr -> + val relatedState = fileResourceHelper.getRelatedResourceState(fr) + val state = if (relatedState == State.SYNCED) State.SYNCED else State.TO_POST + fileResourceStore.setSyncStateIfUploading(fr, state) + } + } + @Suppress("TooGenericExceptionCaught") private fun catchErrorToNull(f: () -> T): T? { return try { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt index 5a03e8e2ce..9f0459edfd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt @@ -111,14 +111,18 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( for (partition in teiPartitions) { try { - val summary = postPartition(partition.items, partition.fileResources) + val summary = postPartition(partition.items) val glassErrors = getGlassProtectedErrors(summary, partition.items) if (glassErrors.isNotEmpty()) { fakeBreakGlass(glassErrors) - postPartition(glassErrors, partition.fileResources) + val breakGlassSummary = postPartition(glassErrors) + + summary.update(breakGlassSummary) } + fileResourcePostCall.updateFileResourceStates(partition.fileResources) + emitter.onNext(progressManager.increaseProgress(TrackedEntityInstance::class.java, false)) } catch (e: Exception) { trackerStateManager.restorePayloadStates( @@ -143,8 +147,7 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( } private fun postPartition( - trackedEntityInstances: List, - fileResources: List + trackedEntityInstances: List ): TEIWebResponseHandlerSummary { trackerStateManager.setPayloadStates( trackedEntityInstances = trackedEntityInstances, @@ -159,14 +162,14 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( listOf(HTTP_CONFLICT), TEIWebResponse::class.java ) - return teiWebResponseHandler.handleWebResponse(webResponse, trackedEntityInstances, fileResources) + return teiWebResponseHandler.handleWebResponse(webResponse, trackedEntityInstances) } private fun getGlassProtectedErrors( summary: TEIWebResponseHandlerSummary, instances: List ): List { - return summary.ignoredEnrollments.filter { enrollment -> + return summary.enrollments.ignored.filter { enrollment -> isProtectedProgram(enrollment.program()) && isNotCaptureScope(enrollment.organisationUnit()) }.mapNotNull { enrollment -> instances.mapNotNull { tei -> @@ -230,9 +233,11 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( ) eventImportHandler.handleEventImportSummaries( eventImportSummaries = webResponse?.response()?.importSummaries(), - events = payload.events, - fileResources = validEvents.fileResources + events = payload.events ) + + fileResourcePostCall.updateFileResourceStates(validEvents.fileResources) + Observable.just(progressManager.increaseProgress(Event::class.java, true)) } catch (e: Exception) { trackerStateManager.restorePayloadStates( diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt index e18d4314d1..8fe2403f87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt @@ -28,21 +28,14 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable -import java.util.* -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.db.stores.internal.StoreUtils.getSyncState import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.common.internal.DataStatePropagator import org.hisp.dhis.android.core.enrollment.Enrollment -import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor import org.hisp.dhis.android.core.enrollment.internal.EnrollmentImportHandler -import org.hisp.dhis.android.core.fileresource.FileResource -import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.TrackerImportConflict -import org.hisp.dhis.android.core.imports.internal.* -import org.hisp.dhis.android.core.imports.internal.EnrollmentWebResponseHandlerSummary +import org.hisp.dhis.android.core.imports.internal.TEIImportSummary import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore @@ -53,9 +46,10 @@ import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo +import java.util.* +import javax.inject.Inject @Reusable -@Suppress("LongParameterList", "TooManyFunctions") internal class TrackedEntityInstanceImportHandler @Inject internal constructor( private val trackedEntityInstanceStore: TrackedEntityInstanceStore, private val enrollmentImportHandler: EnrollmentImportHandler, @@ -65,9 +59,7 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( private val dataStatePropagator: DataStatePropagator, private val relationshipDHISVersionManager: RelationshipDHISVersionManager, private val relationshipRepository: RelationshipCollectionRepository, - private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore, - private val fileResourceStore: IdentifiableDataObjectStore, - private val fileResourceHelper: FileResourceHelper + private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore ) { private val alreadyDeletedInServerRegex = @@ -75,8 +67,7 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( fun handleTrackedEntityInstanceImportSummaries( teiImportSummaries: List?, - instances: List, - fileResources: List + instances: List ): TEIWebResponseHandlerSummary { val summary = TEIWebResponseHandlerSummary() val processedTeis = mutableListOf() @@ -94,16 +85,17 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( val handleAction = trackedEntityInstanceStore.setSyncStateOrDelete(teiUid, state) if (state == State.ERROR || state == State.WARNING) { - resetNestedDataStates(instance, fileResources) + resetNestedDataStates(instance) + instance?.let { summary.teis.error.add(it) } } else { setRelationshipsState(teiUid, State.SYNCED) - setTEIFileResourcesState(instance, fileResources, State.SYNCED) + instance?.let { summary.teis.success.add(it) } } if (handleAction !== HandleAction.Delete) { storeTEIImportConflicts(teiImportSummary) - val enSummary = handleEnrollmentImportSummaries(teiImportSummary, instances, state, fileResources) - summary.ignoredEnrollments.addAll(enSummary.ignoredEnrollments) + val enSummary = handleEnrollmentImportSummaries(teiImportSummary, instances, state) + summary.add(enSummary) dataStatePropagator.refreshTrackedEntityInstanceAggregatedSyncState(teiUid) } @@ -115,9 +107,9 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( } } - val ignoredTeis = processIgnoredTEIs(processedTeis, instances, fileResources) + val ignoredTeis = processIgnoredTEIs(processedTeis, instances) - summary.ignoredTeis.addAll(ignoredTeis) + summary.teis.ignored.addAll(ignoredTeis) return summary } @@ -125,18 +117,16 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( private fun handleEnrollmentImportSummaries( teiImportSummary: TEIImportSummary, instances: List, - teiState: State, - fileResources: List - ): EnrollmentWebResponseHandlerSummary { + teiState: State + ): TEIWebResponseHandlerSummary { return teiImportSummary.enrollments()?.importSummaries()?.let { importSummaries -> val teiUid = teiImportSummary.reference() enrollmentImportHandler.handleEnrollmentImportSummary( importSummaries, getEnrollments(teiUid, instances), - teiState, - fileResources + teiState ) - } ?: EnrollmentWebResponseHandlerSummary() + } ?: TEIWebResponseHandlerSummary() } private fun storeTEIImportConflicts(teiImportSummary: TEIImportSummary) { @@ -173,53 +163,19 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( private fun processIgnoredTEIs( processedTEIs: List, - instances: List, - fileResources: List + instances: List ): List { return instances.filterNot { processedTEIs.contains(it.uid()) }.onEach { instance -> trackerImportConflictStore.deleteTrackedEntityConflicts(instance.uid()) trackedEntityInstanceStore.setSyncStateOrDelete(instance.uid(), State.TO_UPDATE) - resetNestedDataStates(instance, fileResources) + resetNestedDataStates(instance) } } - private fun resetNestedDataStates(instance: TrackedEntityInstance?, fileResources: List) { + private fun resetNestedDataStates(instance: TrackedEntityInstance?) { instance?.let { dataStatePropagator.resetUploadingEnrollmentAndEventStates(instance.uid()) setRelationshipsState(instance.uid(), State.TO_UPDATE) - setTEIFileResourcesState(instance, fileResources, State.TO_POST) - setEventFileResourcesState(instance, fileResources, State.TO_POST) - } - } - - private fun setTEIFileResourcesState( - instance: TrackedEntityInstance?, - fileResources: List, - state: State - ) { - instance?.let { - val attributeValues = instance.trackedEntityAttributeValues() - - fileResources.filter { fileResourceHelper.isPresentInAttributeValues(it, attributeValues) }.forEach { - fileResourceStore.setSyncStateIfUploading(it, state) - } - } - } - - private fun setEventFileResourcesState( - instance: TrackedEntityInstance?, - fileResources: List, - state: State - ) { - instance?.let { - val dataValues = TrackedEntityInstanceInternalAccessor.accessEnrollments(instance) - ?.flatMap { EnrollmentInternalAccessor.accessEvents(it) } - ?.filterNotNull() - ?.flatMap { it.trackedEntityDataValues() ?: emptyList() } - - fileResources.filter { fileResourceHelper.isPresentInDataValues(it, dataValues) }.forEach { - fileResourceStore.setSyncStateIfUploading(it, state) - } } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt index 910f588e01..dec151f336 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt @@ -29,14 +29,11 @@ package org.hisp.dhis.android.core.enrollment.internal import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.* -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.common.internal.DataStatePropagator import org.hisp.dhis.android.core.enrollment.Enrollment import org.hisp.dhis.android.core.event.internal.EventImportHandler -import org.hisp.dhis.android.core.fileresource.FileResource -import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.ImportStatus import org.hisp.dhis.android.core.imports.internal.* import org.hisp.dhis.android.core.tracker.importer.internal.JobReportEnrollmentHandler @@ -66,10 +63,6 @@ class EnrollmentImportHandlerShould { private val dataStatePropagator: DataStatePropagator = mock() - private val fileResourceStore: IdentifiableDataObjectStore = mock() - - private val fileResourceHelper: FileResourceHelper = mock() - private val enrollment: Enrollment = mock() private val missingEnrollment: Enrollment = mock() @@ -88,7 +81,7 @@ class EnrollmentImportHandlerShould { fun setUp() { enrollmentImportHandler = EnrollmentImportHandler( enrollmentStore, eventImportHandler, trackerImportConflictStore, trackerImportConflictParser, - jobReportEnrollmentHandler, dataStatePropagator, fileResourceStore, fileResourceHelper + jobReportEnrollmentHandler, dataStatePropagator ) whenever(enrollment.trackedEntityInstance()).thenReturn("tei_uid") @@ -102,7 +95,7 @@ class EnrollmentImportHandlerShould { whenever(importSummary.status()).thenReturn(ImportStatus.SUCCESS) whenever(importSummary.reference()).thenReturn(enrollmentUid) - enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState, emptyList()) + enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState) verify(enrollmentStore, times(1)).setSyncStateOrDelete(enrollmentUid, State.SYNCED) } @@ -112,7 +105,7 @@ class EnrollmentImportHandlerShould { whenever(importSummary.status()).thenReturn(ImportStatus.ERROR) whenever(importSummary.reference()).thenReturn(enrollmentUid) - enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState, emptyList()) + enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState) verify(enrollmentStore, times(1)).setSyncStateOrDelete(enrollmentUid, State.ERROR) } @@ -126,9 +119,9 @@ class EnrollmentImportHandlerShould { val eventSummaries: List = listOf(eventSummary) whenever(importEvent.importSummaries()).thenReturn(eventSummaries) - enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState, emptyList()) + enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState) verify(enrollmentStore, times(1)).setSyncStateOrDelete(enrollmentUid, State.SYNCED) - verify(eventImportHandler, times(1)).handleEventImportSummaries(eq(eventSummaries), anyList(), anyList()) + verify(eventImportHandler, times(1)).handleEventImportSummaries(eq(eventSummaries), anyList()) } @Test @@ -139,7 +132,7 @@ class EnrollmentImportHandlerShould { val enrollments = listOf(enrollment, missingEnrollment) whenever(missingEnrollment.uid()).thenReturn("missing_enrollment_uid") - enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState, emptyList()) + enrollmentImportHandler.handleEnrollmentImportSummary(listOf(importSummary), enrollments, teiState) verify(enrollmentStore, times(1)).setSyncStateOrDelete(enrollmentUid, State.SYNCED) verify(enrollmentStore, times(1)).setSyncStateOrDelete("missing_enrollment_uid", State.TO_UPDATE) @@ -154,10 +147,10 @@ class EnrollmentImportHandlerShould { whenever(missingEnrollment.uid()).thenReturn("missing_enrollment_uid") val response = enrollmentImportHandler.handleEnrollmentImportSummary( - listOf(importSummary), enrollments, teiState, emptyList() + listOf(importSummary), enrollments, teiState ) - assertThat(response.ignoredEnrollments.size).isEqualTo(1) - assertThat(response.ignoredEnrollments.first().uid()).isEqualTo("missing_enrollment_uid") + assertThat(response.enrollments.ignored.size).isEqualTo(1) + assertThat(response.enrollments.ignored.first().uid()).isEqualTo("missing_enrollment_uid") } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt index d29278d1c9..6cef2839f2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt @@ -28,19 +28,14 @@ package org.hisp.dhis.android.core.event.internal import com.nhaarman.mockitokotlin2.* -import java.util.* -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.common.internal.DataStatePropagator import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.event.Event -import org.hisp.dhis.android.core.fileresource.FileResource -import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.ImportStatus import org.hisp.dhis.android.core.imports.internal.EventImportSummary import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore -import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueStore import org.hisp.dhis.android.core.tracker.importer.internal.JobReportEventHandler import org.junit.Before @@ -67,10 +62,6 @@ class EventImportHandlerShould { private val trackedEntityDataValueStore: TrackedEntityDataValueStore = mock() - private val fileResourceStore: IdentifiableDataObjectStore = mock() - - private val fileResourceHelper: FileResourceHelper = mock() - private val events: List = ArrayList() private val event: Event = mock() @@ -85,13 +76,13 @@ class EventImportHandlerShould { eventImportHandler = EventImportHandler( eventStore, enrollmentStore, trackerImportConflictStore, trackerImportConflictParser, jobReportEventHandler, - dataStatePropagator, trackedEntityDataValueStore, fileResourceStore, fileResourceHelper + dataStatePropagator, trackedEntityDataValueStore ) } @Test fun do_nothing_when_passing_null_argument() { - eventImportHandler.handleEventImportSummaries(null, events, emptyList()) + eventImportHandler.handleEventImportSummaries(null, events) verify(eventStore, never()).setSyncStateOrDelete(anyString(), any()) } @@ -101,7 +92,7 @@ class EventImportHandlerShould { whenever(importSummary.status()).thenReturn(ImportStatus.SUCCESS) whenever(importSummary.reference()).thenReturn("test_event_uid") - eventImportHandler.handleEventImportSummaries(listOf(importSummary), events, emptyList()) + eventImportHandler.handleEventImportSummaries(listOf(importSummary), events) verify(eventStore, times(1)).setSyncStateOrDelete("test_event_uid", State.SYNCED) } @@ -111,7 +102,7 @@ class EventImportHandlerShould { whenever(importSummary.status()).thenReturn(ImportStatus.ERROR) whenever(importSummary.reference()).thenReturn("test_event_uid") - eventImportHandler.handleEventImportSummaries(listOf(importSummary), events, emptyList()) + eventImportHandler.handleEventImportSummaries(listOf(importSummary), events) verify(eventStore, times(1)).setSyncStateOrDelete("test_event_uid", State.ERROR) } @@ -124,68 +115,9 @@ class EventImportHandlerShould { val events = listOf(event) whenever(event.uid()).thenReturn("missing_event_uid") - eventImportHandler.handleEventImportSummaries(listOf(importSummary), events, emptyList()) + eventImportHandler.handleEventImportSummaries(listOf(importSummary), events) verify(eventStore, times(1)).setSyncStateOrDelete("test_event_uid", State.SYNCED) verify(eventStore, times(1)).setSyncStateOrDelete("missing_event_uid", State.TO_UPDATE) } - - @Test - fun mark_file_resources_as_synced_if_success() { - whenever(importSummary.status()).doReturn(ImportStatus.SUCCESS) - whenever(importSummary.reference()).doReturn("test_event_uid") - - val events = listOf( - sampleEvent("test_event_uid", listOf(sampleDataValue("test_event_uid", "de1", "resource1"))) - ) - - whenever( - fileResourceHelper.isPresentInDataValues("resource1", events.first().trackedEntityDataValues()) - ).doReturn(true) - - eventImportHandler.handleEventImportSummaries( - listOf(importSummary), events, listOf("resource1", "resource2") - ) - - verify(eventStore, times(1)).setSyncStateOrDelete("test_event_uid", State.SYNCED) - verify(fileResourceStore, times(1)).setSyncStateIfUploading("resource1", State.SYNCED) - verifyNoMoreInteractions(fileResourceStore) - } - - @Test - fun mark_file_resources_as_to_post_if_failure() { - whenever(importSummary.status()).doReturn(ImportStatus.ERROR) - whenever(importSummary.reference()).doReturn("test_event_uid") - - val events = listOf( - sampleEvent("test_event_uid", listOf(sampleDataValue("test_event_uid", "de1", "resource1"))) - ) - - whenever( - fileResourceHelper.isPresentInDataValues("resource1", events.first().trackedEntityDataValues()) - ).doReturn(true) - - eventImportHandler.handleEventImportSummaries( - listOf(importSummary), events, listOf("resource1", "resource2") - ) - - verify(eventStore, times(1)).setSyncStateOrDelete("test_event_uid", State.ERROR) - verify(fileResourceStore, times(1)).setSyncStateIfUploading("resource1", State.TO_POST) - verifyNoMoreInteractions(fileResourceStore) - } - - private fun sampleEvent(uid: String, dataValues: List): Event { - return Event.builder() - .uid(uid) - .trackedEntityDataValues(dataValues) - .build() - } - - private fun sampleDataValue(event: String, dataElement: String, value: String): TrackedEntityDataValue { - return TrackedEntityDataValue.builder() - .event(event) - .dataElement(dataElement) - .value(value) - .build() - } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt index 1f8aa22a3a..88979d8d2c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt @@ -48,7 +48,6 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 -import org.mockito.ArgumentMatchers import org.mockito.MockitoAnnotations @RunWith(JUnit4::class) @@ -83,7 +82,7 @@ class EventQueryBundleFactoryShould { whenever(resourceHandler.getLastUpdated(any())).thenReturn(null) whenever(programStore.getUidsByProgramType(any())).thenReturn(programList) whenever(userOrganisationUnitLinkStore.queryRootCaptureOrganisationUnitUids()).thenReturn(rootOrgUnits) - whenever(userOrganisationUnitLinkStore.queryOrganisationUnitUidsByScope(ArgumentMatchers.any())) + whenever(userOrganisationUnitLinkStore.queryOrganisationUnitUidsByScope(any())) .thenReturn(captureOrgUnits) whenever(programSettingsObjectRepository.blockingGet()).thenReturn(programSettings) diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt index 42d75f3dd5..084c35ee5a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt @@ -29,14 +29,10 @@ package org.hisp.dhis.android.core.trackedentity.internal import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.* -import java.util.* -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.common.internal.DataStatePropagator import org.hisp.dhis.android.core.enrollment.internal.EnrollmentImportHandler -import org.hisp.dhis.android.core.fileresource.FileResource -import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper import org.hisp.dhis.android.core.imports.ImportStatus import org.hisp.dhis.android.core.imports.internal.* import org.hisp.dhis.android.core.relationship.RelationshipCollectionRepository @@ -77,10 +73,6 @@ class TrackedEntityInstanceImportHandlerShould { private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore = mock() - private val fileResourceStore: IdentifiableDataObjectStore = mock() - - private val fileResourceHelper: FileResourceHelper = mock() - private val trackedEntityInstance: TrackedEntityInstance = mock() private val instances: List = ArrayList() @@ -95,7 +87,7 @@ class TrackedEntityInstanceImportHandlerShould { trackedEntityInstanceImportHandler = TrackedEntityInstanceImportHandler( trackedEntityInstanceStore, enrollmentImportHandler, trackerImportConflictStore, trackerImportConflictParser, relationshipStore, dataStatePropagator, relationshipDHISVersionManager, - relationshipCollectionRepository, trackedEntityAttributeValueStore, fileResourceStore, fileResourceHelper + relationshipCollectionRepository, trackedEntityAttributeValueStore ) whenever(trackedEntityInstanceStore.setSyncStateOrDelete(any(), any())).doReturn(HandleAction.Update) @@ -103,7 +95,7 @@ class TrackedEntityInstanceImportHandlerShould { @Test fun do_nothing_when_passing_null_argument() { - trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries(null, instances, emptyList()) + trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries(null, instances) verify(trackedEntityInstanceStore, never()).setSyncStateOrDelete(anyString(), any()) } @@ -113,7 +105,7 @@ class TrackedEntityInstanceImportHandlerShould { whenever(importSummary.reference()).doReturn(sampleTeiUid) trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), instances, emptyList() + listOf(importSummary), instances ) verify(trackedEntityInstanceStore, times(1)) @@ -126,7 +118,7 @@ class TrackedEntityInstanceImportHandlerShould { whenever(importSummary.reference()).doReturn(sampleTeiUid) trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), instances, emptyList() + listOf(importSummary), instances ) verify(trackedEntityInstanceStore, times(1)) @@ -143,12 +135,12 @@ class TrackedEntityInstanceImportHandlerShould { whenever(importEnrollment.importSummaries()).doReturn(enrollmentSummaries) trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), instances, emptyList() + listOf(importSummary), instances ) verify(trackedEntityInstanceStore, times(1)).setSyncStateOrDelete(sampleTeiUid, State.SYNCED) verify(enrollmentImportHandler, times(1)).handleEnrollmentImportSummary( - eq(enrollmentSummaries), anyList(), eq(State.SYNCED), anyList() + eq(enrollmentSummaries), anyList(), eq(State.SYNCED) ) } @@ -161,7 +153,7 @@ class TrackedEntityInstanceImportHandlerShould { whenever(trackedEntityInstance.uid()).thenReturn("missing_tei_uid") trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), instances, emptyList() + listOf(importSummary), instances ) verify(trackedEntityInstanceStore, times(1)).setSyncStateOrDelete(sampleTeiUid, State.SYNCED) @@ -177,55 +169,11 @@ class TrackedEntityInstanceImportHandlerShould { whenever(trackedEntityInstance.uid()).thenReturn("missing_tei_uid") val response = trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), instances, emptyList() - ) - - assertThat(response.ignoredTeis.size).isEqualTo(1) - assertThat(response.ignoredTeis.first().uid()).isEqualTo("missing_tei_uid") - } - - @Test - fun mark_file_resources_as_synced_if_success() { - whenever(importSummary.status()).doReturn(ImportStatus.SUCCESS) - whenever(importSummary.reference()).doReturn(sampleTeiUid) - - val teis = listOf( - sampleTei(sampleTeiUid, listOf(sampleAttributeValue(sampleTeiUid, "att1", "resource1"))) - ) - - whenever( - fileResourceHelper.isPresentInAttributeValues("resource1", teis.first().trackedEntityAttributeValues()) - ).doReturn(true) - - trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), teis, listOf("resource1", "resource2") - ) - - verify(trackedEntityInstanceStore, times(1)).setSyncStateOrDelete(sampleTeiUid, State.SYNCED) - verify(fileResourceStore, times(1)).setSyncStateIfUploading("resource1", State.SYNCED) - verifyNoMoreInteractions(fileResourceStore) - } - - @Test - fun mark_file_resources_as_to_post_if_failure() { - whenever(importSummary.status()).doReturn(ImportStatus.ERROR) - whenever(importSummary.reference()).doReturn(sampleTeiUid) - - val teis = listOf( - sampleTei(sampleTeiUid, listOf(sampleAttributeValue(sampleTeiUid, "att1", "resource1"))) + listOf(importSummary), instances ) - whenever( - fileResourceHelper.isPresentInAttributeValues("resource1", teis.first().trackedEntityAttributeValues()) - ).doReturn(true) - - trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), teis, listOf("resource1", "resource2") - ) - - verify(trackedEntityInstanceStore, times(1)).setSyncStateOrDelete(sampleTeiUid, State.ERROR) - verify(fileResourceStore, times(1)).setSyncStateIfUploading("resource1", State.TO_POST) - verifyNoMoreInteractions(fileResourceStore) + assertThat(response.teis.ignored.size).isEqualTo(1) + assertThat(response.teis.ignored.first().uid()).isEqualTo("missing_tei_uid") } @Test @@ -241,20 +189,12 @@ class TrackedEntityInstanceImportHandlerShould { val teis = listOf(sampleTei(sampleTeiUid, emptyList())) trackedEntityInstanceImportHandler.handleTrackedEntityInstanceImportSummaries( - listOf(importSummary), teis, emptyList() + listOf(importSummary), teis ) verify(trackedEntityInstanceStore, times(1)).setSyncStateOrDelete(sampleTeiUid, State.SYNCED) } - private fun sampleAttributeValue(uid: String, attribute: String, value: String): TrackedEntityAttributeValue { - return TrackedEntityAttributeValue.builder() - .trackedEntityInstance(uid) - .trackedEntityAttribute(attribute) - .value(value) - .build() - } - private fun sampleTei(uid: String, attributeValues: List): TrackedEntityInstance { return TrackedEntityInstance.builder() .uid(uid) From 5f9f29c0aa4338db3ad76620d25d165092e4f92f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 8 Mar 2022 11:05:51 +0100 Subject: [PATCH 139/253] [ANDROSDK-1505] Modify handling of FileResources in NTI --- .../internal/JobReportEnrollmentHandler.kt | 9 +++----- .../internal/JobReportEventHandler.kt | 9 +++----- .../importer/internal/JobReportHandler.kt | 2 +- .../internal/JobReportRelationshipHandler.kt | 9 +++----- .../internal/JobReportTrackedEntityHandler.kt | 9 +++----- .../importer/internal/JobReportTypeHandler.kt | 14 +------------ .../TrackerImporterFileResourcesPostCall.kt | 21 ++++++++++++++++++- .../internal/TrackerImporterPostCall.kt | 3 ++- 8 files changed, 36 insertions(+), 40 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt index 109da7173b..81993211eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt @@ -28,21 +28,19 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable -import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.DataColumns import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore -import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.note.Note import org.hisp.dhis.android.core.note.NoteTableInfo import org.hisp.dhis.android.core.relationship.RelationshipHelper import org.hisp.dhis.android.core.relationship.internal.RelationshipStore +import javax.inject.Inject @Reusable internal class JobReportEnrollmentHandler @Inject internal constructor( @@ -50,9 +48,8 @@ internal class JobReportEnrollmentHandler @Inject internal constructor( private val enrollmentStore: EnrollmentStore, private val conflictStore: TrackerImportConflictStore, private val conflictHelper: TrackerConflictHelper, - relationshipStore: RelationshipStore, - fileResourceStore: IdentifiableDataObjectStore -) : JobReportTypeHandler(relationshipStore, fileResourceStore) { + relationshipStore: RelationshipStore +) : JobReportTypeHandler(relationshipStore) { fun handleEnrollmentNotes(enrollmentUid: String, state: State) { val newNoteState = if (state == State.SYNCED) State.SYNCED else State.TO_POST diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt index b065c2c188..1340260ab7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt @@ -28,9 +28,7 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable -import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.DataColumns @@ -38,13 +36,13 @@ import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.event.EventTableInfo import org.hisp.dhis.android.core.event.internal.EventStore -import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.note.Note import org.hisp.dhis.android.core.note.NoteTableInfo import org.hisp.dhis.android.core.relationship.RelationshipHelper import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueStore +import javax.inject.Inject @Reusable internal class JobReportEventHandler @Inject internal constructor( @@ -54,9 +52,8 @@ internal class JobReportEventHandler @Inject internal constructor( private val eventStore: EventStore, private val enrollmentStore: EnrollmentStore, private val conflictHelper: TrackerConflictHelper, - relationshipStore: RelationshipStore, - fileResourceStore: IdentifiableDataObjectStore -) : JobReportTypeHandler(relationshipStore, fileResourceStore) { + relationshipStore: RelationshipStore +) : JobReportTypeHandler(relationshipStore) { fun handleEventNotes(eventUid: String, state: State) { val newNoteState = if (state == State.SYNCED) State.SYNCED else State.TO_POST diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt index b5fc6e33b5..7f9d5d3ccb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt @@ -43,7 +43,7 @@ internal class JobReportHandler @Inject internal constructor( ) { fun handle(o: JobReport, jobObjects: List) { - val jobObjectsMap = jobObjects.map { jo -> Pair(jo.trackerType(), jo.objectUid()) to jo }.toMap() + val jobObjectsMap = jobObjects.associateBy { jo -> Pair(jo.trackerType(), jo.objectUid()) } val relatedUids = getRelatedUids(jobObjects) handleErrors(o, jobObjectsMap) diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt index ce4cca35cd..f628d5a9d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt @@ -28,18 +28,15 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State -import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.relationship.internal.RelationshipStore +import javax.inject.Inject @Reusable internal class JobReportRelationshipHandler @Inject internal constructor( - relationshipStore: RelationshipStore, - fileResourceStore: IdentifiableDataObjectStore -) : JobReportTypeHandler(relationshipStore, fileResourceStore) { + relationshipStore: RelationshipStore +) : JobReportTypeHandler(relationshipStore) { override fun handleObject(uid: String, state: State): HandleAction { val handledState = diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt index f46ccddfc9..4ad0b40851 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt @@ -28,17 +28,15 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State -import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.relationship.RelationshipHelper import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityAttributeValueStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore +import javax.inject.Inject @Reusable internal class JobReportTrackedEntityHandler @Inject internal constructor( @@ -46,9 +44,8 @@ internal class JobReportTrackedEntityHandler @Inject internal constructor( private val conflictStore: TrackerImportConflictStore, private val trackedEntityStore: TrackedEntityInstanceStore, private val conflictHelper: TrackerConflictHelper, - relationshipStore: RelationshipStore, - fileResourceStore: IdentifiableDataObjectStore -) : JobReportTypeHandler(relationshipStore, fileResourceStore) { + relationshipStore: RelationshipStore +) : JobReportTypeHandler(relationshipStore) { override fun handleObject(uid: String, state: State): HandleAction { conflictStore.deleteTrackedEntityConflicts(uid) diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt index 38f59ae4d6..aad0b73afc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt @@ -27,20 +27,16 @@ */ package org.hisp.dhis.android.core.tracker.importer.internal -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State -import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.relationship.internal.RelationshipStore internal abstract class JobReportTypeHandler constructor( - protected val relationshipStore: RelationshipStore, - private val fileResourceStore: IdentifiableDataObjectStore + protected val relationshipStore: RelationshipStore ) { fun handleSuccess(jo: TrackerJobObject) { val handleAction = handleObject(jo.objectUid(), State.SYNCED) - setFileResourceState(jo, State.SYNCED) if (handleAction === HandleAction.Delete) { getRelatedRelationships(jo.objectUid()).forEach { relationshipStore.delete(it) } @@ -49,19 +45,11 @@ internal abstract class JobReportTypeHandler constructor( fun handleError(jo: TrackerJobObject, errorReport: JobValidationError) { handleObject(jo.objectUid(), State.ERROR) - setFileResourceState(jo, State.TO_POST) storeConflict(errorReport) } fun handleNotPresent(jo: TrackerJobObject) { handleObject(jo.objectUid(), State.TO_UPDATE) - setFileResourceState(jo, State.TO_POST) - } - - private fun setFileResourceState(jobObject: TrackerJobObject, state: State) { - jobObject.fileResources().forEach { - fileResourceStore.setSyncStateIfUploading(it, state) - } } protected abstract fun handleObject(uid: String, state: State): HandleAction diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt index 73aa8c69c0..1ffb61c8c0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt @@ -28,9 +28,12 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable +import io.reactivex.Observable import io.reactivex.Single -import javax.inject.Inject +import org.hisp.dhis.android.core.arch.call.D2Progress +import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore +import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.NewTrackerImporterEnrollment import org.hisp.dhis.android.core.event.NewTrackerImporterEvent import org.hisp.dhis.android.core.fileresource.FileResource @@ -41,6 +44,7 @@ import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterTrackedEntity import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterTrackedEntityAttributeValue import org.hisp.dhis.android.core.trackedentity.internal.NewTrackerImporterPayload import org.hisp.dhis.android.core.trackedentity.internal.NewTrackerImporterPayloadWrapper +import javax.inject.Inject @Reusable internal class TrackerImporterFileResourcesPostCall @Inject internal constructor( @@ -181,6 +185,21 @@ internal class TrackerImporterFileResourcesPostCall @Inject internal constructor return Pair(successfulEvents, uploadedFileResources) } + fun updateFileResourceStates(payloadWrapper: NewTrackerImporterPayloadWrapper): Observable { + return Observable.fromCallable { + val progress = D2ProgressManager(null) + val fileResources = (payloadWrapper.deleted.fileResourcesMap.values + + payloadWrapper.updated.fileResourcesMap.values).flatten() + + fileResources.forEach { fr -> + val relatedState = fileResourceHelper.getRelatedResourceState(fr) + val state = if (relatedState == State.SYNCED) State.SYNCED else State.TO_POST + fileResourceStore.setSyncStateIfUploading(fr, state) + } + progress.increaseProgress(FileResource::class.java, false) + } + } + @Suppress("TooGenericExceptionCaught") private fun catchErrorToNull(f: () -> T): T? { return try { diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt index dccfa48a5c..641425e162 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt @@ -80,7 +80,8 @@ internal class TrackerImporterPostCall @Inject internal constructor( return fileResourcesPostCall.uploadFileResources(payloadWrapper).flatMapObservable { payload -> Observable.concat( doPostCall(payload.deleted, IMPORT_STRATEGY_DELETE), - doPostCall(payload.updated, IMPORT_STRATEGY_CREATE_AND_UPDATE) + doPostCall(payload.updated, IMPORT_STRATEGY_CREATE_AND_UPDATE), + fileResourcesPostCall.updateFileResourceStates(payload) ) } } From c196cf4dae30c15c09be530a7b66891785b32df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sa=CC=81nchez?= Date: Tue, 8 Mar 2022 13:14:26 +0100 Subject: [PATCH 140/253] Refactor the approach to return legend by value --- ...ticsVisualizationRepositoryIntegrationShould.kt | 6 +++--- .../EventLineListIntegrationShould.kt | 12 ++++++------ .../dhis/android/core/analytics/LegendEvaluator.kt | 10 +++++----- .../core/analytics/aggregated/AnalyticsModel.kt | 3 +++ .../analytics/aggregated/DimensionalResponse.kt | 4 +--- .../analytics/aggregated/GridAnalyticsResponse.kt | 4 +--- .../aggregated/internal/AnalyticsService.kt | 5 ++++- .../internal/AnalyticsServiceEvaluatorHelper.kt | 2 +- .../internal/AnalyticsServiceMetadataHelper.kt | 14 ++++++++++++++ .../core/analytics/linelist/LineListResponse.kt | 2 +- .../AnalyticsServiceMetadataHelperShould.kt | 3 +++ 11 files changed, 42 insertions(+), 23 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt index 8d3eef5979..d3d045bf51 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt @@ -118,8 +118,8 @@ class AnalyticsVisualizationRepositoryIntegrationShould : BaseMockIntegrationTes .getOrThrow() assertThat(result.values.size).isEqualTo(3) - assertThat(result.values[0][0].legend?.color()).isEqualTo("#F7A629") - assertThat(result.values[1][0].legend?.color()).isEqualTo("#F7A629") - assertThat(result.values[2][0].legend?.color()).isEqualTo("#F7A629") + assertThat(result.values[0][0].legend).isEqualTo("rlXteEDaTpt") + assertThat(result.values[1][0].legend).isEqualTo("rlXteEDaTpt") + assertThat(result.values[2][0].legend).isEqualTo("rlXteEDaTpt") } } diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt index 761bc10dc1..0c92987076 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt @@ -482,7 +482,7 @@ class EventLineListIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() assertThat(values.size == 1).isTrue() assertThat(values[0].uid == programIndicator.uid()).isTrue() - assertThat(values[0].legend?.color() == legendSet1.legends()?.get(0)?.color()).isTrue() + assertThat(values[0].legend == legendSet1.legends()?.get(0)?.uid()).isTrue() } @Test @@ -509,7 +509,7 @@ class EventLineListIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() assertThat(values.size == 1).isTrue() assertThat(values[0].uid == programIndicator.uid()).isTrue() - assertThat(values[0].legend?.color() == legendSet2.legends()?.get(1)?.color()).isTrue() + assertThat(values[0].legend == legendSet2.legends()?.get(1)?.uid()).isTrue() } @Test @@ -552,11 +552,11 @@ class EventLineListIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() assertThat(values.size == 2).isTrue() assertThat(values[0].uid == dataElement1.uid()).isTrue() assertThat(values[0].value == "10.0").isTrue() - assertThat(values[0].legend?.color() == legendSet1.legends()?.get(0)?.color()).isTrue() + assertThat(values[0].legend == legendSet1.legends()?.get(0)?.uid()).isTrue() assertThat(values[1].uid == dataElement2.uid()).isTrue() assertThat(values[1].value == "30.0").isTrue() - assertThat(values[1].legend?.color() == legendSet1.legends()?.get(1)?.color()).isTrue() + assertThat(values[1].legend == legendSet1.legends()?.get(1)?.uid()).isTrue() } @Test @@ -580,11 +580,11 @@ class EventLineListIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() assertThat(values.size == 2).isTrue() assertThat(values[0].uid == dataElement1.uid()).isTrue() assertThat(values[0].value == "10.0").isTrue() - assertThat(values[0].legend?.color() == legendSet2.legends()?.get(0)?.color()).isTrue() + assertThat(values[0].legend == legendSet2.legends()?.get(0)?.uid()).isTrue() assertThat(values[1].uid == dataElement2.uid()).isTrue() assertThat(values[1].value == "30.0").isTrue() - assertThat(values[1].legend?.color() == legendSet2.legends()?.get(0)?.color()).isTrue() + assertThat(values[1].legend == legendSet2.legends()?.get(0)?.uid()).isTrue() } private fun createTei() { diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt index 5b200f7458..ccfb28ef32 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt @@ -17,7 +17,7 @@ internal class LegendEvaluator @Inject constructor( fun getLegendByProgramIndicator( programIndicatorUid: String, value: String? - ): Legend? { + ): String? { return if (value == null) { null } else try { @@ -37,7 +37,7 @@ internal class LegendEvaluator @Inject constructor( fun getLegendByDataElement( dataElementUid: String, value: String? - ): Legend? { + ): String? { return if (value == null) { null } else try { @@ -57,7 +57,7 @@ internal class LegendEvaluator @Inject constructor( fun getLegendByIndicator( indicatorUid: String, value: String? - ): Legend? { + ): String? { return if (value == null) { null } else try { @@ -77,7 +77,7 @@ internal class LegendEvaluator @Inject constructor( fun getLegendByLegendSet( legendSetUid: String, value: String? - ): Legend? { + ): String? { return if (value == null || value.toDouble().isNaN()) { null @@ -87,7 +87,7 @@ internal class LegendEvaluator @Inject constructor( .byEndValue().biggerOrEqualTo(value.toDouble()) .byLegendSet().eq(legendSetUid) .one() - .blockingGet() + .blockingGet().uid() } catch (e: Exception) { null } diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt index 43729b2c5c..9498c90215 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt @@ -35,6 +35,7 @@ import org.hisp.dhis.android.core.common.RelativePeriod import org.hisp.dhis.android.core.dataelement.DataElement import org.hisp.dhis.android.core.dataelement.DataElementOperand import org.hisp.dhis.android.core.indicator.Indicator +import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.organisationunit.OrganisationUnit import org.hisp.dhis.android.core.organisationunit.OrganisationUnitGroup import org.hisp.dhis.android.core.organisationunit.OrganisationUnitLevel @@ -54,6 +55,8 @@ sealed class MetadataItem(val id: String, val displayName: String) { class CategoryOptionGroupSetItem(uid: String, displayName: String) : MetadataItem(uid, displayName) + class LegendItem(val item: Legend) : MetadataItem(item.uid(), item.displayName()!!) + class OrganisationUnitItem(val item: OrganisationUnit) : MetadataItem(item.uid(), item.displayName()!!) class OrganisationUnitLevelItem( val item: OrganisationUnitLevel, diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt index ba9d0eb98b..e4c07741ce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt @@ -28,8 +28,6 @@ package org.hisp.dhis.android.core.analytics.aggregated -import org.hisp.dhis.android.core.legendset.Legend - data class DimensionalResponse( val metadata: Map, val dimensions: List, @@ -41,5 +39,5 @@ data class DimensionalResponse( data class DimensionalValue( val dimensions: List, val value: String?, - val legend: Legend? + val legend: String? ) diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt index c5cd9bf446..b72d5d5d9b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt @@ -28,8 +28,6 @@ package org.hisp.dhis.android.core.analytics.aggregated -import org.hisp.dhis.android.core.legendset.Legend - data class GridAnalyticsResponse( val metadata: Map, val headers: GridHeader, @@ -58,5 +56,5 @@ data class GridResponseValue( val columns: List, val rows: List, val value: String?, - val legend: Legend? + val legend: String? ) diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt index b315cc40d5..8c17008a3e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt @@ -63,9 +63,12 @@ internal class AnalyticsService @Inject constructor( analyticsServiceEvaluatorHelper.evaluate(it, metadata, params.analyticsLegendStrategy) } + val legends = values.filter { it.legend != null }.map { it.legend!! } + val finalMetadata = analyticsServiceMetadataHelper.includeLegendsToMetadata(metadata, legends) + Result.Success( DimensionalResponse( - metadata = metadata, + metadata = finalMetadata, dimensions = dimensions, dimensionItems = dimensionItems.groupBy { it.dimension }, filters = params.filters.map { it.id }, diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt index 99b5f6d78b..fe2cc8a504 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt @@ -109,7 +109,7 @@ internal class AnalyticsServiceEvaluatorHelper @Inject constructor( } } - private fun getLegendFromDataDimension(evaluationItem: AnalyticsServiceEvaluationItem, value: String?): Legend? { + private fun getLegendFromDataDimension(evaluationItem: AnalyticsServiceEvaluationItem, value: String?): String? { val dimensionDataItem = ( evaluationItem.dimensionItems.filterIsInstance() + evaluationItem.filters.filterIsInstance() diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt index 3ac8d3aba8..99b0048b4d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt @@ -40,6 +40,7 @@ import org.hisp.dhis.android.core.common.ObjectWithUid import org.hisp.dhis.android.core.dataelement.DataElement import org.hisp.dhis.android.core.dataelement.DataElementOperand import org.hisp.dhis.android.core.indicator.Indicator +import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.organisationunit.OrganisationUnit import org.hisp.dhis.android.core.organisationunit.OrganisationUnitGroup import org.hisp.dhis.android.core.organisationunit.OrganisationUnitLevel @@ -54,6 +55,7 @@ internal class AnalyticsServiceMetadataHelper @Inject constructor( private val categoryOptionComboStore: CategoryOptionComboStore, private val dataElementStore: IdentifiableObjectStore, private val indicatorStore: IdentifiableObjectStore, + private val legendStore: IdentifiableObjectStore, private val organisationUnitStore: IdentifiableObjectStore, private val organisationUnitGroupStore: IdentifiableObjectStore, private val organisationUnitLevelStore: IdentifiableObjectStore, @@ -73,6 +75,18 @@ internal class AnalyticsServiceMetadataHelper @Inject constructor( return metadata } + fun includeLegendsToMetadata(metadata: Map, legends: List): Map { + val finalMetadata = metadata.toMutableMap() + + val legends = legendStore.selectByUids(legends.distinct()).map { MetadataItem.LegendItem(it) } + + val metadataItemsMap = legends.map { it.id to it }.toMap() + + finalMetadata += metadataItemsMap + + return finalMetadata + } + private fun getMetadata(evaluationItem: AnalyticsServiceEvaluationItem): Map { val metadata: MutableMap = mutableMapOf() diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt index ea7429fd30..71809812f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt @@ -44,5 +44,5 @@ data class LineListResponseValue( val uid: String, val displayName: String, val value: String?, - val legend: Legend? + val legend: String? ) diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt index 44124f2996..bd362f00d3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt @@ -39,6 +39,7 @@ import org.hisp.dhis.android.core.category.CategoryOption import org.hisp.dhis.android.core.category.internal.CategoryOptionComboStore import org.hisp.dhis.android.core.dataelement.DataElement import org.hisp.dhis.android.core.indicator.Indicator +import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.organisationunit.OrganisationUnit import org.hisp.dhis.android.core.organisationunit.OrganisationUnitGroup import org.hisp.dhis.android.core.organisationunit.OrganisationUnitLevel @@ -57,6 +58,7 @@ class AnalyticsServiceMetadataHelperShould { private val dataElementStore: IdentifiableObjectStore = mock() private val categoryOptionComboStore: CategoryOptionComboStore = mock() private val indicatorStore: IdentifiableObjectStore = mock() + private val legendStore: IdentifiableObjectStore = mock() private val organisationUnitStore: IdentifiableObjectStore = mock() private val organisationUnitGroupStore: IdentifiableObjectStore = mock() private val organisationUnitLevelStore: IdentifiableObjectStore = mock() @@ -71,6 +73,7 @@ class AnalyticsServiceMetadataHelperShould { categoryOptionComboStore, dataElementStore, indicatorStore, + legendStore, organisationUnitStore, organisationUnitGroupStore, organisationUnitLevelStore, From fef0172551bd8f22a7e3b4562cc20bb607c149c8 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 8 Mar 2022 17:48:17 +0100 Subject: [PATCH 141/253] fix: [MAX-ACCOUNTS-FIX] Fix initial account configuration --- .../configuration/internal/DatabaseConfigurationMigration.kt | 4 ++++ .../core/configuration/internal/MultiUserDatabaseManager.kt | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt index aecf961d74..9462b5723b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt @@ -93,6 +93,10 @@ internal class DatabaseConfigurationMigration @Inject constructor( } } + if (databaseConfigurationStore.get() == null) { + databaseConfigurationStore.set(DatabasesConfiguration.builder().build()) + } + if (existingVersionCode == null) { Migration260(context, databaseConfigurationStore, databaseAdapterFactory).apply() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt index a7d4ab8cf8..f25c2ca2c5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt @@ -121,7 +121,7 @@ internal class MultiUserDatabaseManager @Inject internal constructor( throw IllegalArgumentException("MaxAccounts must be greater than 0") } else { val configuration = databaseConfigurationSecureStore.get() - val updatedConfiguration = (configuration.toBuilder() ?: DatabasesConfiguration.builder()) + val updatedConfiguration = (configuration?.toBuilder() ?: DatabasesConfiguration.builder()) .maxAccounts(maxAccounts) .build() databaseConfigurationSecureStore.set(updatedConfiguration) From cea2e1056ee5144007fe95ed62eb531e3c5be74d Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 8 Mar 2022 18:25:14 +0100 Subject: [PATCH 142/253] [MAX-ACCOUNTS-FIX] Fix integration tests --- .../DatabaseConfigurationMigrationIntegrationShould.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt index 874a1ff88b..2b760a0997 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt @@ -126,7 +126,7 @@ class DatabaseConfigurationMigrationIntegrationShould { migration.apply() - assertThat(databasesConfigurationStore.get()).isNull() + assertThat(databasesConfigurationStore.get()?.accounts()).isEmpty() } @Test @@ -175,12 +175,12 @@ class DatabaseConfigurationMigrationIntegrationShould { } @Test - fun migrate_null_from_old_database_configuration() { + fun migrate_empty_from_old_database_configuration() { DatabaseConfigurationInsecureStoreOld.get(insecureStore).set(null) migration.apply() - assertThat(databasesConfigurationStore.get()).isNull() + assertThat(databasesConfigurationStore.get()?.accounts()).isEmpty() } private fun setCredentialsAndServerUrl(databaseAdapter: DatabaseAdapter) { From 043bd88ef0d875e7e22bb6e9d6ccfbf7755be80f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 8 Mar 2022 16:43:17 +0100 Subject: [PATCH 143/253] [ANDROSDK-1505] Implement break-the-glass in NTI --- .../internal/EnrollmentImportHandler.kt | 5 +- .../core/event/internal/EventImportHandler.kt | 5 +- .../internal/FileResourceHelper.kt | 3 +- .../TrackerImportConflictTableInfo.java | 2 +- .../EnrollmentWebResponseHandlerSummary.kt | 3 +- .../internal/ItemsWithFileResources.kt | 2 +- .../imports/internal/TEIWebResponseHandler.kt | 2 +- .../internal/TEIWebResponseHandlerSummary.kt | 2 +- .../internal/OldTrackerImporterPostCall.kt | 57 +----- .../TrackedEntityInstanceImportHandler.kt | 5 +- .../tracker/importer/internal/JobQueryCall.kt | 12 +- .../internal/JobReportEnrollmentHandler.kt | 2 +- .../internal/JobReportEventHandler.kt | 2 +- .../internal/JobReportFileResourceHandler.kt | 59 ++++++ .../internal/JobReportRelationshipHandler.kt | 2 +- .../internal/JobReportTrackedEntityHandler.kt | 2 +- .../TrackerImporterBreakTheGlassHelper.kt | 173 ++++++++++++++++++ .../TrackerImporterFileResourcesPostCall.kt | 21 +-- .../internal/TrackerImporterPostCall.kt | 37 +++- .../UserOrganisationUnitLinkEntityDIModule.kt | 2 +- .../internal/UserOrganisationUnitLinkStore.kt | 6 +- .../UserOrganisationUnitLinkStoreImpl.kt | 16 +- 22 files changed, 310 insertions(+), 110 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt index 5d87c7a696..7532f73d05 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt @@ -28,6 +28,8 @@ package org.hisp.dhis.android.core.enrollment.internal import dagger.Reusable +import java.util.* +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.StoreUtils.getSyncState import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State @@ -44,8 +46,6 @@ import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.tracker.importer.internal.JobReportEnrollmentHandler -import java.util.* -import javax.inject.Inject @Reusable internal class EnrollmentImportHandler @Inject constructor( @@ -57,6 +57,7 @@ internal class EnrollmentImportHandler @Inject constructor( private val dataStatePropagator: DataStatePropagator ) { + @Suppress("NestedBlockDepth") fun handleEnrollmentImportSummary( enrollmentImportSummaries: List?, enrollments: List, diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt index 4c067993a4..f1435e56a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt @@ -28,6 +28,8 @@ package org.hisp.dhis.android.core.event.internal import dagger.Reusable +import java.util.* +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.StoreUtils.getSyncState import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State @@ -43,8 +45,6 @@ import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictParser import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueStore import org.hisp.dhis.android.core.tracker.importer.internal.JobReportEventHandler -import java.util.* -import javax.inject.Inject @Reusable internal class EventImportHandler @Inject constructor( @@ -57,6 +57,7 @@ internal class EventImportHandler @Inject constructor( private val trackedEntityDataValueStore: TrackedEntityDataValueStore ) { + @Suppress("NestedBlockDepth") fun handleEventImportSummaries( eventImportSummaries: List?, events: List diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt index e91150febf..6b880f9118 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt @@ -27,6 +27,7 @@ */ package org.hisp.dhis.android.core.fileresource.internal +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.common.State @@ -38,8 +39,8 @@ import org.hisp.dhis.android.core.trackedentity.* import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityAttributeValueStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore -import javax.inject.Inject +@Suppress("TooManyFunctions") internal class FileResourceHelper @Inject constructor( private val dataElementStore: IdentifiableObjectStore, private val attributeStore: IdentifiableObjectStore, diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java index 1306538bf8..12e9340132 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java @@ -59,7 +59,7 @@ public static class Columns extends CoreColumns { public final static String TRACKED_ENTITY_ATTRIBUTE = "trackedEntityAttribute"; public final static String DATA_ELEMENT = "dataElement"; public final static String TABLE_REFERENCE = "tableReference"; - final static String ERROR_CODE = "errorCode"; + public final static String ERROR_CODE = "errorCode"; final static String STATUS = "status"; final static String CREATED = "created"; final static String DISPLAY_DESCRIPTION = "displayDescription"; diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt index 058c40976a..e6dd966029 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt @@ -28,8 +28,7 @@ package org.hisp.dhis.android.core.imports.internal import org.hisp.dhis.android.core.enrollment.Enrollment -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance internal data class EnrollmentWebResponseHandlerSummary( val ignoredEnrollments: MutableList = mutableListOf() -) \ No newline at end of file +) diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt index 672dadbed5..2eb4dca337 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt @@ -30,4 +30,4 @@ package org.hisp.dhis.android.core.imports.internal internal data class ItemsWithFileResources ( val items: List, val fileResources: List -) \ No newline at end of file +) diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt index 71770a4b16..bd346ae362 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt @@ -28,9 +28,9 @@ package org.hisp.dhis.android.core.imports.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceImportHandler -import javax.inject.Inject @Reusable internal class TEIWebResponseHandler @Inject constructor( diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt index 86835c62b7..3c29e52b87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt @@ -75,4 +75,4 @@ internal data class TrackerResponseHandlerSummary( add(other) } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt index 9f0459edfd..55aadb00e0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt @@ -30,6 +30,8 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable import io.reactivex.Observable import io.reactivex.ObservableEmitter +import java.net.HttpURLConnection.HTTP_CONFLICT +import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager @@ -43,17 +45,12 @@ import org.hisp.dhis.android.core.imports.internal.TEIWebResponse import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandler import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary import org.hisp.dhis.android.core.maintenance.D2Error -import org.hisp.dhis.android.core.program.AccessLevel -import org.hisp.dhis.android.core.program.internal.ProgramStoreInterface import org.hisp.dhis.android.core.relationship.internal.RelationshipPostCall import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor -import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipManagerImpl -import org.hisp.dhis.android.core.user.internal.UserOrganisationUnitLinkStore -import java.net.HttpURLConnection.HTTP_CONFLICT -import javax.inject.Inject +import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterBreakTheGlassHelper @Reusable +@Suppress("LongParameterList") internal class OldTrackerImporterPostCall @Inject internal constructor( private val trackerImporterPayloadGenerator: OldTrackerImporterPayloadGenerator, private val trackerStateManager: TrackerPostStateManager, @@ -64,9 +61,7 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( private val apiCallExecutor: APICallExecutor, private val relationshipPostCall: RelationshipPostCall, private val fileResourcePostCall: OldTrackerImporterFileResourcesPostCall, - private val userOrganisationUnitLinkStore: UserOrganisationUnitLinkStore, - private val programStore: ProgramStoreInterface, - private val ownershipManagerImpl: OwnershipManagerImpl + private val breakTheGlassHelper: TrackerImporterBreakTheGlassHelper ) { fun uploadTrackedEntityInstances( @@ -112,10 +107,10 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( for (partition in teiPartitions) { try { val summary = postPartition(partition.items) - val glassErrors = getGlassProtectedErrors(summary, partition.items) + val glassErrors = breakTheGlassHelper.getGlassErrors(summary, partition.items) if (glassErrors.isNotEmpty()) { - fakeBreakGlass(glassErrors) + breakTheGlassHelper.fakeBreakGlass(glassErrors) val breakGlassSummary = postPartition(glassErrors) summary.update(breakGlassSummary) @@ -165,44 +160,6 @@ internal class OldTrackerImporterPostCall @Inject internal constructor( return teiWebResponseHandler.handleWebResponse(webResponse, trackedEntityInstances) } - private fun getGlassProtectedErrors( - summary: TEIWebResponseHandlerSummary, - instances: List - ): List { - return summary.enrollments.ignored.filter { enrollment -> - isProtectedProgram(enrollment.program()) && isNotCaptureScope(enrollment.organisationUnit()) - }.mapNotNull { enrollment -> - instances.mapNotNull { tei -> - val teiEnrollment = - TrackedEntityInstanceInternalAccessor.accessEnrollments(tei).find { it.uid() == enrollment.uid() } - - if (teiEnrollment != null) { - TrackedEntityInstanceInternalAccessor - .insertEnrollments(tei.toBuilder(), listOf(teiEnrollment)) - .build() - } else { - null - } - }.firstOrNull() - } - } - - private fun isProtectedProgram(program: String?): Boolean { - return program?.let { programStore.selectByUid(it)?.accessLevel() == AccessLevel.PROTECTED } ?: false - } - - private fun isNotCaptureScope(organisationUnit: String?): Boolean { - return organisationUnit?.let { !userOrganisationUnitLinkStore.isCaptureScope(it) } ?: false - } - - private fun fakeBreakGlass(instances: List) { - instances.forEach { instance -> - TrackedEntityInstanceInternalAccessor.accessEnrollments(instance).forEach { enrollment -> - ownershipManagerImpl.fakeBreakGlass(instance.uid(), enrollment.uid()) - } - } - } - @Suppress("TooGenericExceptionCaught") private fun postEvents( events: List diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt index 8fe2403f87..543150f2d9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt @@ -28,6 +28,8 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable +import java.util.* +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.StoreUtils.getSyncState import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State @@ -46,8 +48,6 @@ import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo -import java.util.* -import javax.inject.Inject @Reusable internal class TrackedEntityInstanceImportHandler @Inject internal constructor( @@ -65,6 +65,7 @@ internal class TrackedEntityInstanceImportHandler @Inject internal constructor( private val alreadyDeletedInServerRegex = Regex("Tracked entity instance (\\w{11}) cannot be deleted as it is not present in the system") + @Suppress("NestedBlockDepth") fun handleTrackedEntityInstanceImportSummaries( teiImportSummaries: List?, instances: List diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt index 4206d2d8a3..5a5633dc37 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt @@ -47,7 +47,8 @@ internal class JobQueryCall @Inject internal constructor( private val service: TrackerImporterService, private val apiCallExecutor: APICallExecutor, private val trackerJobObjectStore: ObjectWithoutUidStore, - private val handler: JobReportHandler + private val handler: JobReportHandler, + private val fileResourceHandler: JobReportFileResourceHandler ) { fun queryPendingJobs(): Observable { @@ -62,7 +63,10 @@ internal class JobQueryCall @Inject internal constructor( Triple(it.value.first, it.value.second, it.index == pendingJobs.size - 1) } } - .flatMap { queryJobInternal(it.first, it.second, it.third, ATTEMPTS_WHEN_QUERYING) } + .flatMap { + queryJobInternal(it.first, it.second, it.third, ATTEMPTS_WHEN_QUERYING) + .flatMap { _ -> updateFileResourceStates(it.second) } + } } fun queryJob(jobId: String): Observable { @@ -70,6 +74,10 @@ internal class JobQueryCall @Inject internal constructor( return queryJobInternal(jobId, jobObjects, true, ATTEMPTS_AFTER_UPLOAD) } + fun updateFileResourceStates(jobObjects: List): Observable { + return fileResourceHandler.updateFileResourceStates(jobObjects) + } + private fun queryJobInternal( jobId: String, jobObjects: List, diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt index 81993211eb..fe0c84a638 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction @@ -40,7 +41,6 @@ import org.hisp.dhis.android.core.note.Note import org.hisp.dhis.android.core.note.NoteTableInfo import org.hisp.dhis.android.core.relationship.RelationshipHelper import org.hisp.dhis.android.core.relationship.internal.RelationshipStore -import javax.inject.Inject @Reusable internal class JobReportEnrollmentHandler @Inject internal constructor( diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt index 1340260ab7..3d22a1a075 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction @@ -42,7 +43,6 @@ import org.hisp.dhis.android.core.note.NoteTableInfo import org.hisp.dhis.android.core.relationship.RelationshipHelper import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueStore -import javax.inject.Inject @Reusable internal class JobReportEventHandler @Inject internal constructor( diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt new file mode 100644 index 0000000000..d02bba30ca --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.tracker.importer.internal + +import dagger.Reusable +import io.reactivex.Observable +import javax.inject.Inject +import org.hisp.dhis.android.core.arch.call.D2Progress +import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager +import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.fileresource.FileResource +import org.hisp.dhis.android.core.fileresource.internal.FileResourceHelper + +@Reusable +internal class JobReportFileResourceHandler @Inject internal constructor( + private val fileResourceStore: IdentifiableDataObjectStore, + private val fileResourceHelper: FileResourceHelper +) { + fun updateFileResourceStates(jobObjects: List): Observable { + return Observable.fromCallable { + val progress = D2ProgressManager(null) + + val fileResources = jobObjects.flatMap { it.fileResources() } + + fileResources.forEach { fr -> + val relatedState = fileResourceHelper.getRelatedResourceState(fr) + val state = if (relatedState == State.SYNCED) State.SYNCED else State.TO_POST + fileResourceStore.setSyncStateIfUploading(fr, state) + } + progress.increaseProgress(FileResource::class.java, false) + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt index f628d5a9d5..781a6f7a98 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt @@ -28,10 +28,10 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.relationship.internal.RelationshipStore -import javax.inject.Inject @Reusable internal class JobReportRelationshipHandler @Inject internal constructor( diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt index 4ad0b40851..882ed1dfb4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore @@ -36,7 +37,6 @@ import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityAttributeValueStore import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore -import javax.inject.Inject @Reusable internal class JobReportTrackedEntityHandler @Inject internal constructor( diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt new file mode 100644 index 0000000000..0acd8601d1 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.tracker.importer.internal + +import dagger.Reusable +import javax.inject.Inject +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore +import org.hisp.dhis.android.core.imports.TrackerImportConflictTableInfo +import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandlerSummary +import org.hisp.dhis.android.core.imports.internal.TrackerImportConflictStore +import org.hisp.dhis.android.core.program.AccessLevel +import org.hisp.dhis.android.core.program.internal.ProgramStoreInterface +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor +import org.hisp.dhis.android.core.trackedentity.internal.NewTrackerImporterPayload +import org.hisp.dhis.android.core.trackedentity.ownership.OwnershipManagerImpl +import org.hisp.dhis.android.core.user.internal.UserOrganisationUnitLinkStore + +@Reusable +internal class TrackerImporterBreakTheGlassHelper @Inject constructor( + private val conflictStore: TrackerImportConflictStore, + private val userOrganisationUnitLinkStore: UserOrganisationUnitLinkStore, + private val enrollmentStore: EnrollmentStore, + private val programStore: ProgramStoreInterface, + private val ownershipManagerImpl: OwnershipManagerImpl +) { + + /** + * Get glass errors for importer V1 + */ + fun getGlassErrors( + summary: TEIWebResponseHandlerSummary, + instances: List + ): List { + return summary.enrollments.ignored.filter { enrollment -> + isProtectedProgram(enrollment.program()) && isNotCaptureScope(enrollment.organisationUnit()) + }.mapNotNull { enrollment -> + instances.mapNotNull { tei -> + val teiEnrollment = + TrackedEntityInstanceInternalAccessor.accessEnrollments(tei).find { it.uid() == enrollment.uid() } + + if (teiEnrollment != null) { + TrackedEntityInstanceInternalAccessor + .insertEnrollments(tei.toBuilder(), listOf(teiEnrollment)) + .build() + } else { + null + } + }.firstOrNull() + } + } + + /** + * Get glass errors for importer V2 + */ + fun getGlassErrors(payload: NewTrackerImporterPayload): NewTrackerImporterPayload { + val importedEnrollments = payload.enrollments.map { it.uid() } + val enrollmentWhereClause = WhereClauseBuilder() + .appendKeyStringValue(TrackerImportConflictTableInfo.Columns.ERROR_CODE, ImporterError.E1102.name) + .appendInKeyStringValues(TrackerImportConflictTableInfo.Columns.ENROLLMENT, importedEnrollments) + .build() + + val importerEvents = payload.events.map { it.uid() } + val eventWhereClause = WhereClauseBuilder() + .appendKeyStringValue(TrackerImportConflictTableInfo.Columns.ERROR_CODE, ImporterError.E1000.name) + .appendInKeyStringValues(TrackerImportConflictTableInfo.Columns.EVENT, importerEvents) + .build() + + val candidateEnrollments = conflictStore.selectWhere(enrollmentWhereClause) + val candidateEvents = conflictStore.selectWhere(eventWhereClause) + + val glassErrors = NewTrackerImporterPayload() + candidateEnrollments + .mapNotNull { error -> error.enrollment()?.let { id -> payload.enrollments.find { it.uid() == id } } } + .filter { enrollment -> + isProtectedProgram(enrollment.program()) && isNotCaptureScope(enrollment.organisationUnit()) + } + .map { enrollment -> + glassErrors.enrollments.add(enrollment) + glassErrors.trackedEntities.addAll( + payload.trackedEntities.filter { + it.uid() == enrollment.trackedEntity() + } + ) + glassErrors.events.addAll( + payload.events.filter { + it.enrollment() == enrollment.uid() + } + ) + } + + candidateEvents + .filter { error -> glassErrors.events.none { it.uid() == error.event() } } + .mapNotNull { error -> error.event()?.let { id -> payload.events.find { it.uid() == id } } } + .filter { event -> + event.enrollment()?.let { enrollmentStore.selectByUid(it) }?.let { + isProtectedProgram(it.program()) && isNotCaptureScope(it.organisationUnit()) + } ?: false + } + .map { event -> + glassErrors.events.add(event) + } + + return glassErrors + } + + /** + * Fake break the glass for importer V1 + */ + fun fakeBreakGlass(instances: List) { + instances.forEach { instance -> + TrackedEntityInstanceInternalAccessor.accessEnrollments(instance).forEach { enrollment -> + if (instance.uid() != null && enrollment.program() != null) + ownershipManagerImpl.fakeBreakGlass(instance.uid()!!, enrollment.program()!!) + } + } + } + + /** + * Fake break the glass for importer V2 + */ + fun fakeBreakGlass(payload: NewTrackerImporterPayload) { + payload.enrollments.forEach { + if (it.trackedEntity() != null && it.program() != null) { + ownershipManagerImpl.fakeBreakGlass(it.trackedEntity()!!, it.program()!!) + } + } + + payload.events + .filter { event -> payload.enrollments.none { it.uid() == event.enrollment() } } + .forEach { event -> + event.enrollment()?.let { enrollmentStore.selectByUid(it) }?.let { + if (it.trackedEntityInstance() != null && it.program() != null) { + ownershipManagerImpl.fakeBreakGlass(it.trackedEntityInstance()!!, it.program()!!) + } + } + } + } + + private fun isProtectedProgram(program: String?): Boolean { + return program?.let { programStore.selectByUid(it)?.accessLevel() == AccessLevel.PROTECTED } ?: false + } + + private fun isNotCaptureScope(organisationUnit: String?): Boolean { + return organisationUnit?.let { !userOrganisationUnitLinkStore.isCaptureScope(it) } ?: false + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt index 1ffb61c8c0..73aa8c69c0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt @@ -28,12 +28,9 @@ package org.hisp.dhis.android.core.tracker.importer.internal import dagger.Reusable -import io.reactivex.Observable import io.reactivex.Single -import org.hisp.dhis.android.core.arch.call.D2Progress -import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore -import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.NewTrackerImporterEnrollment import org.hisp.dhis.android.core.event.NewTrackerImporterEvent import org.hisp.dhis.android.core.fileresource.FileResource @@ -44,7 +41,6 @@ import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterTrackedEntity import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterTrackedEntityAttributeValue import org.hisp.dhis.android.core.trackedentity.internal.NewTrackerImporterPayload import org.hisp.dhis.android.core.trackedentity.internal.NewTrackerImporterPayloadWrapper -import javax.inject.Inject @Reusable internal class TrackerImporterFileResourcesPostCall @Inject internal constructor( @@ -185,21 +181,6 @@ internal class TrackerImporterFileResourcesPostCall @Inject internal constructor return Pair(successfulEvents, uploadedFileResources) } - fun updateFileResourceStates(payloadWrapper: NewTrackerImporterPayloadWrapper): Observable { - return Observable.fromCallable { - val progress = D2ProgressManager(null) - val fileResources = (payloadWrapper.deleted.fileResourcesMap.values + - payloadWrapper.updated.fileResourcesMap.values).flatten() - - fileResources.forEach { fr -> - val relatedState = fileResourceHelper.getRelatedResourceState(fr) - val state = if (relatedState == State.SYNCED) State.SYNCED else State.TO_POST - fileResourceStore.setSyncStateIfUploading(fr, state) - } - progress.increaseProgress(FileResource::class.java, false) - } - } - @Suppress("TooGenericExceptionCaught") private fun catchErrorToNull(f: () -> T): T? { return try { diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt index 641425e162..b89d238cd5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt @@ -56,7 +56,8 @@ internal class TrackerImporterPostCall @Inject internal constructor( private val fileResourcesPostCall: TrackerImporterFileResourcesPostCall, private val apiCallExecutor: APICallExecutor, private val jobQueryCall: JobQueryCall, - private val jobObjectHandler: Handler + private val jobObjectHandler: Handler, + private val breakTheGlassHelper: TrackerImporterBreakTheGlassHelper ) { fun uploadTrackedEntityInstances( filteredTrackedEntityInstances: List @@ -80,8 +81,7 @@ internal class TrackerImporterPostCall @Inject internal constructor( return fileResourcesPostCall.uploadFileResources(payloadWrapper).flatMapObservable { payload -> Observable.concat( doPostCall(payload.deleted, IMPORT_STRATEGY_DELETE), - doPostCall(payload.updated, IMPORT_STRATEGY_CREATE_AND_UPDATE), - fileResourcesPostCall.updateFileResourceStates(payload) + doPostCall(payload.updated, IMPORT_STRATEGY_CREATE_AND_UPDATE) ) } } @@ -93,17 +93,34 @@ internal class TrackerImporterPostCall @Inject internal constructor( return if (payload.isEmpty()) { Observable.empty() } else { - stateManager.setStates(payload, State.UPLOADING) - Single.fromCallable { - doPostCallInternal(payload, importStrategy) - }.doOnError { - stateManager.restoreStates(payload) - }.flatMapObservable { - jobQueryCall.queryJob(it) + doPost(payload, importStrategy).flatMap { d2Progress -> + val glassErrors = breakTheGlassHelper.getGlassErrors(payload) + + if (glassErrors.isEmpty()) { + Observable.just(d2Progress) + } else { + breakTheGlassHelper.fakeBreakGlass(payload) + doPost(payload, importStrategy) + } } } } + private fun doPost( + payload: NewTrackerImporterPayload, + importStrategy: String + ): Observable { + stateManager.setStates(payload, State.UPLOADING) + + return Single.fromCallable { + doPostCallInternal(payload, importStrategy) + }.doOnError { + stateManager.restoreStates(payload) + }.flatMapObservable { + jobQueryCall.queryJob(it) + } + } + private fun doPostCallInternal( payload: NewTrackerImporterPayload, importStrategy: String diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt index f74150b1f1..512dc73963 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt @@ -50,4 +50,4 @@ internal class UserOrganisationUnitLinkEntityDIModule { fun handler(store: UserOrganisationUnitLinkStore): LinkHandler { return LinkHandlerImpl(store) } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt index f3988fb22e..358731ff92 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt @@ -27,11 +27,11 @@ */ package org.hisp.dhis.android.core.user.internal +import java.lang.RuntimeException +import kotlin.Throws import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore import org.hisp.dhis.android.core.organisationunit.OrganisationUnit import org.hisp.dhis.android.core.user.UserOrganisationUnitLink -import java.lang.RuntimeException -import kotlin.Throws internal interface UserOrganisationUnitLinkStore : LinkStore { @Throws(RuntimeException::class) @@ -39,4 +39,4 @@ internal interface UserOrganisationUnitLinkStore : LinkStore fun queryAssignedOrganisationUnitUidsByScope(scope: OrganisationUnit.Scope): List fun isCaptureScope(organisationUnit: String): Boolean -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt index 50cbd38406..f42996248a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt @@ -28,17 +28,17 @@ package org.hisp.dhis.android.core.user.internal import android.database.Cursor +import java.lang.RuntimeException +import kotlin.Throws import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter import org.hisp.dhis.android.core.arch.db.querybuilders.internal.SQLStatementBuilderImpl -import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder -import org.hisp.dhis.android.core.user.UserOrganisationUnitLink -import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStoreImpl -import kotlin.Throws -import org.hisp.dhis.android.core.user.UserOrganisationUnitLinkTableInfo import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper +import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStoreImpl import org.hisp.dhis.android.core.organisationunit.OrganisationUnit -import java.lang.RuntimeException +import org.hisp.dhis.android.core.user.UserOrganisationUnitLink +import org.hisp.dhis.android.core.user.UserOrganisationUnitLinkTableInfo internal class UserOrganisationUnitLinkStoreImpl private constructor( databaseAdapter: DatabaseAdapter, @@ -50,7 +50,9 @@ internal class UserOrganisationUnitLinkStoreImpl private constructor( builder, masterColumn, binder, - { cursor: Cursor -> UserOrganisationUnitLink.create(cursor) }), UserOrganisationUnitLinkStore { + { cursor: Cursor -> UserOrganisationUnitLink.create(cursor) } +), + UserOrganisationUnitLinkStore { @Throws(RuntimeException::class) override fun queryRootCaptureOrganisationUnitUids(): List { From acb5247df249d369feef7200e6ea1e4eb5243e9a Mon Sep 17 00:00:00 2001 From: ericampire Date: Tue, 8 Mar 2022 20:42:28 +0200 Subject: [PATCH 144/253] [SUPPORT_LEGENDS_IN_VISUALIZATIONS_ANALYTICS] Fix conflicts --- .../eventlinelist/EventLineListIntegrationShould.kt | 3 +-- .../core/analytics/eventlinelist/EventLineListSamples.kt | 6 +++--- .../internal/LegendSetUidsSeekerMockIntegrationShould.kt | 3 +-- .../LegendCollectionRepositoryMockIntegrationShould.java | 2 +- ...egendSetCollectionRepositoryMockIntegrationShould.java | 2 +- .../hisp/dhis/android/core/analytics/LegendEvaluator.kt | 1 - .../internal/AnalyticsServiceEvaluatorHelper.kt | 1 - .../android/core/analytics/linelist/LineListResponse.kt | 1 - core/src/sharedTest/resources/legendset/legend_sets.json | 8 ++++++++ 9 files changed, 15 insertions(+), 12 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt index 0c92987076..5d43babde3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt @@ -57,7 +57,6 @@ import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStoreImpl import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.internal.EventStoreImpl import org.hisp.dhis.android.core.legendset.DataElementLegendSetLink -import org.hisp.dhis.android.core.legendset.LegendSet import org.hisp.dhis.android.core.legendset.ProgramIndicatorLegendSetLink import org.hisp.dhis.android.core.legendset.internal.DataElementLegendSetLinkStore import org.hisp.dhis.android.core.legendset.internal.LegendSetStore @@ -631,7 +630,7 @@ class EventLineListIntegrationShould : BaseMockIntegrationTestEmptyDispatcher() return programIndicator } - private fun createDataElementLegendSetLinks(dataElement: String, legendSets: List) { + private fun createDataElementLegendSetLinks(dataElement: String, legendSets: List) { legendSets.forEach { val dataElementLegendSetLink = DataElementLegendSetLink.builder().dataElement(dataElement).legendSet(it.uid()).build() diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt index 42b816162a..732ed933ce 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt @@ -150,7 +150,7 @@ object EventLineListSamples { .displayName("Data Element 1") .valueType(ValueType.NUMBER) .categoryCombo(ObjectWithUid.fromIdentifiable(categoryCombo)) - .legendSets(listOf(legendSet1)) + .legendSets(listOf(ObjectWithUid.create(legendSet1.uid()))) .build() val dataElement2: DataElement = DataElement.builder() @@ -158,7 +158,7 @@ object EventLineListSamples { .displayName("Data Element 2") .valueType(ValueType.NUMBER) .categoryCombo(ObjectWithUid.fromIdentifiable(categoryCombo)) - .legendSets(listOf(legendSet1)) + .legendSets(listOf(ObjectWithUid.create(legendSet1.uid()))) .build() fun programIndicator(expression: String): ProgramIndicator = ProgramIndicator.builder() @@ -167,7 +167,7 @@ object EventLineListSamples { .program(ObjectWithUid.fromIdentifiable(program1)) .expression(expression) .aggregationType(AggregationType.SUM) - .legendSets(listOf(legendSet1)) + .legendSets(listOf(ObjectWithUid.create(legendSet1.uid()))) .build() fun event(programStage: String, eventDate: Date): Event { diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt index c3cf9d1581..221763cadb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetUidsSeekerMockIntegrationShould.kt @@ -40,11 +40,10 @@ class LegendSetUidsSeekerMockIntegrationShould : BaseMockIntegrationTestFullDisp @Test fun seek_legendSet_uids() { val legendSets = LegendSetUidsSeeker(databaseAdapter).seekUids() - Truth.assertThat(legendSets.size).isEqualTo(5) + Truth.assertThat(legendSets.size).isEqualTo(4) Truth.assertThat(legendSets.contains("TiOkbpGEud4")).isTrue() Truth.assertThat(legendSets.contains("QiOkbpGEud4")).isTrue() Truth.assertThat(legendSets.contains("rtOkbpGEud4")).isTrue() Truth.assertThat(legendSets.contains("Yf6UHoPkd57")).isTrue() - Truth.assertThat(legendSets.contains("Yf6UHoPkd56")).isTrue() } } diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java index 83ff7f1cd6..bfc4e8db4d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java @@ -87,6 +87,6 @@ public void find_by_legend_set() { List legends = d2.legendSetModule().legends() .byLegendSet().eq("QiOkbpGEud4") .blockingGet(); - assertThat(legends.size()).isEqualTo(3); + assertThat(legends.size()).isEqualTo(2); } } \ No newline at end of file diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java index 133a470867..3da12feb67 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java @@ -62,6 +62,6 @@ public void include_legends_as_children() { .withLegends() .one() .blockingGet(); - assertThat(legendSet.legends().size()).isEqualTo(3); + assertThat(legendSet.legends().size()).isEqualTo(2); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt index ccfb28ef32..e6d2e88132 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt @@ -3,7 +3,6 @@ package org.hisp.dhis.android.core.analytics import javax.inject.Inject import org.hisp.dhis.android.core.dataelement.DataElementCollectionRepository import org.hisp.dhis.android.core.indicator.IndicatorCollectionRepository -import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.legendset.LegendCollectionRepository import org.hisp.dhis.android.core.program.ProgramIndicatorCollectionRepository diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt index fe2cc8a504..7af0bb287b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt @@ -39,7 +39,6 @@ import org.hisp.dhis.android.core.analytics.aggregated.internal.evaluator.Analyt import org.hisp.dhis.android.core.analytics.aggregated.internal.evaluator.DataElementSQLEvaluator import org.hisp.dhis.android.core.analytics.aggregated.internal.evaluator.IndicatorEvaluator import org.hisp.dhis.android.core.analytics.aggregated.internal.evaluator.ProgramIndicatorSQLEvaluator -import org.hisp.dhis.android.core.legendset.Legend internal class AnalyticsServiceEvaluatorHelper @Inject constructor( private val dataElementEvaluator: DataElementSQLEvaluator, diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt index 71809812f4..cf3cb190fc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt @@ -28,7 +28,6 @@ package org.hisp.dhis.android.core.analytics.linelist import java.util.Date -import org.hisp.dhis.android.core.legendset.Legend import org.hisp.dhis.android.core.period.Period data class LineListResponse( diff --git a/core/src/sharedTest/resources/legendset/legend_sets.json b/core/src/sharedTest/resources/legendset/legend_sets.json index 7fd34e1146..448f4858b8 100644 --- a/core/src/sharedTest/resources/legendset/legend_sets.json +++ b/core/src/sharedTest/resources/legendset/legend_sets.json @@ -66,6 +66,14 @@ "endValue": 60, "color": "#F38026" }, + { + "id": "rlXteEDaTpt", + "name": "0 - 15", + "startValue": 0, + "endValue": 15, + "color": "#F7A629", + "displayName": "0 - 15" + }, { "id": "kEf6QhFVMab", "name": "15 - 30", From fa6c252adda318cfc41ce85ab6102108044bea47 Mon Sep 17 00:00:00 2001 From: ericampire Date: Wed, 9 Mar 2022 12:38:17 +0200 Subject: [PATCH 145/253] [ANDROSDK-1513] Update targetsdkversion to 31 --- core/build.gradle | 2 +- core/src/main/AndroidManifest.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/build.gradle b/core/build.gradle index 19a35079f3..6526d7dbcf 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -41,7 +41,7 @@ ext { configuration = [ buildToolsVersion: "30.0.2", minSdkVersion : 19, - targetSdkVersion : 30, + targetSdkVersion : 31, versionCode : 260, versionName : "1.6.0-SNAPSHOT" ] diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml index 6e820e4e42..8f2bcf4453 100644 --- a/core/src/main/AndroidManifest.xml +++ b/core/src/main/AndroidManifest.xml @@ -32,6 +32,7 @@ From 9075e40224db2d28e01a4d2f46dbc4cdae09b1be Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 10 Mar 2022 08:12:41 +0100 Subject: [PATCH 146/253] [ANDROSDK-1505] Fix incident date assignation in NTI --- .../core/enrollment/NewTrackerImporterEnrollmentTransformer.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt index f513ec0201..4ecb543687 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt @@ -54,7 +54,7 @@ internal object NewTrackerImporterEnrollmentTransformer { .organisationUnit(o.organisationUnit()) .program(o.program()) .enrolledAt(o.enrollmentDate()) - .occurredAt(o.enrollmentDate()) + .occurredAt(o.incidentDate()) .completedAt(o.completedDate()) .followUp(o.followUp()) .status(o.status()) From 290588849763255ac1bc68ca1c4e1b84d33e7c29 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 9 Mar 2022 15:43:58 +0100 Subject: [PATCH 147/253] [ANDROSDK-1515] Do not delete orphan attributes if using entity endpoint --- .../internal/IdentifiableDataHandler.kt | 4 +- .../internal/IdentifiableDataHandlerImpl.kt | 50 +++--- .../internal/IdentifiableDataHandlerParams.kt | 36 ++++ .../internal/EnrollmentHandler.java | 143 ---------------- .../enrollment/internal/EnrollmentHandler.kt | 123 ++++++++++++++ ...va => EnrollmentPersistenceCallFactory.kt} | 56 +++---- .../core/event/internal/EventHandler.java | 155 ------------------ .../core/event/internal/EventHandler.kt | 125 ++++++++++++++ .../internal/EventPersistenceCallFactory.kt | 9 +- .../TrackedEntityAttributeValueHandler.java | 72 -------- .../TrackedEntityAttributeValueHandler.kt | 37 +++++ ...ackedEntityInstanceDownloadInternalCall.kt | 46 ++++-- .../TrackedEntityInstanceHandler.java | 138 ---------------- .../internal/TrackedEntityInstanceHandler.kt | 139 ++++++++++++++++ ...kedEntityInstancePersistenceCallFactory.kt | 28 ++-- ...ackedEntityInstancesEndpointCallFactory.kt | 4 +- .../trackedentity/internal/TrackerQuery.java | 2 + 17 files changed, 571 insertions(+), 596 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt rename core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/{EnrollmentPersistenceCallFactory.java => EnrollmentPersistenceCallFactory.kt} (61%) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt index 3d9ae1e6e1..7161013dc3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt @@ -35,9 +35,7 @@ internal interface IdentifiableDataHandler where O : DeletableDataObject, O : @JvmSuppressWildcards fun handleMany( oCollection: Collection?, - asRelationship: Boolean, - isFullUpdate: Boolean, - overwrite: Boolean, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? ) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt index 6e31e7fa44..6fe4b1042d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt @@ -27,7 +27,6 @@ */ package org.hisp.dhis.android.core.arch.handlers.internal -import java.util.ArrayList import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper @@ -50,12 +49,12 @@ internal abstract class IdentifiableDataHandlerImpl( o: O?, transformer: (O) -> O, oTransformedCollection: MutableList, - overwrite: Boolean + params: IdentifiableDataHandlerParams ) { if (o == null) { return } - val oTransformed = handleInternal(o, transformer, overwrite) + val oTransformed = handleInternal(o, transformer, params) oTransformedCollection.add(oTransformed) } @@ -64,63 +63,58 @@ internal abstract class IdentifiableDataHandlerImpl( o: O?, transformer: (O) -> O, oTransformedCollection: MutableList, - overwrite: Boolean, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? ) { if (o == null) { return } - val oTransformed = handleInternal(o, transformer, overwrite, relatives) + val oTransformed = handleInternal(o, transformer, params, relatives) oTransformedCollection.add(oTransformed) } - private fun handleInternal(o: O, transformer: (O) -> O, overwrite: Boolean): O { - val o2 = beforeObjectHandled(o, overwrite) + private fun handleInternal(o: O, transformer: (O) -> O, params: IdentifiableDataHandlerParams): O { + val o2 = beforeObjectHandled(o, params) val o3 = transformer(o2) val action = deleteOrPersist(o3) - afterObjectHandled(o3, action, overwrite, null) + afterObjectHandled(o3, action, params, null) return o3 } private fun handleInternal( o: O, transformer: (O) -> O, - overwrite: Boolean, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? ): O { - val o2 = beforeObjectHandled(o, overwrite) + val o2 = beforeObjectHandled(o, params) val o3 = transformer(o2) val action = deleteOrPersist(o3) - afterObjectHandled(o3, action, overwrite, relatives) + afterObjectHandled(o3, action, params, relatives) return o3 } @JvmSuppressWildcards override fun handleMany( oCollection: Collection?, - asRelationship: Boolean, - isFullUpdate: Boolean, - overwrite: Boolean, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? ) { if (oCollection == null) { return } val transformer = - if (asRelationship) { + if (params.asRelationship) { relationshipTransformer() } else { { o: O -> addSyncedState(o) } } - val preHandledCollection = beforeCollectionHandled(oCollection, overwrite, asRelationship) + val preHandledCollection = beforeCollectionHandled(oCollection, params) val transformedCollection: MutableList = ArrayList(preHandledCollection.size) for (o in preHandledCollection) { - handle(o, transformer, transformedCollection, overwrite, relatives) - if (isFullUpdate) { - deleteOrphans(o) - } + handle(o, transformer, transformedCollection, params, relatives) } - afterCollectionHandled(transformedCollection, overwrite) + afterCollectionHandled(transformedCollection, params) } private fun relationshipTransformer(): (O) -> O { @@ -159,7 +153,6 @@ internal abstract class IdentifiableDataHandlerImpl( protected abstract fun addRelationshipState(o: O): O protected abstract fun addSyncedState(o: O): O - protected abstract fun deleteOrphans(o: O) protected fun deleteOrPersist(o: O): HandleAction { val modelUid = o.uid() return if ((CollectionsHelper.isDeleted(o) || deleteIfCondition(o)) && modelUid != null) { @@ -174,27 +167,26 @@ internal abstract class IdentifiableDataHandlerImpl( return false } - protected open fun beforeObjectHandled(o: O, overwrite: Boolean?): O { + protected open fun beforeObjectHandled(o: O, params: IdentifiableDataHandlerParams): O { return o } protected abstract fun afterObjectHandled( o: O, action: HandleAction?, - overwrite: Boolean?, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? ) protected fun beforeCollectionHandled( oCollection: Collection, - overwrite: Boolean, - asRelationship: Boolean + params: IdentifiableDataHandlerParams ): Collection { return when { - overwrite -> { + params.overwrite -> { oCollection } - asRelationship -> { + params.asRelationship -> { removeAllowedExistingObjects( oCollection, listOf(State.RELATIONSHIP.name) @@ -213,7 +205,7 @@ internal abstract class IdentifiableDataHandlerImpl( } } - protected fun afterCollectionHandled(oCollection: Collection?, overwrite: Boolean?) { + protected fun afterCollectionHandled(oCollection: Collection?, params: IdentifiableDataHandlerParams) { /* Method is not abstract since empty action is the default action and we don't want it to * be unnecessarily written in every child. */ diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt new file mode 100644 index 0000000000..a0668638f2 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.arch.handlers.internal + +data class IdentifiableDataHandlerParams( + val hasAllAttributes: Boolean, + val hasAllEnrollments: Boolean, + val overwrite: Boolean, + val asRelationship: Boolean +) diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.java deleted file mode 100644 index 5ec114b580..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.enrollment.internal; - -import android.util.Log; - -import androidx.annotation.NonNull; - -import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner; -import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction; -import org.hisp.dhis.android.core.arch.handlers.internal.Handler; -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler; -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl; -import org.hisp.dhis.android.core.arch.helpers.GeometryHelper; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor; -import org.hisp.dhis.android.core.event.Event; -import org.hisp.dhis.android.core.note.Note; -import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager; -import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager; -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import javax.inject.Inject; - -import dagger.Reusable; - -@Reusable -final class EnrollmentHandler extends IdentifiableDataHandlerImpl { - private final NoteDHISVersionManager noteVersionManager; - private final IdentifiableDataHandler eventHandler; - private final Handler noteHandler; - private final NoteUniquenessManager noteUniquenessManager; - private final OrphanCleaner eventOrphanCleaner; - private final OrphanCleaner relationshipOrphanCleaner; - - @Inject - EnrollmentHandler( - @NonNull RelationshipDHISVersionManager relationshipVersionManager, - @NonNull RelationshipHandler relationshipHandler, - @NonNull NoteDHISVersionManager noteVersionManager, - @NonNull EnrollmentStore enrollmentStore, - @NonNull IdentifiableDataHandler eventHandler, - @NonNull OrphanCleaner eventOrphanCleaner, - @NonNull Handler noteHandler, - @NonNull NoteUniquenessManager noteUniquenessManager, - @NonNull OrphanCleaner relationshipOrphanCleaner) { - super(enrollmentStore, relationshipVersionManager, relationshipHandler); - this.noteVersionManager = noteVersionManager; - this.eventHandler = eventHandler; - this.noteHandler = noteHandler; - this.noteUniquenessManager = noteUniquenessManager; - this.eventOrphanCleaner = eventOrphanCleaner; - this.relationshipOrphanCleaner = relationshipOrphanCleaner; - } - - @Override - protected Enrollment addRelationshipState(Enrollment o) { - return o.toBuilder().aggregatedSyncState(State.RELATIONSHIP).syncState(State.RELATIONSHIP).build(); - } - - @Override - protected Enrollment addSyncedState(Enrollment o) { - return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build(); - } - - @Override - protected void deleteOrphans(Enrollment o) { - relationshipOrphanCleaner.deleteOrphan(o, EnrollmentInternalAccessor.accessRelationships(o)); - } - - @NonNull - @Override - protected Enrollment beforeObjectHandled(Enrollment enrollment, Boolean override) { - if (GeometryHelper.isValid(enrollment.geometry())) { - return enrollment; - } else { - Log.i(this.getClass().getSimpleName(), - "Enrollment " + enrollment.uid() + " has invalid geometry value"); - return enrollment.toBuilder().geometry(null).build(); - } - } - - @Override - protected void afterObjectHandled(Enrollment enrollment, HandleAction action, Boolean overwrite, - RelationshipItemRelatives relatives) { - if (action != HandleAction.Delete) { - eventHandler.handleMany(EnrollmentInternalAccessor.accessEvents(enrollment), - false, false, overwrite, relatives); - - Collection notes = new ArrayList<>(); - if (enrollment.notes() != null) { - for (Note note : enrollment.notes()) { - notes.add(noteVersionManager.transform(Note.NoteType.ENROLLMENT_NOTE, enrollment.uid(), note)); - } - } - Set notesToSync = noteUniquenessManager.buildUniqueCollection( - notes, Note.NoteType.ENROLLMENT_NOTE, enrollment.uid()); - noteHandler.handleMany(notesToSync); - - List relationships = EnrollmentInternalAccessor.accessRelationships(enrollment); - if (relationships != null && !relationships.isEmpty()) { - handleRelationships(relationships, enrollment, relatives); - } - } - - eventOrphanCleaner.deleteOrphan(enrollment, EnrollmentInternalAccessor.accessEvents(enrollment)); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt new file mode 100644 index 0000000000..c5dcb17f97 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.enrollment.internal + +import android.util.Log +import dagger.Reusable +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler +import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager +import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner +import org.hisp.dhis.android.core.arch.handlers.internal.* +import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction +import org.hisp.dhis.android.core.arch.handlers.internal.Handler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor +import org.hisp.dhis.android.core.arch.helpers.GeometryHelper +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.note.Note +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives +import java.util.ArrayList +import javax.inject.Inject + +@Reusable +internal class EnrollmentHandler @Inject constructor( + relationshipVersionManager: RelationshipDHISVersionManager, + relationshipHandler: RelationshipHandler, + private val noteVersionManager: NoteDHISVersionManager, + enrollmentStore: EnrollmentStore, + private val eventHandler: IdentifiableDataHandler, + private val eventOrphanCleaner: OrphanCleaner, + private val noteHandler: Handler, + private val noteUniquenessManager: NoteUniquenessManager, + private val relationshipOrphanCleaner: OrphanCleaner +) : IdentifiableDataHandlerImpl(enrollmentStore, relationshipVersionManager, relationshipHandler) { + + override fun addRelationshipState(o: Enrollment): Enrollment { + return o.toBuilder().aggregatedSyncState(State.RELATIONSHIP).syncState(State.RELATIONSHIP).build() + } + + override fun addSyncedState(o: Enrollment): Enrollment { + return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build() + } + + override fun beforeObjectHandled(o: Enrollment, params: IdentifiableDataHandlerParams): Enrollment { + return if (GeometryHelper.isValid(o.geometry())) { + o + } else { + Log.i( + this.javaClass.simpleName, + "Enrollment " + o.uid() + " has invalid geometry value" + ) + o.toBuilder().geometry(null).build() + } + } + + override fun afterObjectHandled( + o: Enrollment, + action: HandleAction?, + params: IdentifiableDataHandlerParams, + relatives: RelationshipItemRelatives? + ) { + if (action !== HandleAction.Delete) { + val thisParams = IdentifiableDataHandlerParams( + hasAllAttributes = false, + hasAllEnrollments = false, + overwrite = params.overwrite, + asRelationship = false + ) + eventHandler.handleMany(EnrollmentInternalAccessor.accessEvents(o), thisParams, relatives) + val notes: MutableCollection = ArrayList() + if (o.notes() != null) { + for (note in o.notes()!!) { + notes.add(noteVersionManager.transform(Note.NoteType.ENROLLMENT_NOTE, o.uid(), note)) + } + } + val notesToSync = noteUniquenessManager.buildUniqueCollection( + notes, Note.NoteType.ENROLLMENT_NOTE, o.uid() + ) + noteHandler.handleMany(notesToSync) + val relationships = EnrollmentInternalAccessor.accessRelationships(o) + if (relationships != null && relationships.isNotEmpty()) { + handleRelationships(relationships, o, relatives) + } + } + if (params.hasAllEnrollments) { + relationshipOrphanCleaner.deleteOrphan( + o, + EnrollmentInternalAccessor.accessRelationships(o) + ) + } + eventOrphanCleaner.deleteOrphan(o, EnrollmentInternalAccessor.accessEvents(o)) + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt similarity index 61% rename from core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.java rename to core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt index c3ca1d15e4..edb797f5b7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt @@ -25,41 +25,35 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.enrollment.internal -package org.hisp.dhis.android.core.enrollment.internal; - -import androidx.annotation.NonNull; - -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler; -import org.hisp.dhis.android.core.enrollment.Enrollment; - -import java.util.List; - -import javax.inject.Inject; - -import dagger.Reusable; -import io.reactivex.Completable; +import dagger.Reusable +import io.reactivex.Completable +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams +import org.hisp.dhis.android.core.enrollment.Enrollment +import javax.inject.Inject @Reusable -public final class EnrollmentPersistenceCallFactory { - - private final IdentifiableDataHandler enrollmentHandler; - - @Inject - EnrollmentPersistenceCallFactory( - @NonNull IdentifiableDataHandler enrollmentHandler) { - this.enrollmentHandler = enrollmentHandler; - } - - public Completable persistAsRelationships(final List enrollments) { - return persistEnrollmentsInternal(enrollments, true, false, false); +internal class EnrollmentPersistenceCallFactory @Inject constructor( + private val enrollmentHandler: IdentifiableDataHandler +) { + fun persistAsRelationships(enrollments: List): Completable { + return persistEnrollmentsInternal(enrollments, true, false, false) } - private Completable persistEnrollmentsInternal( - final List enrollments, boolean asRelationship, boolean isFullUpdate, boolean overwrite) { - return Completable.defer(() -> { - enrollmentHandler.handleMany(enrollments, asRelationship, isFullUpdate, overwrite, null); - return Completable.complete(); - }); + private fun persistEnrollmentsInternal( + enrollments: List, asRelationship: Boolean, isFullUpdate: Boolean, overwrite: Boolean + ): Completable { + val params = IdentifiableDataHandlerParams( + hasAllAttributes = true, + hasAllEnrollments = isFullUpdate, + overwrite = overwrite, + asRelationship = asRelationship + ) + return Completable.defer { + enrollmentHandler.handleMany(enrollments, params, relatives = null) + Completable.complete() + } } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.java deleted file mode 100644 index 4a4c751d6a..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.event.internal; - -import android.util.Log; - -import androidx.annotation.NonNull; - -import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner; -import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction; -import org.hisp.dhis.android.core.arch.handlers.internal.Handler; -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl; -import org.hisp.dhis.android.core.arch.helpers.GeometryHelper; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.event.Event; -import org.hisp.dhis.android.core.event.EventInternalAccessor; -import org.hisp.dhis.android.core.event.EventStatus; -import org.hisp.dhis.android.core.note.Note; -import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager; -import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager; -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives; -import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueHandler; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import javax.inject.Inject; - -import dagger.Reusable; - -@Reusable -final class EventHandler extends IdentifiableDataHandlerImpl { - private final TrackedEntityDataValueHandler trackedEntityDataValueHandler; - private final Handler noteHandler; - private final NoteDHISVersionManager noteVersionManager; - private final NoteUniquenessManager noteUniquenessManager; - private final OrphanCleaner relationshipOrphanCleaner; - - @Inject - EventHandler( - RelationshipDHISVersionManager relationshipVersionManager, - RelationshipHandler relationshipHandler, - EventStore eventStore, - TrackedEntityDataValueHandler trackedEntityDataValueHandler, - Handler noteHandler, - NoteDHISVersionManager noteVersionManager, - NoteUniquenessManager noteUniquenessManager, - OrphanCleaner relationshipOrphanCleaner) { - super(eventStore, relationshipVersionManager, relationshipHandler); - this.trackedEntityDataValueHandler = trackedEntityDataValueHandler; - this.noteHandler = noteHandler; - this.noteVersionManager = noteVersionManager; - this.noteUniquenessManager = noteUniquenessManager; - this.relationshipOrphanCleaner = relationshipOrphanCleaner; - } - - @NonNull - @Override - protected Event beforeObjectHandled(Event event, Boolean overwrite) { - if (GeometryHelper.isValid(event.geometry())) { - return event; - } else { - Log.i(this.getClass().getSimpleName(), "Event " + event.uid() + " has invalid geometry value"); - return event.toBuilder().geometry(null).build(); - } - } - - @Override - protected void afterObjectHandled(Event event, HandleAction action, Boolean overwrite, - RelationshipItemRelatives relatives) { - final String eventUid = event.uid(); - - if (action == HandleAction.Delete) { - Log.d(this.getClass().getSimpleName(), eventUid + " with no org. unit, invalid eventDate or deleted"); - } else { - if (event.trackedEntityDataValues() == null || event.trackedEntityDataValues().isEmpty()) { - trackedEntityDataValueHandler.removeEventDataValues(eventUid); - } else { - trackedEntityDataValueHandler.handleMany(event.trackedEntityDataValues(), - dataValue -> dataValue.toBuilder().event(eventUid).build()); - } - - Collection notes = new ArrayList<>(); - if (event.notes() != null) { - for (Note note : event.notes()) { - notes.add(noteVersionManager.transform(Note.NoteType.EVENT_NOTE, event.uid(), note)); - } - } - Set notesToSync = noteUniquenessManager.buildUniqueCollection( - notes, Note.NoteType.EVENT_NOTE, event.uid()); - noteHandler.handleMany(notesToSync); - - List relationships = EventInternalAccessor.accessRelationships(event); - if (relationships != null && !relationships.isEmpty()) { - handleRelationships(relationships, event, relatives); - } - } - } - - @Override - protected boolean deleteIfCondition(Event event) { - boolean validEventDate = event.eventDate() != null || - event.status() == EventStatus.SCHEDULE || - event.status() == EventStatus.SKIPPED || - event.status() == EventStatus.OVERDUE; - - return !validEventDate || event.organisationUnit() == null; - } - - @Override - protected Event addRelationshipState(Event o) { - return o.toBuilder().aggregatedSyncState(State.RELATIONSHIP).syncState(State.RELATIONSHIP).build(); - } - - @Override - protected Event addSyncedState(Event o) { - return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build(); - } - - @Override - protected void deleteOrphans(Event o) { - relationshipOrphanCleaner.deleteOrphan(o, EventInternalAccessor.accessRelationships(o)); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt new file mode 100644 index 0000000000..3dafb75e96 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.event.internal + +import android.util.Log +import org.hisp.dhis.android.core.event.EventInternalAccessor.accessRelationships +import dagger.Reusable +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueHandler +import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager +import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager +import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl +import org.hisp.dhis.android.core.arch.helpers.GeometryHelper +import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction +import org.hisp.dhis.android.core.arch.handlers.internal.Handler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives +import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue +import org.hisp.dhis.android.core.event.EventStatus +import org.hisp.dhis.android.core.note.Note +import java.util.ArrayList +import javax.inject.Inject + +@Reusable +internal class EventHandler @Inject constructor( + relationshipVersionManager: RelationshipDHISVersionManager, + relationshipHandler: RelationshipHandler, + eventStore: EventStore, + private val trackedEntityDataValueHandler: TrackedEntityDataValueHandler, + private val noteHandler: Handler, + private val noteVersionManager: NoteDHISVersionManager, + private val noteUniquenessManager: NoteUniquenessManager, + private val relationshipOrphanCleaner: OrphanCleaner +) : IdentifiableDataHandlerImpl(eventStore, relationshipVersionManager, relationshipHandler) { + + override fun beforeObjectHandled(o: Event, params: IdentifiableDataHandlerParams): Event { + return if (GeometryHelper.isValid(o.geometry())) { + o + } else { + Log.i(this.javaClass.simpleName, "Event " + o.uid() + " has invalid geometry value") + o.toBuilder().geometry(null).build() + } + } + + override fun afterObjectHandled( + o: Event, + action: HandleAction?, + params: IdentifiableDataHandlerParams, + relatives: RelationshipItemRelatives? + ) { + val eventUid = o.uid() + if (action === HandleAction.Delete) { + Log.d(this.javaClass.simpleName, "$eventUid with no org. unit, invalid eventDate or deleted") + } else { + if (o.trackedEntityDataValues() == null || o.trackedEntityDataValues()!!.isEmpty()) { + trackedEntityDataValueHandler.removeEventDataValues(eventUid) + } else { + trackedEntityDataValueHandler.handleMany( + o.trackedEntityDataValues() + ) { dataValue: TrackedEntityDataValue -> dataValue.toBuilder().event(eventUid).build() } + } + val notes: MutableCollection = ArrayList() + if (o.notes() != null) { + for (note in o.notes()!!) { + notes.add(noteVersionManager.transform(Note.NoteType.EVENT_NOTE, o.uid(), note)) + } + } + val notesToSync = noteUniquenessManager.buildUniqueCollection( + notes, Note.NoteType.EVENT_NOTE, o.uid() + ) + noteHandler.handleMany(notesToSync) + val relationships = accessRelationships(o) + if (relationships != null && relationships.isNotEmpty()) { + handleRelationships(relationships, o, relatives) + } + } + if (params.hasAllEnrollments) { + relationshipOrphanCleaner.deleteOrphan(o, accessRelationships(o)) + } + } + + override fun deleteIfCondition(o: Event): Boolean { + val validEventDate = + o.eventDate() != null || o.status() == EventStatus.SCHEDULE || o.status() == EventStatus.SKIPPED || o.status() == EventStatus.OVERDUE + return !validEventDate || o.organisationUnit() == null + } + + override fun addRelationshipState(o: Event): Event { + return o.toBuilder().aggregatedSyncState(State.RELATIONSHIP).syncState(State.RELATIONSHIP).build() + } + + override fun addSyncedState(o: Event): Event { + return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build() + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt index ba62e8e131..6d6a780a1c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt @@ -32,6 +32,7 @@ import io.reactivex.Completable import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.organisationunit.OrganisationUnit import org.hisp.dhis.android.core.organisationunit.internal.OrganisationUnitModuleDownloader @@ -57,7 +58,13 @@ internal class EventPersistenceCallFactory @Inject constructor( relatives: RelationshipItemRelatives? ): Completable { return Completable.defer { - eventHandler.handleMany(events, asRelationship, false, false, relatives) + val params = IdentifiableDataHandlerParams( + hasAllAttributes = false, + hasAllEnrollments = false, + overwrite = false, + asRelationship = asRelationship + ) + eventHandler.handleMany(events, params, relatives) if (hasMissingOrganisationUnitUids(events)) { organisationUnitDownloader.refreshOrganisationUnits() } else { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.java deleted file mode 100644 index 1ce46563c4..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; -import org.hisp.dhis.android.core.arch.handlers.internal.HandlerWithTransformer; -import org.hisp.dhis.android.core.arch.handlers.internal.ObjectWithoutUidHandlerImpl; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -final class TrackedEntityAttributeValueHandler extends ObjectWithoutUidHandlerImpl { - private final TrackedEntityAttributeValueStore trackedEntityAttributeValueStore; - - TrackedEntityAttributeValueHandler(TrackedEntityAttributeValueStore trackedEntityAttributeValueStore) { - super(trackedEntityAttributeValueStore); - this.trackedEntityAttributeValueStore = trackedEntityAttributeValueStore; - } - - @Override - protected void afterCollectionHandled(Collection trackedEntityAttributeValues) { - removeNotExistingAttributeValuesInServer(trackedEntityAttributeValues); - } - - private void removeNotExistingAttributeValuesInServer( - Collection trackedEntityAttributeValues) { - if (trackedEntityAttributeValues.isEmpty()) { - return; - } - - String teiUid = trackedEntityAttributeValues.iterator().next().trackedEntityInstance(); - - List attributeUids = new ArrayList<>(); - for (TrackedEntityAttributeValue value : trackedEntityAttributeValues) { - attributeUids.add(value.trackedEntityAttribute()); - } - - trackedEntityAttributeValueStore.deleteByInstanceAndNotInAttributes(teiUid, attributeUids); - } - - public static HandlerWithTransformer create(DatabaseAdapter databaseAdapter) { - return new TrackedEntityAttributeValueHandler(TrackedEntityAttributeValueStoreImpl.create(databaseAdapter)); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt new file mode 100644 index 0000000000..ca6bba3ed7 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import org.hisp.dhis.android.core.arch.handlers.internal.ObjectWithoutUidHandlerImpl +import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue + +internal class TrackedEntityAttributeValueHandler( + trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore +) : ObjectWithoutUidHandlerImpl( + trackedEntityAttributeValueStore +) \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index 72102bf283..823d97b266 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -41,6 +41,7 @@ import org.hisp.dhis.android.core.arch.api.paging.internal.ApiPagingEngine import org.hisp.dhis.android.core.arch.api.paging.internal.Paging import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.program.internal.ProgramDataDownloadParams import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives @@ -112,9 +113,9 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( iterationCount: Int ): Boolean { return params.limitByProgram() != true && - iterables.teisCount < bundle.commonParams().limit && - iterables.orgUnitsBundleToDownload.isNotEmpty() && - iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) + iterables.teisCount < bundle.commonParams().limit && + iterables.orgUnitsBundleToDownload.isNotEmpty() && + iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) } private fun iterateBundle( @@ -238,13 +239,16 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( teiQueryBuilder.page(paging.page()) val pageTEIs = rxApiCallExecutor.wrapSingle( - endpointCallFactory.getCall(teiQueryBuilder.build()), true + endpointCallFactory.getCollectionCall(teiQueryBuilder.build()), true ).blockingGet().items() val teisToPersist = getTEIsToPersist(paging, pageTEIs) - val isFullUpdate = baseQuery.commonParams().program == null - persistenceCallFactory.persistTEIs(teisToPersist, isFullUpdate, overwrite, relatives).blockingAwait() + val hasAllAttributes = true + val hasAllEnrollments = baseQuery.commonParams().program == null + + persistenceCallFactory.persistTEIs(teisToPersist, hasAllAttributes, hasAllEnrollments, overwrite, relatives) + .blockingAwait() downloadedTEIsForCombination += teisToPersist.size @@ -271,13 +275,20 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( for (uid in bundle.commonParams().uids) { try { - val tei = apiCallExecutor.executeObjectCallWithErrorCatcher( - endpointCallFactory.getSingleCall(uid, teiQuery), TrackedEntityInstanceCallErrorCatcher() - ) + val tei = querySingleTei(uid, teiQuery) if (tei != null) { - val isFullUpdate = teiQuery.commonParams().program == null - persistenceCallFactory.persistTEIs(listOf(tei), isFullUpdate, overwrite, relatives).blockingAwait() + val hasAllAttributes = teiQuery.commonParams().program == null + val hasAllEnrollments = teiQuery.commonParams().program == null + + persistenceCallFactory.persistTEIs( + listOf(tei), + hasAllAttributes, + hasAllEnrollments, + overwrite, + relatives + ).blockingAwait() + result.teiCount++ } } catch (d2Error: D2Error) { @@ -290,6 +301,19 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( return result } + private fun querySingleTei(uid: String, query: TrackerQuery): TrackedEntityInstance? { + return if (query.commonParams().program == null) { + val collectionQuery = query.toBuilder().uids(listOf(uid)).build() + rxApiCallExecutor.wrapSingle( + endpointCallFactory.getCollectionCall(collectionQuery), true + ).blockingGet().items().firstOrNull() + } else { + apiCallExecutor.executeObjectCallWithErrorCatcher( + endpointCallFactory.getEntityCall(uid, query), TrackedEntityInstanceCallErrorCatcher() + ) + } + } + private fun getTEIsToPersist(paging: Paging, pageTEIs: List): List { return if (paging.isFullPage && pageTEIs.size > paging.previousItemsToSkipCount()) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.java deleted file mode 100644 index ba18ab1575..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import android.util.Log; - -import androidx.annotation.NonNull; - -import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner; -import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction; -import org.hisp.dhis.android.core.arch.handlers.internal.HandlerWithTransformer; -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler; -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl; -import org.hisp.dhis.android.core.arch.helpers.GeometryHelper; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager; -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor; - -import java.util.Collection; -import java.util.List; - -import javax.inject.Inject; - -import dagger.Reusable; - -@Reusable -final class TrackedEntityInstanceHandler extends IdentifiableDataHandlerImpl { - private final RelationshipDHISVersionManager relationshipVersionManager; - private final HandlerWithTransformer trackedEntityAttributeValueHandler; - private final IdentifiableDataHandler enrollmentHandler; - private final OrphanCleaner enrollmentOrphanCleaner; - private final OrphanCleaner relationshipOrphanCleaner; - - @Inject - TrackedEntityInstanceHandler( - @NonNull RelationshipDHISVersionManager relationshipVersionManager, - @NonNull RelationshipHandler relationshipHandler, - @NonNull TrackedEntityInstanceStore trackedEntityInstanceStore, - @NonNull HandlerWithTransformer trackedEntityAttributeValueHandler, - @NonNull IdentifiableDataHandler enrollmentHandler, - @NonNull OrphanCleaner enrollmentOrphanCleaner, - @NonNull OrphanCleaner relationshipOrphanCleaner) { - super(trackedEntityInstanceStore, relationshipVersionManager, relationshipHandler); - this.relationshipVersionManager = relationshipVersionManager; - this.trackedEntityAttributeValueHandler = trackedEntityAttributeValueHandler; - this.enrollmentHandler = enrollmentHandler; - this.enrollmentOrphanCleaner = enrollmentOrphanCleaner; - this.relationshipOrphanCleaner = relationshipOrphanCleaner; - } - - @NonNull - @Override - protected TrackedEntityInstance beforeObjectHandled(TrackedEntityInstance tei, Boolean overwrite) { - if (GeometryHelper.isValid(tei.geometry())) { - return tei; - } else { - Log.i(this.getClass().getSimpleName(), - "TrackedEntityInstance " + tei.uid() + " has invalid geometry value"); - return tei.toBuilder().geometry(null).build(); - } - } - - @Override - protected void afterObjectHandled(final TrackedEntityInstance trackedEntityInstance, HandleAction action, - Boolean overwrite, RelationshipItemRelatives relatives) { - if (action != HandleAction.Delete) { - trackedEntityAttributeValueHandler.handleMany( - trackedEntityInstance.trackedEntityAttributeValues(), - value -> value.toBuilder().trackedEntityInstance(trackedEntityInstance.uid()).build()); - - List enrollments = - TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance); - if (enrollments != null) { - enrollmentHandler.handleMany(enrollments, false, false, overwrite, relatives); - } - - List relationships = - TrackedEntityInstanceInternalAccessor.accessRelationships(trackedEntityInstance); - if (relationships != null && !relationships.isEmpty()) { - Collection relationshipsList = - relationshipVersionManager.from229Compatible(relationships); - handleRelationships(relationshipsList, trackedEntityInstance, relatives); - } - } - } - - @Override - protected TrackedEntityInstance addRelationshipState(TrackedEntityInstance o) { - return o.toBuilder().aggregatedSyncState(State.RELATIONSHIP).syncState(State.RELATIONSHIP).build(); - } - - @Override - protected TrackedEntityInstance addSyncedState(TrackedEntityInstance o) { - return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build(); - } - - @Override - protected void deleteOrphans(TrackedEntityInstance o) { - enrollmentOrphanCleaner.deleteOrphan(o, - TrackedEntityInstanceInternalAccessor.accessEnrollments(o)); - - relationshipOrphanCleaner.deleteOrphan(o, - TrackedEntityInstanceInternalAccessor.accessRelationships(o)); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt new file mode 100644 index 0000000000..7b1b8fa921 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import android.util.Log +import dagger.Reusable +import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner +import org.hisp.dhis.android.core.arch.handlers.internal.* +import org.hisp.dhis.android.core.arch.helpers.GeometryHelper +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives +import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor +import javax.inject.Inject + +@Reusable +internal class TrackedEntityInstanceHandler @Inject constructor( + private val relationshipVersionManager: RelationshipDHISVersionManager, + relationshipHandler: RelationshipHandler, + trackedEntityInstanceStore: TrackedEntityInstanceStore, + private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore, + private val trackedEntityAttributeValueHandler: HandlerWithTransformer, + private val enrollmentHandler: IdentifiableDataHandler, + private val enrollmentOrphanCleaner: OrphanCleaner, + private val relationshipOrphanCleaner: OrphanCleaner +) : IdentifiableDataHandlerImpl( + trackedEntityInstanceStore, + relationshipVersionManager, + relationshipHandler +) { + override fun beforeObjectHandled( + o: TrackedEntityInstance, + params: IdentifiableDataHandlerParams + ): TrackedEntityInstance { + return if (GeometryHelper.isValid(o.geometry())) { + o + } else { + Log.i( + this.javaClass.simpleName, + "TrackedEntityInstance " + o.uid() + " has invalid geometry value" + ) + o.toBuilder().geometry(null).build() + } + } + + override fun afterObjectHandled( + o: TrackedEntityInstance, action: HandleAction?, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? + ) { + if (action !== HandleAction.Delete) { + trackedEntityAttributeValueHandler.handleMany( + o.trackedEntityAttributeValues() + ) { value: TrackedEntityAttributeValue -> + value.toBuilder().trackedEntityInstance(o.uid()).build() + } + + if (params.hasAllAttributes) { + deleteOrphanAttributes(o) + } else { + // TODO Delete program attributes + } + + val enrollments = TrackedEntityInstanceInternalAccessor.accessEnrollments(o) + if (enrollments != null) { + val thisParams = IdentifiableDataHandlerParams( + hasAllAttributes = false, + hasAllEnrollments = false, + params.overwrite, + asRelationship = false) + enrollmentHandler.handleMany(enrollments, thisParams, relatives) + } + val relationships = TrackedEntityInstanceInternalAccessor.accessRelationships(o) + if (relationships != null && relationships.isNotEmpty()) { + val relationshipsList = relationshipVersionManager.from229Compatible(relationships) + handleRelationships(relationshipsList, o, relatives) + } + if (params.hasAllEnrollments) { + enrollmentOrphanCleaner.deleteOrphan( + o, + TrackedEntityInstanceInternalAccessor.accessEnrollments(o) + ) + relationshipOrphanCleaner.deleteOrphan( + o, + TrackedEntityInstanceInternalAccessor.accessRelationships(o) + ) + } + } + } + + override fun addRelationshipState(o: TrackedEntityInstance): TrackedEntityInstance { + return o.toBuilder().aggregatedSyncState(State.RELATIONSHIP).syncState(State.RELATIONSHIP).build() + } + + override fun addSyncedState(o: TrackedEntityInstance): TrackedEntityInstance { + return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build() + } + + private fun deleteOrphanAttributes(tei: TrackedEntityInstance) { + val trackedEntityAttributeValues = tei.trackedEntityAttributeValues() + + if (trackedEntityAttributeValues.isNullOrEmpty()) { + return + } + + val attributeUids = trackedEntityAttributeValues.mapNotNull { it.trackedEntityAttribute() } + + trackedEntityAttributeValueStore.deleteByInstanceAndNotInAttributes(tei.uid(), attributeUids) + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt index a8f729a6e2..65da6466a1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable import io.reactivex.Completable +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import javax.inject.Inject import org.hisp.dhis.android.core.organisationunit.internal.OrganisationUnitModuleDownloader import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives @@ -42,33 +43,38 @@ internal class TrackedEntityInstancePersistenceCallFactory @Inject constructor( ) { fun persistTEIs( trackedEntityInstances: List, - isFullUpdate: Boolean, + hasAllAttributes: Boolean, + hasAllEnrollments: Boolean, overwrite: Boolean, relatives: RelationshipItemRelatives ): Completable { - return persistTEIsInternal(trackedEntityInstances, false, isFullUpdate, overwrite, relatives) + val params = IdentifiableDataHandlerParams( + hasAllAttributes = hasAllAttributes, + hasAllEnrollments = hasAllEnrollments, + overwrite = overwrite, + asRelationship = false + ) + return persistTEIsInternal(trackedEntityInstances, params, relatives) } fun persistRelationships(trackedEntityInstances: List): Completable { - return persistTEIsInternal( - trackedEntityInstances, - asRelationship = true, - isFullUpdate = false, + val params = IdentifiableDataHandlerParams( + hasAllAttributes = false, + hasAllEnrollments = false, overwrite = false, - relatives = null + asRelationship = true ) + return persistTEIsInternal(trackedEntityInstances, params, relatives = null) } private fun persistTEIsInternal( trackedEntityInstances: List, - asRelationship: Boolean, - isFullUpdate: Boolean, - overwrite: Boolean, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? ): Completable { return Completable.defer { trackedEntityInstanceHandler.handleMany( - trackedEntityInstances, asRelationship, isFullUpdate, overwrite, relatives + trackedEntityInstances, params, relatives ) if (uidsHelper.hasMissingOrganisationUnitUids(trackedEntityInstances)) { organisationUnitDownloader.refreshOrganisationUnits() diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt index 3d112dd41e..5fdf1bc422 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt @@ -40,7 +40,7 @@ internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( private val trackedEntityInstanceService: TrackedEntityInstanceService ) { - fun getCall(query: TrackerQuery): Single> { + fun getCollectionCall(query: TrackerQuery): Single> { return trackedEntityInstanceService.getTrackedEntityInstances( getUidStr(query), query.orgUnit(), @@ -76,7 +76,7 @@ internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( } } - fun getSingleCall(uid: String, query: TrackerQuery): Call { + fun getEntityCall(uid: String, query: TrackerQuery): Call { return trackedEntityInstanceService.getSingleTrackedEntityInstance( uid, query.commonParams().ouMode.name, diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java index 5ae35d34fe..0fcd382f76 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java @@ -57,6 +57,8 @@ abstract class TrackerQuery extends BaseQuery { @Nullable abstract String lastUpdatedStr(); + abstract Builder toBuilder(); + static Builder builder() { return new AutoValue_TrackerQuery.Builder() .page(1) From d7990cba6f39f11a473b60a9aa48aa96ef0c475d Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 9 Mar 2022 16:50:02 +0100 Subject: [PATCH 148/253] [ANDROSDK-1515] Adapt tests --- ...EntityInstanceCallMockIntegrationShould.kt | 28 +- .../enrollment/internal/EnrollmentHandler.kt | 36 +-- .../EnrollmentPersistenceCallFactory.kt | 9 +- .../core/event/internal/EventHandler.kt | 52 ++-- .../TrackedEntityAttributeValueHandler.kt | 2 +- ...ackedEntityInstanceDownloadInternalCall.kt | 25 +- .../internal/TrackedEntityInstanceHandler.kt | 13 +- ...kedEntityInstancePersistenceCallFactory.kt | 2 +- .../tracked_entity_instance_collection.json | 155 +++++++++++ .../internal/EnrollmentHandlerShould.java | 185 ------------- .../internal/EnrollmentHandlerShould.kt | 141 ++++++++++ .../event/internal/EventHandlerShould.java | 186 ------------- .../core/event/internal/EventHandlerShould.kt | 151 +++++++++++ .../TrackedEntityInstanceHandlerShould.java | 253 ------------------ .../TrackedEntityInstanceHandlerShould.kt | 237 ++++++++++++++++ 15 files changed, 780 insertions(+), 695 deletions(-) create mode 100644 core/src/sharedTest/resources/trackedentity/tracked_entity_instance_collection.json delete mode 100644 core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.java create mode 100644 core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt delete mode 100644 core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.java create mode 100644 core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt delete mode 100644 core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.java create mode 100644 core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt index 8fe252b8f5..bf14cdf00b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt @@ -57,26 +57,33 @@ class TrackedEntityInstanceCallMockIntegrationShould : BaseMockIntegrationTestMe val teiUid = "PgmUFEQYZdt" dhis2MockServer.enqueueSystemInfoResponse() - dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_single.json") + dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_collection.json") d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() - verifyDownloadedTrackedEntityInstanceSingle("trackedentity/tracked_entity_instance_single.json", teiUid) + verifyDownloadedTrackedEntityInstanceSingle("trackedentity/tracked_entity_instance.json", teiUid) } @Test fun remove_data_removed_in_server_after_second_download() { val teiUid = "PgmUFEQYZdt" + val program = "lxAQ7Zs9VYR" dhis2MockServer.enqueueSystemInfoResponse() dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_single.json") - d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + d2.trackedEntityModule().trackedEntityInstanceDownloader() + .byUid().eq(teiUid) + .byProgramUid(program) + .blockingDownload() dhis2MockServer.enqueueSystemInfoResponse() dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance_with_removed_data_single.json") - d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + d2.trackedEntityModule().trackedEntityInstanceDownloader() + .byUid().eq(teiUid) + .byProgramUid(program) + .blockingDownload() verifyDownloadedTrackedEntityInstanceSingle( "trackedentity/tracked_entity_instance_with_removed_data_single.json", @@ -87,11 +94,15 @@ class TrackedEntityInstanceCallMockIntegrationShould : BaseMockIntegrationTestMe @Test fun download_glass_protected_tracked_entity_instance() { val teiUid = "PgmUFEQYZdt" + val program = "lxAQ7Zs9VYR" dhis2MockServer.enqueueSystemInfoResponse() dhis2MockServer.enqueueMockResponse(401, "trackedentity/glass/glass_protected_tei_failure.json") try { - d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + d2.trackedEntityModule().trackedEntityInstanceDownloader() + .byUid().eq(teiUid) + .byProgramUid(program) + .blockingDownload() fail("It should throw ownership error") } catch (e: RuntimeException) { assertThat(e.cause is D2Error).isTrue() @@ -99,11 +110,14 @@ class TrackedEntityInstanceCallMockIntegrationShould : BaseMockIntegrationTestMe } dhis2MockServer.enqueueMockResponse("trackedentity/glass/break_glass_successful.json") - d2.trackedEntityModule().ownershipManager().blockingBreakGlass(teiUid, "lxAQ7Zs9VYR", "Reason") + d2.trackedEntityModule().ownershipManager().blockingBreakGlass(teiUid, program, "Reason") dhis2MockServer.enqueueSystemInfoResponse() dhis2MockServer.enqueueMockResponse("trackedentity/tracked_entity_instance.json") - d2.trackedEntityModule().trackedEntityInstanceDownloader().byUid().eq(teiUid).blockingDownload() + d2.trackedEntityModule().trackedEntityInstanceDownloader() + .byUid().eq(teiUid) + .byProgramUid(program) + .blockingDownload() verifyDownloadedTrackedEntityInstance("trackedentity/tracked_entity_instance.json", teiUid) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt index c5dcb17f97..415ef9dc3a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt @@ -29,26 +29,25 @@ package org.hisp.dhis.android.core.enrollment.internal import android.util.Log import dagger.Reusable -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler -import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager +import javax.inject.Inject import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner import org.hisp.dhis.android.core.arch.handlers.internal.* import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.arch.handlers.internal.Handler import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl -import org.hisp.dhis.android.core.enrollment.Enrollment -import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager -import org.hisp.dhis.android.core.relationship.Relationship -import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor import org.hisp.dhis.android.core.arch.helpers.GeometryHelper import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.note.Note +import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager +import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives -import java.util.ArrayList -import javax.inject.Inject @Reusable internal class EnrollmentHandler @Inject constructor( @@ -97,16 +96,17 @@ internal class EnrollmentHandler @Inject constructor( asRelationship = false ) eventHandler.handleMany(EnrollmentInternalAccessor.accessEvents(o), thisParams, relatives) - val notes: MutableCollection = ArrayList() - if (o.notes() != null) { - for (note in o.notes()!!) { - notes.add(noteVersionManager.transform(Note.NoteType.ENROLLMENT_NOTE, o.uid(), note)) + + o.notes()?.let { notes -> + val transformed = notes.map { note -> + noteVersionManager.transform(Note.NoteType.ENROLLMENT_NOTE, o.uid(), note) } + val notesToSync = noteUniquenessManager.buildUniqueCollection( + transformed, Note.NoteType.ENROLLMENT_NOTE, o.uid() + ) + noteHandler.handleMany(notesToSync) } - val notesToSync = noteUniquenessManager.buildUniqueCollection( - notes, Note.NoteType.ENROLLMENT_NOTE, o.uid() - ) - noteHandler.handleMany(notesToSync) + val relationships = EnrollmentInternalAccessor.accessRelationships(o) if (relationships != null && relationships.isNotEmpty()) { handleRelationships(relationships, o, relatives) @@ -120,4 +120,4 @@ internal class EnrollmentHandler @Inject constructor( } eventOrphanCleaner.deleteOrphan(o, EnrollmentInternalAccessor.accessEvents(o)) } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt index edb797f5b7..35786bcd1c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt @@ -29,10 +29,10 @@ package org.hisp.dhis.android.core.enrollment.internal import dagger.Reusable import io.reactivex.Completable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import org.hisp.dhis.android.core.enrollment.Enrollment -import javax.inject.Inject @Reusable internal class EnrollmentPersistenceCallFactory @Inject constructor( @@ -43,7 +43,10 @@ internal class EnrollmentPersistenceCallFactory @Inject constructor( } private fun persistEnrollmentsInternal( - enrollments: List, asRelationship: Boolean, isFullUpdate: Boolean, overwrite: Boolean + enrollments: List, + asRelationship: Boolean, + isFullUpdate: Boolean, + overwrite: Boolean ): Completable { val params = IdentifiableDataHandlerParams( hasAllAttributes = true, @@ -56,4 +59,4 @@ internal class EnrollmentPersistenceCallFactory @Inject constructor( Completable.complete() } } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt index 3dafb75e96..f9f83e8b3b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt @@ -28,28 +28,27 @@ package org.hisp.dhis.android.core.event.internal import android.util.Log -import org.hisp.dhis.android.core.event.EventInternalAccessor.accessRelationships import dagger.Reusable -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler -import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueHandler -import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager -import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager +import javax.inject.Inject import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner -import org.hisp.dhis.android.core.relationship.Relationship -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl -import org.hisp.dhis.android.core.arch.helpers.GeometryHelper import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.arch.handlers.internal.Handler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerImpl import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams +import org.hisp.dhis.android.core.arch.helpers.GeometryHelper import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.event.Event -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives -import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue +import org.hisp.dhis.android.core.event.EventInternalAccessor.accessRelationships import org.hisp.dhis.android.core.event.EventStatus import org.hisp.dhis.android.core.note.Note -import java.util.ArrayList -import javax.inject.Inject +import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager +import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives +import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueHandler @Reusable internal class EventHandler @Inject constructor( @@ -89,16 +88,18 @@ internal class EventHandler @Inject constructor( o.trackedEntityDataValues() ) { dataValue: TrackedEntityDataValue -> dataValue.toBuilder().event(eventUid).build() } } - val notes: MutableCollection = ArrayList() - if (o.notes() != null) { - for (note in o.notes()!!) { - notes.add(noteVersionManager.transform(Note.NoteType.EVENT_NOTE, o.uid(), note)) + + o.notes()?.let { notes -> + val transformed = notes.map { note -> + noteVersionManager.transform(Note.NoteType.EVENT_NOTE, o.uid(), note) } + + val notesToSync = noteUniquenessManager.buildUniqueCollection( + transformed, Note.NoteType.EVENT_NOTE, o.uid() + ) + noteHandler.handleMany(notesToSync) } - val notesToSync = noteUniquenessManager.buildUniqueCollection( - notes, Note.NoteType.EVENT_NOTE, o.uid() - ) - noteHandler.handleMany(notesToSync) + val relationships = accessRelationships(o) if (relationships != null && relationships.isNotEmpty()) { handleRelationships(relationships, o, relatives) @@ -110,8 +111,11 @@ internal class EventHandler @Inject constructor( } override fun deleteIfCondition(o: Event): Boolean { - val validEventDate = - o.eventDate() != null || o.status() == EventStatus.SCHEDULE || o.status() == EventStatus.SKIPPED || o.status() == EventStatus.OVERDUE + val validEventDate = o.eventDate() != null || + o.status() == EventStatus.SCHEDULE || + o.status() == EventStatus.SKIPPED || + o.status() == EventStatus.OVERDUE + return !validEventDate || o.organisationUnit() == null } @@ -122,4 +126,4 @@ internal class EventHandler @Inject constructor( override fun addSyncedState(o: Event): Event { return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build() } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt index ca6bba3ed7..5efcc95fdd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt @@ -34,4 +34,4 @@ internal class TrackedEntityAttributeValueHandler( trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore ) : ObjectWithoutUidHandlerImpl( trackedEntityAttributeValueStore -) \ No newline at end of file +) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index 823d97b266..696e0f6305 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -41,7 +41,6 @@ import org.hisp.dhis.android.core.arch.api.paging.internal.ApiPagingEngine import org.hisp.dhis.android.core.arch.api.paging.internal.Paging import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.program.internal.ProgramDataDownloadParams import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives @@ -113,9 +112,9 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( iterationCount: Int ): Boolean { return params.limitByProgram() != true && - iterables.teisCount < bundle.commonParams().limit && - iterables.orgUnitsBundleToDownload.isNotEmpty() && - iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) + iterables.teisCount < bundle.commonParams().limit && + iterables.orgUnitsBundleToDownload.isNotEmpty() && + iterationCount < max(bundle.commonParams().limit * BUNDLE_SECURITY_FACTOR, BUNDLE_ITERATION_LIMIT) } private fun iterateBundle( @@ -275,10 +274,12 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( for (uid in bundle.commonParams().uids) { try { - val tei = querySingleTei(uid, teiQuery) + val useEntityEndpoint = teiQuery.commonParams().program != null + + val tei = querySingleTei(uid, useEntityEndpoint, teiQuery) if (tei != null) { - val hasAllAttributes = teiQuery.commonParams().program == null + val hasAllAttributes = !useEntityEndpoint val hasAllEnrollments = teiQuery.commonParams().program == null persistenceCallFactory.persistTEIs( @@ -301,16 +302,16 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( return result } - private fun querySingleTei(uid: String, query: TrackerQuery): TrackedEntityInstance? { - return if (query.commonParams().program == null) { + private fun querySingleTei(uid: String, useEntityEndpoint: Boolean, query: TrackerQuery): TrackedEntityInstance? { + return if (useEntityEndpoint) { + apiCallExecutor.executeObjectCallWithErrorCatcher( + endpointCallFactory.getEntityCall(uid, query), TrackedEntityInstanceCallErrorCatcher() + ) + } else { val collectionQuery = query.toBuilder().uids(listOf(uid)).build() rxApiCallExecutor.wrapSingle( endpointCallFactory.getCollectionCall(collectionQuery), true ).blockingGet().items().firstOrNull() - } else { - apiCallExecutor.executeObjectCallWithErrorCatcher( - endpointCallFactory.getEntityCall(uid, query), TrackedEntityInstanceCallErrorCatcher() - ) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt index 7b1b8fa921..253344174e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.trackedentity.internal import android.util.Log import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner import org.hisp.dhis.android.core.arch.handlers.internal.* import org.hisp.dhis.android.core.arch.helpers.GeometryHelper @@ -41,7 +42,6 @@ import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelative import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor -import javax.inject.Inject @Reusable internal class TrackedEntityInstanceHandler @Inject constructor( @@ -74,8 +74,10 @@ internal class TrackedEntityInstanceHandler @Inject constructor( } override fun afterObjectHandled( - o: TrackedEntityInstance, action: HandleAction?, - params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives? + o: TrackedEntityInstance, + action: HandleAction?, + params: IdentifiableDataHandlerParams, + relatives: RelationshipItemRelatives? ) { if (action !== HandleAction.Delete) { trackedEntityAttributeValueHandler.handleMany( @@ -96,7 +98,8 @@ internal class TrackedEntityInstanceHandler @Inject constructor( hasAllAttributes = false, hasAllEnrollments = false, params.overwrite, - asRelationship = false) + asRelationship = false + ) enrollmentHandler.handleMany(enrollments, thisParams, relatives) } val relationships = TrackedEntityInstanceInternalAccessor.accessRelationships(o) @@ -136,4 +139,4 @@ internal class TrackedEntityInstanceHandler @Inject constructor( trackedEntityAttributeValueStore.deleteByInstanceAndNotInAttributes(tei.uid(), attributeUids) } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt index 65da6466a1..91812fa103 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt @@ -29,8 +29,8 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable import io.reactivex.Completable -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import javax.inject.Inject +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import org.hisp.dhis.android.core.organisationunit.internal.OrganisationUnitModuleDownloader import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance diff --git a/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_collection.json b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_collection.json new file mode 100644 index 0000000000..ad76bc5f10 --- /dev/null +++ b/core/src/sharedTest/resources/trackedentity/tracked_entity_instance_collection.json @@ -0,0 +1,155 @@ +{ + "trackedEntityInstances": [ + { + "lastUpdated": "2015-10-15T11:32:27.242", + "created": "2014-06-06T20:44:21.375", + "trackedEntityType": "nEenWmSyUEp", + "orgUnit": "DiszpKrYNg8", + "trackedEntityInstance": "PgmUFEQYZdt", + "coordinates": "[9,9]", + "geometry": { + "type": "Point", + "coordinates": [ + 9.0, + 9.0 + ] + }, + "deleted": false, + "relationships": [], + "attributes": [ + { + "lastUpdated": "2017-12-12T07:35:12.904", + "created": "2017-12-12T07:35:11.366", + "attribute": "cejWyOfXge6", + "value": "1972-11-08" + } + ], + "enrollments": [ + { + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "p6xHz0sbDlx", + "trackedEntityInstance": "PgmUFEQYZdt", + "enrollmentDate": "2017-12-12T01:00:00.000", + "followup": false, + "deleted": false, + "incidentDate": "2017-12-12T07:33:52.993", + "status": "ACTIVE", + "events": [ + { + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T00:00:00.000", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "p6xHz0sbDlx", + "event": "yVTi4EG84wp", + "eventDate": "2017-12-12T00:00:00.000", + "status": "SCHEDULE", + "created": "2017-12-12T07:33:53.613", + "lastUpdated": "2017-12-12T07:35:11.917", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:35:12.167", + "storedBy": "android", + "created": "2017-12-12T07:35:12.166", + "dataElement": "sWoqcoByYmD", + "value": "false", + "providedElsewhere": false + } + ] + } + ], + "notes": [] + }, + { + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "trackedEntityInstance": "PgmUFEQYZdt", + "enrollmentDate": "2017-01-20T00:00:00.000", + "followup": false, + "deleted": false, + "incidentDate": "2017-01-20T00:00:00.000", + "status": "CANCELLED", + "events": [ + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:30:12.535", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "AUEQ24HuW4H", + "eventDate": "2017-01-20T00:00:00.000", + "status": "ACTIVE", + "created": "2017-01-20T12:14:46.389", + "lastUpdated": "2017-12-12T07:30:12.536", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:30:12.541", + "storedBy": "android", + "created": "2017-12-12T07:30:12.541", + "dataElement": "sWoqcoByYmD", + "value": "medication 1", + "providedElsewhere": false + } + ] + }, + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:30:41.755", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "LN9rXOMdkDM", + "eventDate": "2017-12-12T00:00:00.000", + "status": "ACTIVE", + "created": "2017-12-12T07:30:16.658", + "lastUpdated": "2017-12-12T07:30:41.756", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:30:41.762", + "storedBy": "android", + "created": "2017-12-12T07:30:41.762", + "dataElement": "sWoqcoByYmD", + "value": "Sufficiently immunized", + "providedElsewhere": false + } + ] + }, + { + "attributeOptionCombo": "bRowv6yZOF2", + "programStage": "dBwrot7S420", + "dueDate": "2017-12-12T07:32:16.006", + "orgUnit": "DiszpKrYNg8", + "program": "lxAQ7Zs9VYR", + "enrollment": "WKPoiZxZxNG", + "event": "S4OBgYm4bOP", + "eventDate": "2017-12-12T00:00:00.000", + "status": "COMPLETED", + "created": "2017-12-12T07:31:30.874", + "completedDate": "2017-12-12T00:00:00.000", + "lastUpdated": "2017-12-12T07:32:16.012", + "deleted": false, + "dataValues": [ + { + "lastUpdated": "2017-12-12T07:32:16.046", + "storedBy": "android", + "created": "2017-12-12T07:31:58.340", + "dataElement": "sWoqcoByYmD", + "value": "false", + "providedElsewhere": false + } + ] + } + ], + "notes": [] + } + ] + } + ] +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.java deleted file mode 100644 index b935b69c47..0000000000 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.enrollment.internal; - -import static org.mockito.ArgumentMatchers.anyBoolean; -import static org.mockito.ArgumentMatchers.anyCollection; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner; -import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction; -import org.hisp.dhis.android.core.arch.handlers.internal.Handler; -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.data.utils.FillPropertiesTestUtils; -import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor; -import org.hisp.dhis.android.core.event.Event; -import org.hisp.dhis.android.core.note.Note; -import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager; -import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager; -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.util.Collections; -import java.util.List; - -@RunWith(JUnit4.class) -public class EnrollmentHandlerShould { - @Mock - private EnrollmentStore enrollmentStore; - - @Mock - private IdentifiableDataHandler eventHandler; - - @Mock - private Handler noteHandler; - - @Mock - private NoteUniquenessManager noteUniquenessManager; - - @Mock - private Enrollment enrollment; - - @Mock - private Event event; - - @Mock - private Note note; - - @Mock - private NoteDHISVersionManager noteVersionManager; - - @Mock - private RelationshipItemRelatives relationshipItemRelatives; - - @Mock - private Enrollment.Builder enrollmentBuilder; - - @Mock - private RelationshipDHISVersionManager relationshipVersionManager; - - @Mock - private RelationshipHandler relationshipHandler; - - @Mock - private OrphanCleaner relationshipOrphanCleaner; - - @Mock - private OrphanCleaner eventCleaner; - - // object to test - private EnrollmentHandler enrollmentHandler; - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - when(enrollment.uid()).thenReturn("test_enrollment_uid"); - when(EnrollmentInternalAccessor.accessEvents(enrollment)).thenReturn(Collections.singletonList(event)); - when(enrollment.notes()).thenReturn(Collections.singletonList(note)); - when(note.storedDate()).thenReturn(FillPropertiesTestUtils.LAST_UPDATED_STR); - - when(enrollment.toBuilder()).thenReturn(enrollmentBuilder); - when(enrollmentBuilder.syncState(State.SYNCED)).thenReturn(enrollmentBuilder); - when(enrollmentBuilder.aggregatedSyncState(State.SYNCED)).thenReturn(enrollmentBuilder); - when(enrollmentBuilder.build()).thenReturn(enrollment); - - List emptyList = Collections.emptyList(); - when(enrollmentStore.selectUidsWhere(anyString())).thenReturn(emptyList); - - enrollmentHandler = new EnrollmentHandler(relationshipVersionManager, relationshipHandler, noteVersionManager, - enrollmentStore, eventHandler, eventCleaner, noteHandler, noteUniquenessManager, - relationshipOrphanCleaner); - } - - @Test - public void do_nothing_when_passing_null_argument() { - enrollmentHandler.handleMany(null, false, false, false, relationshipItemRelatives); - - // verify that store or event handler is never called - verify(enrollmentStore, never()).deleteIfExists(anyString()); - verify(enrollmentStore, never()).updateOrInsert(any(Enrollment.class)); - - verify(eventHandler, never()).handleMany(anyCollection(), anyBoolean(), anyBoolean(), anyBoolean(), any()); - verify(eventCleaner, never()).deleteOrphan(any(Enrollment.class), anyCollection()); - verify(noteHandler, never()).handleMany(anyCollection()); - } - - @Test - public void invoke_only_delete_when_a_enrollment_is_set_as_deleted() { - when(enrollment.deleted()).thenReturn(Boolean.TRUE); - - enrollmentHandler.handleMany(Collections.singletonList(enrollment), false, false, false, relationshipItemRelatives); - - // verify that enrollment store is only invoked with delete - verify(enrollmentStore, times(1)).deleteIfExists(anyString()); - - - verify(enrollmentStore, never()).updateOrInsert(any(Enrollment.class)); - - // event handler should not be invoked - verify(eventHandler, never()).handleMany(anyCollection(), anyBoolean(), anyBoolean(), anyBoolean(), any()); - verify(eventCleaner, times(1)).deleteOrphan(any(Enrollment.class), anyCollection()); - verify(noteHandler, never()).handleMany(anyCollection()); - } - - @Test - public void invoke_only_update_or_insert_when_handle_enrollment_is_valid() { - when(enrollment.deleted()).thenReturn(Boolean.FALSE); - when(enrollmentStore.updateOrInsert(any(Enrollment.class))).thenReturn(HandleAction.Update); - - enrollmentHandler.handleMany(Collections.singletonList(enrollment), - false, false, false, relationshipItemRelatives); - - // verify that enrollment store is only invoked with update - verify(enrollmentStore, times(1)).updateOrInsert(any(Enrollment.class)); - - verify(enrollmentStore, never()).deleteIfExists(anyString()); - - // event handler should be invoked once - verify(eventHandler, times(1)).handleMany(anyList(), eq(false), eq(false), eq(false), any()); - verify(eventCleaner, times(1)).deleteOrphan(any(Enrollment.class), anyCollection()); - verify(noteHandler, times(1)).handleMany(anyCollection()); - } -} diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt new file mode 100644 index 0000000000..02063e888a --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.enrollment.internal + +import com.nhaarman.mockitokotlin2.* +import java.lang.Boolean +import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner +import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction +import org.hisp.dhis.android.core.arch.handlers.internal.Handler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.data.utils.FillPropertiesTestUtils +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.note.Note +import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager +import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import org.mockito.ArgumentMatchers + +@RunWith(JUnit4::class) +class EnrollmentHandlerShould { + private val enrollmentStore: EnrollmentStore = mock() + private val eventHandler: IdentifiableDataHandler = mock() + private val noteHandler: Handler = mock() + private val noteUniquenessManager: NoteUniquenessManager = mock() + private val enrollment: Enrollment = mock() + private val event: Event = mock() + private val note: Note = mock() + private val noteVersionManager: NoteDHISVersionManager = mock() + private val relationshipItemRelatives: RelationshipItemRelatives = mock() + private val enrollmentBuilder: Enrollment.Builder = mock() + private val relationshipVersionManager: RelationshipDHISVersionManager = mock() + private val relationshipHandler: RelationshipHandler = mock() + private val relationshipOrphanCleaner: OrphanCleaner = mock() + private val eventCleaner: OrphanCleaner = mock() + + // object to test + private lateinit var enrollmentHandler: EnrollmentHandler + + @Before + fun setUp() { + whenever(enrollment.uid()).doReturn("test_enrollment_uid") + whenever(EnrollmentInternalAccessor.accessEvents(enrollment)).doReturn(listOf(event)) + whenever(enrollment.notes()).doReturn(listOf(note)) + whenever(note.storedDate()).doReturn(FillPropertiesTestUtils.LAST_UPDATED_STR) + whenever(enrollment.toBuilder()).doReturn(enrollmentBuilder) + whenever(enrollmentBuilder.syncState(State.SYNCED)).doReturn(enrollmentBuilder) + whenever(enrollmentBuilder.aggregatedSyncState(State.SYNCED)).doReturn(enrollmentBuilder) + whenever(enrollmentBuilder.build()).doReturn(enrollment) + whenever(enrollmentStore.selectUidsWhere(ArgumentMatchers.anyString())).doReturn(listOf()) + + enrollmentHandler = EnrollmentHandler( + relationshipVersionManager, relationshipHandler, noteVersionManager, + enrollmentStore, eventHandler, eventCleaner, noteHandler, noteUniquenessManager, + relationshipOrphanCleaner + ) + } + + @Test + fun do_nothing_when_passing_null_argument() { + val params = IdentifiableDataHandlerParams(false, false, false, false) + enrollmentHandler.handleMany(null, params, relationshipItemRelatives) + + // verify that store or event handler is never called + verify(enrollmentStore, never()).deleteIfExists(any()) + verify(enrollmentStore, never()).updateOrInsert(any()) + verify(eventHandler, never()).handleMany(any(), any(), any()) + verify(eventCleaner, never()).deleteOrphan(any(), any()) + verify(noteHandler, never()).handleMany(any()) + } + + @Test + fun invoke_only_delete_when_a_enrollment_is_set_as_deleted() { + whenever(enrollment.deleted()).doReturn(Boolean.TRUE) + + val params = IdentifiableDataHandlerParams(false, false, false, false) + enrollmentHandler.handleMany(listOf(enrollment), params, relationshipItemRelatives) + + // verify that enrollment store is only invoked with delete + verify(enrollmentStore, times(1)).deleteIfExists(any()) + verify(enrollmentStore, never()).updateOrInsert(any()) + + // event handler should not be invoked + verify(eventHandler, never()).handleMany(any(), any(), any()) + verify(eventCleaner, times(1)).deleteOrphan(any(), any()) + verify(noteHandler, never()).handleMany(any()) + } + + @Test + fun invoke_only_update_or_insert_when_handle_enrollment_is_valid() { + whenever(enrollment.deleted()).doReturn(Boolean.FALSE) + whenever(enrollmentStore.updateOrInsert(any())).doReturn(HandleAction.Update) + + val params = IdentifiableDataHandlerParams(false, false, false, false) + enrollmentHandler.handleMany(listOf(enrollment), params, relationshipItemRelatives) + + // verify that enrollment store is only invoked with update + verify(enrollmentStore, times(1)).updateOrInsert(any()) + verify(enrollmentStore, never()).deleteIfExists(any()) + + // event handler should be invoked once + verify(eventHandler, times(1)).handleMany(any(), any(), any()) + verify(eventCleaner, times(1)).deleteOrphan(any(), any()) + verify(noteHandler, times(1)).handleMany(any()) + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.java deleted file mode 100644 index e0e125e872..0000000000 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.event.internal; - -import static org.mockito.ArgumentMatchers.anyCollection; -import static org.mockito.ArgumentMatchers.anyCollectionOf; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner; -import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction; -import org.hisp.dhis.android.core.arch.handlers.internal.Handler; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.event.Event; -import org.hisp.dhis.android.core.event.EventStatus; -import org.hisp.dhis.android.core.note.Note; -import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager; -import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager; -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue; -import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueHandler; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.util.ArrayList; -import java.util.Collections; - -@RunWith(JUnit4.class) -public class EventHandlerShould { - - @Mock - private EventStore eventStore; - - @Mock - private TrackedEntityDataValueHandler trackedEntityDataValueHandler; - - @Mock - private TrackedEntityDataValue trackedEntityDataValue; - - @Mock - private Handler noteHandler; - - @Mock - private NoteUniquenessManager noteUniquenessManager; - - @Mock - private Note note; - - @Mock - private NoteDHISVersionManager noteVersionManager; - - @Mock - private RelationshipDHISVersionManager relationshipVersionManager; - - @Mock - private RelationshipItemRelatives relationshipItemRelatives; - - @Mock - private RelationshipHandler relationshipHandler; - - @Mock - private Event.Builder eventBuilder; - - @Mock - private OrphanCleaner relationshipOrphanCleaner; - - @Mock - private Event event; - - // object to test - private EventHandler eventHandler; - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - - when(event.uid()).thenReturn("test_event_uid"); - when(event.notes()).thenReturn(Collections.singletonList(note)); - when(event.organisationUnit()).thenReturn("org_unit_uid"); - when(event.status()).thenReturn(EventStatus.SCHEDULE); - when(event.trackedEntityDataValues()).thenReturn(Collections.singletonList(trackedEntityDataValue)); - when(eventStore.updateOrInsert(any(Event.class))).thenReturn(HandleAction.Insert); - - when(event.toBuilder()).thenReturn(eventBuilder); - when(eventBuilder.syncState(State.SYNCED)).thenReturn(eventBuilder); - when(eventBuilder.aggregatedSyncState(State.SYNCED)).thenReturn(eventBuilder); - when(eventBuilder.build()).thenReturn(event); - - eventHandler = new EventHandler(relationshipVersionManager, relationshipHandler, eventStore, - trackedEntityDataValueHandler, noteHandler, noteVersionManager, noteUniquenessManager, - relationshipOrphanCleaner); - } - - @Test - public void do_nothing_when_passing_empty_list_argument() { - eventHandler.handleMany(new ArrayList<>(), false, false, false, relationshipItemRelatives); - - // verify that store is never invoked - verify(eventStore, never()).deleteIfExists(anyString()); - verify(eventStore, never()).update(any(Event.class)); - verify(eventStore, never()).insert(any(Event.class)); - verify(noteHandler, never()).handleMany(anyCollectionOf(Note.class)); - } - - @Test - public void invoke_only_delete_when_a_event_is_set_as_deleted() { - when(event.deleted()).thenReturn(Boolean.TRUE); - - eventHandler.handleMany(Collections.singletonList(event), false, false, false, relationshipItemRelatives); - - // verify that delete is invoked once - verify(eventStore, times(1)).deleteIfExists(event.uid()); - - // verify that update and insert is never invoked - verify(eventStore, never()).update(any(Event.class)); - verify(eventStore, never()).insert(any(Event.class)); - verify(noteHandler, never()).handleMany(anyCollectionOf(Note.class)); - - // verify that data value handler is never invoked - verify(trackedEntityDataValueHandler, never()).handleMany(anyCollection(), any()); - } - - @Test - public void invoke_update_and_insert_when_handle_event_not_inserted() { - when(eventStore.updateOrInsert(any(Event.class))).thenReturn(HandleAction.Insert); - when(event.organisationUnit()).thenReturn("org_unit_uid"); - when(event.status()).thenReturn(EventStatus.SCHEDULE); - - eventHandler.handleMany(Collections.singletonList(event), false, false, false, relationshipItemRelatives); - - // verify that update and insert is invoked, since we're updating before inserting - verify(eventStore, times(1)).updateOrInsert(any(Event.class)); - verify(trackedEntityDataValueHandler, times(1)).handleMany(anyCollection(), any()); - verify(noteHandler, times(1)).handleMany(anyCollectionOf(Note.class)); - - // verify that delete is never invoked - verify(eventStore, never()).deleteIfExists(anyString()); - } - - @Test - public void delete_event_data_values_if_empty_list() { - when(event.trackedEntityDataValues()).thenReturn(Collections.emptyList()); - - eventHandler.handleMany(Collections.singletonList(event), false, false, false, relationshipItemRelatives); - - verify(trackedEntityDataValueHandler, times(1)).removeEventDataValues(anyString()); - verify(trackedEntityDataValueHandler, never()).handleMany(anyCollection(), any()); - } -} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt new file mode 100644 index 0000000000..28ab939ae5 --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.event.internal + +import com.nhaarman.mockitokotlin2.* +import java.lang.Boolean +import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner +import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction +import org.hisp.dhis.android.core.arch.handlers.internal.Handler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.event.EventStatus +import org.hisp.dhis.android.core.note.Note +import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager +import org.hisp.dhis.android.core.note.internal.NoteUniquenessManager +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives +import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityDataValueHandler +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 + +@RunWith(JUnit4::class) +class EventHandlerShould { + private val eventStore: EventStore = mock() + private val trackedEntityDataValueHandler: TrackedEntityDataValueHandler = mock() + private val trackedEntityDataValue: TrackedEntityDataValue = mock() + private val noteHandler: Handler = mock() + private val noteUniquenessManager: NoteUniquenessManager = mock() + private val note: Note = mock() + private val noteVersionManager: NoteDHISVersionManager = mock() + private val relationshipVersionManager: RelationshipDHISVersionManager = mock() + private val relationshipItemRelatives: RelationshipItemRelatives = mock() + private val relationshipHandler: RelationshipHandler = mock() + private val eventBuilder: Event.Builder = mock() + private val relationshipOrphanCleaner: OrphanCleaner = mock() + private val event: Event = mock() + + // object to test + private lateinit var eventHandler: EventHandler + + @Before + fun setUp() { + whenever(event.uid()).doReturn("test_event_uid") + whenever(event.notes()).doReturn(listOf(note)) + whenever(event.organisationUnit()).doReturn("org_unit_uid") + whenever(event.status()).doReturn(EventStatus.SCHEDULE) + whenever(event.trackedEntityDataValues()).doReturn(listOf(trackedEntityDataValue)) + whenever(eventStore.updateOrInsert(any())).doReturn(HandleAction.Insert) + whenever(event.toBuilder()).doReturn(eventBuilder) + whenever(eventBuilder.syncState(State.SYNCED)).doReturn(eventBuilder) + whenever(eventBuilder.aggregatedSyncState(State.SYNCED)).doReturn(eventBuilder) + whenever(eventBuilder.build()).doReturn(event) + + eventHandler = EventHandler( + relationshipVersionManager, relationshipHandler, eventStore, + trackedEntityDataValueHandler, noteHandler, noteVersionManager, noteUniquenessManager, + relationshipOrphanCleaner + ) + } + + @Test + fun do_nothing_when_passing_empty_list_argument() { + val params = IdentifiableDataHandlerParams(false, false, false, false) + eventHandler.handleMany(listOf(), params, relationshipItemRelatives) + + // verify that store is never invoked + verify(eventStore, never()).deleteIfExists(any()) + verify(eventStore, never()).update(any()) + verify(eventStore, never()).insert(any()) + verify(noteHandler, never()).handleMany(any()) + } + + @Test + fun invoke_only_delete_when_a_event_is_set_as_deleted() { + whenever(event.deleted()).doReturn(Boolean.TRUE) + + val params = IdentifiableDataHandlerParams(false, false, false, false) + eventHandler.handleMany(listOf(event), params, relationshipItemRelatives) + + // verify that delete is invoked once + verify(eventStore, times(1)).deleteIfExists(event.uid()) + + // verify that update and insert is never invoked + verify(eventStore, never()).update(any()) + verify(eventStore, never()).insert(any()) + verify(noteHandler, never()).handleMany(any()) + + // verify that data value handler is never invoked + verify(trackedEntityDataValueHandler, never()).handleMany(any(), any()) + } + + @Test + fun invoke_update_and_insert_when_handle_event_not_inserted() { + whenever(eventStore.updateOrInsert(any())).doReturn(HandleAction.Insert) + whenever(event.organisationUnit()).doReturn("org_unit_uid") + whenever(event.status()).doReturn(EventStatus.SCHEDULE) + + val params = IdentifiableDataHandlerParams(false, false, false, false) + eventHandler.handleMany(listOf(event), params, relationshipItemRelatives) + + // verify that update and insert is invoked, since we're updating before inserting + verify(eventStore, times(1)).updateOrInsert(any()) + verify(trackedEntityDataValueHandler, times(1)).handleMany(any(), any()) + verify(noteHandler, times(1)).handleMany(any()) + + // verify that delete is never invoked + verify(eventStore, never()).deleteIfExists(any()) + } + + @Test + fun delete_event_data_values_if_empty_list() { + whenever(event.trackedEntityDataValues()).doReturn(emptyList()) + + val params = IdentifiableDataHandlerParams(false, false, false, false) + eventHandler.handleMany(listOf(event), params, relationshipItemRelatives) + + verify(trackedEntityDataValueHandler, times(1)).removeEventDataValues(any()) + verify(trackedEntityDataValueHandler, never()).handleMany(any(), any()) + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.java deleted file mode 100644 index 63da3e92cb..0000000000 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import static org.mockito.ArgumentMatchers.anyBoolean; -import static org.mockito.ArgumentMatchers.anyCollection; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner; -import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction; -import org.hisp.dhis.android.core.arch.handlers.internal.HandlerWithTransformer; -import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.RelationshipHelper; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager; -import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler; -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.util.Collections; - -@RunWith(JUnit4.class) -public class TrackedEntityInstanceHandlerShould { - @Mock - private RelationshipDHISVersionManager relationshipVersionManager; - - @Mock - private RelationshipHandler relationshipHandler; - - @Mock - private TrackedEntityInstanceStore trackedEntityInstanceStore; - - @Mock - private HandlerWithTransformer trackedEntityAttributeValueHandler; - - @Mock - private IdentifiableDataHandler enrollmentHandler; - - @Mock - private TrackedEntityInstance trackedEntityInstance; - - @Mock - private Enrollment enrollment; - - @Mock - private Relationship229Compatible relationship229Compatible; - - @Mock - private RelationshipItemRelatives relationshipItemRelatives; - - @Mock - private Relationship relationship; - - @Mock - private TrackedEntityInstance relative; - - @Mock - private TrackedEntityInstance.Builder relativeBuilder; - - @Mock - private OrphanCleaner enrollmentCleaner; - - @Mock - private OrphanCleaner relationshipCleaner; - - @Mock - private RelationshipItemRelatives relatives; - - @Mock - private TrackedEntityInstance.Builder teiBuilder; - - // Constants - private String TEI_UID = "test_tei_uid"; - private String RELATIVE_UID = "relative_uid"; - private String RELATIONSHIP_TYPE = "type_uid"; - - // object to test - private TrackedEntityInstanceHandler trackedEntityInstanceHandler; - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - - when(trackedEntityInstance.uid()).thenReturn(TEI_UID); - when(trackedEntityInstance.toBuilder()).thenReturn(teiBuilder); - when(teiBuilder.syncState(State.SYNCED)).thenReturn(teiBuilder); - when(teiBuilder.aggregatedSyncState(State.SYNCED)).thenReturn(teiBuilder); - when(teiBuilder.build()).thenReturn(trackedEntityInstance); - when(TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance)) - .thenReturn(Collections.singletonList(enrollment)); - when(TrackedEntityInstanceInternalAccessor.accessRelationships(trackedEntityInstance)) - .thenReturn(Collections.singletonList(relationship229Compatible)); - when(relationshipVersionManager.from229Compatible(Collections.singletonList(relationship229Compatible))) - .thenReturn(Collections.singletonList(relationship)); - - when(relationship.relationshipType()).thenReturn(RELATIONSHIP_TYPE); - when(relationship.from()).thenReturn(RelationshipHelper.teiItem(TEI_UID)); - when(relationship.to()).thenReturn(RelationshipHelper.teiItem(RELATIVE_UID)); - when(relative.uid()).thenReturn(RELATIVE_UID); - - when(trackedEntityInstanceStore.updateOrInsert(any())).thenReturn(HandleAction.Insert); - - trackedEntityInstanceHandler = new TrackedEntityInstanceHandler( - relationshipVersionManager, relationshipHandler, trackedEntityInstanceStore, - trackedEntityAttributeValueHandler, enrollmentHandler, enrollmentCleaner, relationshipCleaner); - } - - @Test - public void do_nothing_when_passing_null_argument() { - trackedEntityInstanceHandler.handleMany(null, false, false, false, relationshipItemRelatives); - - // verify that tracked entity instance store is never called - verify(trackedEntityInstanceStore, never()).deleteIfExists(anyString()); - verify(trackedEntityInstanceStore, never()).updateOrInsert(any(TrackedEntityInstance.class)); - verify(trackedEntityAttributeValueHandler, never()).handleMany( - anyCollection(), any()); - verify(enrollmentHandler, never()).handleMany(anyCollection(), anyBoolean(), anyBoolean(), anyBoolean(), any()); - verify(enrollmentCleaner, never()).deleteOrphan(any(TrackedEntityInstance.class), anyCollection()); - verify(relationshipCleaner, never()).deleteOrphan(any(TrackedEntityInstance.class), anyCollection()); - } - - @Test - public void invoke_delete_when_handle_program_tracked_entity_instance_set_as_deleted() { - when(trackedEntityInstance.deleted()).thenReturn(Boolean.TRUE); - - trackedEntityInstanceHandler.handleMany(Collections.singletonList(trackedEntityInstance), - false, false, false, relationshipItemRelatives); - - // verify that tracked entity instance store is only called with delete - verify(trackedEntityInstanceStore, times(1)).deleteIfExists(anyString()); - - verify(trackedEntityInstanceStore, never()).updateOrInsert(any(TrackedEntityInstance.class)); - verify(trackedEntityAttributeValueHandler, never()).handleMany( - anyCollection(), any()); - - // verify that enrollment handler is never called - verify(enrollmentHandler, never()).handleMany(anyCollection(), anyBoolean(), anyBoolean(), anyBoolean(), any()); - } - - @Test - public void invoke_only_update_or_insert_when_handle_tracked_entity_instance_inserted() { - when(trackedEntityInstance.deleted()).thenReturn(Boolean.FALSE); - when(trackedEntityInstanceStore.updateOrInsert(any(TrackedEntityInstance.class))).thenReturn(HandleAction.Update); - - trackedEntityInstanceHandler.handleMany(Collections.singletonList(trackedEntityInstance), - false, false, false, relationshipItemRelatives); - - // verify that tracked entity instance store is only called with update - verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any(TrackedEntityInstance.class)); - - verify(trackedEntityInstanceStore, never()).deleteIfExists(anyString()); - - verify(trackedEntityAttributeValueHandler, times(1)).handleMany( - anyCollection(), any()); - - // verify that enrollment handler is called once - verify(enrollmentHandler, times(1)).handleMany( - anyCollection(), anyBoolean(), anyBoolean(), anyBoolean(), any()); - } - - @Test - public void invoke_cleaners_if_full_update() { - when(trackedEntityInstance.toBuilder()).thenReturn(TrackedEntityInstance.builder().uid("uid")); - when(trackedEntityInstanceStore.updateOrInsert(any(TrackedEntityInstance.class))).thenReturn(HandleAction.Update); - - trackedEntityInstanceHandler.handleMany(Collections.singletonList(trackedEntityInstance), false, - true, false, relatives); - - verify(enrollmentCleaner, times(1)).deleteOrphan(any(TrackedEntityInstance.class), anyCollection()); - verify(relationshipCleaner, times(1)).deleteOrphan(any(TrackedEntityInstance.class), anyCollection()); - } - - @Test - public void do_not_invoke_cleaners_if_not_full_update() { - when(trackedEntityInstance.toBuilder()).thenReturn(TrackedEntityInstance.builder().uid("uid")); - when(trackedEntityInstanceStore.updateOrInsert(any(TrackedEntityInstance.class))).thenReturn(HandleAction.Update); - - trackedEntityInstanceHandler.handleMany(Collections.singletonList(trackedEntityInstance), false, - false, false, relatives); - - verify(enrollmentCleaner, never()).deleteOrphan(any(TrackedEntityInstance.class), anyCollection()); - verify(relationshipCleaner, never()).deleteOrphan(any(TrackedEntityInstance.class), anyCollection()); - } - - @Test - public void invoke_relationship_handler_with_relationship_from_version_manager() { - when(relationshipVersionManager.getRelativeTei(relationship229Compatible, TEI_UID)).thenReturn(relative); - when(relationshipVersionManager.getOwnedRelationships(Collections.singletonList(relationship), TEI_UID)) - .thenReturn(Collections.singletonList(relationship)); - when(relative.toBuilder()).thenReturn(relativeBuilder); - when(relativeBuilder.syncState(any(State.class))).thenReturn(relativeBuilder); - when(relativeBuilder.aggregatedSyncState(any(State.class))).thenReturn(relativeBuilder); - when(relativeBuilder.build()).thenReturn(relative); - - trackedEntityInstanceHandler.handleMany(Collections.singletonList(trackedEntityInstance), false, - false, false, relatives); - verify(relationshipHandler, times(1)).handleMany(anyList(), any()); - verify(relationshipVersionManager, times(1)) - .saveRelativesIfNotExist(Collections.singletonList(relationship), TEI_UID, relatives, - relationshipHandler); - } - - @Test - public void do_not_invoke_relationship_repository_when_no_relative() { - when(relationshipVersionManager.getRelativeTei(relationship229Compatible, TEI_UID)).thenReturn(null); - trackedEntityInstanceHandler.handleMany(Collections.singletonList(trackedEntityInstance), - false, false, false, relationshipItemRelatives); - verify(relationshipHandler, never()).handle(any(Relationship.class)); - } -} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt new file mode 100644 index 0000000000..448942d997 --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import com.nhaarman.mockitokotlin2.* +import java.lang.Boolean +import kotlin.Exception +import kotlin.Throws +import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner +import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction +import org.hisp.dhis.android.core.arch.handlers.internal.HandlerWithTransformer +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.RelationshipHelper +import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible +import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager +import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives +import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import org.mockito.ArgumentMatchers + +@RunWith(JUnit4::class) +class TrackedEntityInstanceHandlerShould { + private val relationshipVersionManager: RelationshipDHISVersionManager = mock() + private val relationshipHandler: RelationshipHandler = mock() + private val trackedEntityInstanceStore: TrackedEntityInstanceStore = mock() + private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore = mock() + private val trackedEntityAttributeValueHandler: HandlerWithTransformer = mock() + private val enrollmentHandler: IdentifiableDataHandler = mock() + + private val trackedEntityInstance: TrackedEntityInstance = mock() + private val enrollment: Enrollment = mock() + private val relationship229Compatible: Relationship229Compatible = mock() + private val relationshipItemRelatives: RelationshipItemRelatives = mock() + private val relationship: Relationship = mock() + private val relative: TrackedEntityInstance = mock() + private val relativeBuilder: TrackedEntityInstance.Builder = mock() + private val enrollmentCleaner: OrphanCleaner = mock() + private val relationshipCleaner: OrphanCleaner = mock() + private val relatives: RelationshipItemRelatives = mock() + private val teiBuilder: TrackedEntityInstance.Builder = mock() + + // Constants + private val TEI_UID = "test_tei_uid" + private val RELATIVE_UID = "relative_uid" + private val RELATIONSHIP_TYPE = "type_uid" + + // object to test + private lateinit var trackedEntityInstanceHandler: TrackedEntityInstanceHandler + + @Before + @Throws(Exception::class) + fun setUp() { + whenever(trackedEntityInstance.uid()).doReturn(TEI_UID) + whenever(trackedEntityInstance.toBuilder()).doReturn(teiBuilder) + whenever(teiBuilder.syncState(State.SYNCED)).thenReturn(teiBuilder) + whenever(teiBuilder.aggregatedSyncState(State.SYNCED)).thenReturn(teiBuilder) + whenever(teiBuilder.build()).thenReturn(trackedEntityInstance) + whenever(TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance)) + .thenReturn(listOf(enrollment)) + whenever(TrackedEntityInstanceInternalAccessor.accessRelationships(trackedEntityInstance)) + .thenReturn(listOf(relationship229Compatible)) + whenever(relationshipVersionManager.from229Compatible(listOf(relationship229Compatible))) + .thenReturn(listOf(relationship)) + whenever(relationship.relationshipType()).thenReturn(RELATIONSHIP_TYPE) + whenever(relationship.from()).thenReturn(RelationshipHelper.teiItem(TEI_UID)) + whenever(relationship.to()).thenReturn(RelationshipHelper.teiItem(RELATIVE_UID)) + whenever(relative.uid()).thenReturn(RELATIVE_UID) + whenever(trackedEntityInstanceStore.updateOrInsert(ArgumentMatchers.any())) + .thenReturn(HandleAction.Insert) + + trackedEntityInstanceHandler = TrackedEntityInstanceHandler( + relationshipVersionManager, + relationshipHandler, + trackedEntityInstanceStore, + trackedEntityAttributeValueStore, + trackedEntityAttributeValueHandler, + enrollmentHandler, + enrollmentCleaner, + relationshipCleaner + ) + } + + @Test + fun do_nothing_when_passing_null_argument() { + val params = IdentifiableDataHandlerParams(true, false, false, false) + trackedEntityInstanceHandler.handleMany(null, params, relationshipItemRelatives) + + // verify that tracked entity instance store is never called + verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) + verify(trackedEntityInstanceStore, never()).updateOrInsert(any()) + verify(trackedEntityAttributeValueHandler, never()).handleMany(any(), any()) + verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) + verify(enrollmentHandler, never()).handleMany(any(), any(), any()) + verify(enrollmentCleaner, never()).deleteOrphan(any(), any()) + verify(relationshipCleaner, never()).deleteOrphan(any(), any()) + } + + @Test + fun invoke_delete_when_handle_program_tracked_entity_instance_set_as_deleted() { + whenever(trackedEntityInstance.deleted()).thenReturn(Boolean.TRUE) + + val params = IdentifiableDataHandlerParams(true, false, false, false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relationshipItemRelatives) + + // verify that tracked entity instance store is only called with delete + verify(trackedEntityInstanceStore, times(1)).deleteIfExists(any()) + verify(trackedEntityInstanceStore, never()).updateOrInsert(any()) + verify(trackedEntityAttributeValueHandler, never()).handleMany(any(), any()) + verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) + + // verify that enrollment handler is never called + verify(enrollmentHandler, never()).handleMany(any(), any(), any()) + } + + @Test + fun invoke_only_update_or_insert_when_handle_tracked_entity_instance_inserted() { + whenever(trackedEntityInstance.deleted()).doReturn(Boolean.FALSE) + whenever(trackedEntityInstanceStore.updateOrInsert(any())).doReturn(HandleAction.Update) + whenever(trackedEntityInstance.trackedEntityAttributeValues()).doReturn( + listOf( + TrackedEntityAttributeValue.builder().trackedEntityAttribute("att").build() + ) + ) + + val params = IdentifiableDataHandlerParams(true, false, false, false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relationshipItemRelatives) + + // verify that tracked entity instance store is only called with update + verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) + verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) + verify(trackedEntityAttributeValueHandler, times(1)).handleMany(any(), any()) + verify(trackedEntityAttributeValueStore, times(1)).deleteByInstanceAndNotInAttributes(any(), any()) + + // verify that enrollment handler is called once + verify(enrollmentHandler, times(1)).handleMany(any(), any(), any()) + } + + @Test + fun invoke_cleaners_if_full_update() { + whenever(trackedEntityInstance.toBuilder()).doReturn(TrackedEntityInstance.builder().uid("uid")) + whenever(trackedEntityInstanceStore.updateOrInsert(any())).thenReturn(HandleAction.Update) + + val params = IdentifiableDataHandlerParams(true, true, false, false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) + + verify(enrollmentCleaner, times(1)).deleteOrphan(any(), anyOrNull()) + verify(relationshipCleaner, times(1)).deleteOrphan(any(), anyOrNull()) + } + + @Test + fun do_not_invoke_cleaners_if_not_full_update() { + whenever(trackedEntityInstance.toBuilder()).doReturn(TrackedEntityInstance.builder().uid("uid")) + whenever(trackedEntityInstanceStore.updateOrInsert(any())).doReturn(HandleAction.Update) + + val params = IdentifiableDataHandlerParams(true, false, false, false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) + + verify(enrollmentCleaner, never()).deleteOrphan(any(), any()) + verify(relationshipCleaner, never()).deleteOrphan(any(), any()) + } + + @Test + fun invoke_relationship_handler_with_relationship_from_version_manager() { + whenever(relationshipVersionManager.getRelativeTei(relationship229Compatible, TEI_UID)).doReturn(relative) + whenever(relationshipVersionManager.getOwnedRelationships(listOf(relationship), TEI_UID)) + .doReturn(listOf(relationship)) + whenever(relative.toBuilder()).doReturn(relativeBuilder) + whenever(relativeBuilder.syncState(any())).doReturn(relativeBuilder) + whenever(relativeBuilder.aggregatedSyncState(any())).doReturn(relativeBuilder) + whenever(relativeBuilder.build()).doReturn(relative) + + val params = IdentifiableDataHandlerParams(true, false, false, false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) + + verify(relationshipHandler, times(1)).handleMany(any(), any()) + verify(relationshipVersionManager, times(1)).saveRelativesIfNotExist( + listOf(relationship), TEI_UID, relatives, + relationshipHandler + ) + } + + @Test + fun do_not_invoke_relationship_repository_when_no_relative() { + whenever(relationshipVersionManager.getRelativeTei(relationship229Compatible, TEI_UID)).doReturn(null) + + val params = IdentifiableDataHandlerParams(true, false, false, false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relationshipItemRelatives) + + verify(relationshipHandler, never()).handle(any()) + } + + @Test + fun do_not_delete_orphan_attribute_values_if_not_all_attributes() { + val params = IdentifiableDataHandlerParams(false, false, false, false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) + + verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) + verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) + verify(trackedEntityAttributeValueHandler, times(1)).handleMany(any(), any()) + verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) + } +} From 08c529ed26beb65ad7bce6a97714472547c16dd6 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 10 Mar 2022 13:13:30 +0100 Subject: [PATCH 149/253] [ANDROSDK-1515] Remove program attributes --- .../internal/IdentifiableDataHandlerParams.kt | 3 +- ...va => TrackedEntityAttributeValueStore.kt} | 42 ++-- .../TrackedEntityAttributeValueStoreImpl.java | 173 ---------------- .../TrackedEntityAttributeValueStoreImpl.kt | 186 ++++++++++++++++++ ...ackedEntityInstanceDownloadInternalCall.kt | 31 +-- .../internal/TrackedEntityInstanceHandler.kt | 26 +-- ...kedEntityInstancePersistenceCallFactory.kt | 10 +- .../TrackedEntityInstanceHandlerShould.kt | 19 +- 8 files changed, 259 insertions(+), 231 deletions(-) rename core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/{TrackedEntityAttributeValueStore.java => TrackedEntityAttributeValueStore.kt} (68%) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt index a0668638f2..b9420b79d6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt @@ -32,5 +32,6 @@ data class IdentifiableDataHandlerParams( val hasAllAttributes: Boolean, val hasAllEnrollments: Boolean, val overwrite: Boolean, - val asRelationship: Boolean + val asRelationship: Boolean, + val program: String? = null ) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt similarity index 68% rename from core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.java rename to core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt index 9713ce151f..10d399251c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt @@ -25,25 +25,23 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; - -import java.util.List; -import java.util.Map; - -import androidx.annotation.NonNull; - -public interface TrackedEntityAttributeValueStore extends ObjectWithoutUidStore { - - Map> queryTrackedEntityAttributeValueToPost(); - - List queryByTrackedEntityInstance(String trackedEntityInstanceUid); - - void deleteByInstanceAndNotInAttributes(@NonNull String trackedEntityInstanceUid, - @NonNull List trackedEntityAttributeUids); - - void removeDeletedAttributeValuesByInstance(@NonNull String trackedEntityInstanceUid); -} \ No newline at end of file +package org.hisp.dhis.android.core.trackedentity.internal + +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue + +internal interface TrackedEntityAttributeValueStore : ObjectWithoutUidStore { + fun queryTrackedEntityAttributeValueToPost(): Map> + fun queryByTrackedEntityInstance(trackedEntityInstanceUid: String): List + fun deleteByInstanceAndNotInAttributes( + trackedEntityInstanceUid: String, + trackedEntityAttributeUids: List + ) + fun deleteByInstanceAndNotInProgramAttributes( + trackedEntityInstanceUid: String, + trackedEntityAttributeUids: List, + program: String + ) + + fun removeDeletedAttributeValuesByInstance(trackedEntityInstanceUid: String) +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.java deleted file mode 100644 index afb8da9e28..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.trackedentity.internal; - -import android.database.Cursor; - -import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.SQLStatementBuilderImpl; -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder; -import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder; -import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder; -import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStoreImpl; -import org.hisp.dhis.android.core.arch.db.stores.projections.internal.SingleParentChildProjection; -import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper; -import org.hisp.dhis.android.core.arch.helpers.internal.EnumHelper; -import org.hisp.dhis.android.core.common.DataColumns; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValueTableInfo; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import androidx.annotation.NonNull; - -public final class TrackedEntityAttributeValueStoreImpl - extends ObjectWithoutUidStoreImpl implements TrackedEntityAttributeValueStore { - - private static final StatementBinder BINDER = (o, w) -> { - w.bind(1, o.value()); - w.bind(2, o.created()); - w.bind(3, o.lastUpdated()); - w.bind(4, o.trackedEntityAttribute()); - w.bind(5, o.trackedEntityInstance()); - }; - - private static final WhereStatementBinder WHERE_UPDATE_BINDER = (o, w) -> { - w.bind(6, o.trackedEntityAttribute()); - w.bind(7, o.trackedEntityInstance()); - }; - - - private static final WhereStatementBinder WHERE_DELETE_BINDER = (o, w) -> { - w.bind(1, o.trackedEntityAttribute()); - w.bind(2, o.trackedEntityInstance()); - }; - - static final SingleParentChildProjection CHILD_PROJECTION = new SingleParentChildProjection( - TrackedEntityAttributeValueTableInfo.TABLE_INFO, - TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE); - - private TrackedEntityAttributeValueStoreImpl(DatabaseAdapter databaseAdapter, - SQLStatementBuilderImpl builder) { - super(databaseAdapter, builder, BINDER, WHERE_UPDATE_BINDER, WHERE_DELETE_BINDER, - TrackedEntityAttributeValue::create); - } - - @Override - public Map> queryTrackedEntityAttributeValueToPost() { - String toPostQuery = - "SELECT TrackedEntityAttributeValue.* " + - "FROM (TrackedEntityAttributeValue INNER JOIN TrackedEntityInstance " + - "ON TrackedEntityAttributeValue.trackedEntityInstance = TrackedEntityInstance.uid) " + - "WHERE " + teiInUploadableState() + ";"; - - List valueList = trackedEntityAttributeValueListFromQuery(toPostQuery); - - Map> valueMap = new HashMap<>(); - for (TrackedEntityAttributeValue value : valueList) { - addTrackedEntityAttributeValueToMap(valueMap, value); - } - - return valueMap; - } - - private String teiInUploadableState() { - String states = CollectionsHelper.commaAndSpaceSeparatedArrayValues( - CollectionsHelper.withSingleQuotationMarksArray( - EnumHelper.asStringList(State.uploadableStatesIncludingError()))); - return "(" + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE + - "." + - DataColumns.AGGREGATED_SYNC_STATE + - " IN (" + states + "))"; - } - - @Override - public List queryByTrackedEntityInstance(String trackedEntityInstanceUid) { - String selectByTrackedEntityInstanceQuery = new WhereClauseBuilder().appendKeyStringValue( - TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, trackedEntityInstanceUid).build(); - - return selectWhere(selectByTrackedEntityInstanceQuery); - } - - @Override - public void deleteByInstanceAndNotInAttributes(@NonNull String trackedEntityInstanceUid, - @NonNull List trackedEntityAttributeUids) { - String deleteWhereQuery = new WhereClauseBuilder() - .appendKeyStringValue(TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, - trackedEntityInstanceUid) - .appendNotInKeyStringValues(TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE, - trackedEntityAttributeUids) - .build(); - - deleteWhere(deleteWhereQuery); - } - - @Override - public void removeDeletedAttributeValuesByInstance(@NonNull String trackedEntityInstanceUid) { - String deleteWhereQuery = new WhereClauseBuilder() - .appendKeyStringValue(TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, - trackedEntityInstanceUid) - .appendIsNullValue(TrackedEntityAttributeValueTableInfo.Columns.VALUE) - .build(); - - deleteWhere(deleteWhereQuery); - } - - private List trackedEntityAttributeValueListFromQuery(String query) { - List trackedEntityAttributeValueList = new ArrayList<>(); - Cursor cursor = getDatabaseAdapter().rawQuery(query); - addObjectsToCollection(cursor, trackedEntityAttributeValueList); - return trackedEntityAttributeValueList; - } - - private void addTrackedEntityAttributeValueToMap(Map> valueMap, - TrackedEntityAttributeValue trackedEntityAttributeValue) { - if (valueMap.get(trackedEntityAttributeValue.trackedEntityInstance()) == null) { - valueMap.put(trackedEntityAttributeValue.trackedEntityInstance(), - new ArrayList<>()); - } - - valueMap.get(trackedEntityAttributeValue.trackedEntityInstance()).add(trackedEntityAttributeValue); - } - - public static TrackedEntityAttributeValueStore create(DatabaseAdapter databaseAdapter) { - SQLStatementBuilderImpl statementBuilder = new SQLStatementBuilderImpl( - TrackedEntityAttributeValueTableInfo.TABLE_INFO.name(), - TrackedEntityAttributeValueTableInfo.TABLE_INFO.columns()); - - return new TrackedEntityAttributeValueStoreImpl( - databaseAdapter, - statementBuilder - ); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt new file mode 100644 index 0000000000..af90f1cd04 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import android.database.Cursor +import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.SQLStatementBuilderImpl +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementBinder +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.StatementWrapper +import org.hisp.dhis.android.core.arch.db.stores.binders.internal.WhereStatementBinder +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStoreImpl +import org.hisp.dhis.android.core.arch.db.stores.projections.internal.SingleParentChildProjection +import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper +import org.hisp.dhis.android.core.arch.helpers.internal.EnumHelper.asStringList +import org.hisp.dhis.android.core.common.DataColumns +import org.hisp.dhis.android.core.common.State.Companion.uploadableStatesIncludingError +import org.hisp.dhis.android.core.program.ProgramTrackedEntityAttributeTableInfo +import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue +import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValueTableInfo + +internal class TrackedEntityAttributeValueStoreImpl private constructor( + databaseAdapter: DatabaseAdapter, + builder: SQLStatementBuilderImpl +) : ObjectWithoutUidStoreImpl( + databaseAdapter, + builder, + BINDER, + WHERE_UPDATE_BINDER, + WHERE_DELETE_BINDER, + { cursor: Cursor -> TrackedEntityAttributeValue.create(cursor) } +), + TrackedEntityAttributeValueStore { + + override fun queryTrackedEntityAttributeValueToPost(): Map> { + val toPostQuery = "SELECT TrackedEntityAttributeValue.* " + + "FROM (TrackedEntityAttributeValue INNER JOIN TrackedEntityInstance " + + "ON TrackedEntityAttributeValue.trackedEntityInstance = TrackedEntityInstance.uid) " + + "WHERE " + teiInUploadableState() + ";" + val valueList = trackedEntityAttributeValueListFromQuery(toPostQuery) + + return valueList.filter { it.trackedEntityInstance() != null }.groupBy { it.trackedEntityInstance()!! } + } + + private fun teiInUploadableState(): String { + val states = CollectionsHelper.commaAndSpaceSeparatedArrayValues( + CollectionsHelper.withSingleQuotationMarksArray( + asStringList(uploadableStatesIncludingError().asList()) + ) + ) + return "(" + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE + + "." + + DataColumns.AGGREGATED_SYNC_STATE + + " IN (" + states + "))" + } + + override fun queryByTrackedEntityInstance(trackedEntityInstanceUid: String): List { + val selectByTrackedEntityInstanceQuery = WhereClauseBuilder().appendKeyStringValue( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, trackedEntityInstanceUid + ).build() + return selectWhere(selectByTrackedEntityInstanceQuery) + } + + override fun deleteByInstanceAndNotInAttributes( + trackedEntityInstanceUid: String, + trackedEntityAttributeUids: List + ) { + val deleteWhereQuery = WhereClauseBuilder() + .appendKeyStringValue( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, + trackedEntityInstanceUid + ) + .appendNotInKeyStringValues( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE, + trackedEntityAttributeUids + ) + .build() + deleteWhere(deleteWhereQuery) + } + + override fun deleteByInstanceAndNotInProgramAttributes( + trackedEntityInstanceUid: String, + trackedEntityAttributeUids: List, + program: String + ) { + val deleteWhereQuery = WhereClauseBuilder() + .appendKeyStringValue( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, + trackedEntityInstanceUid + ) + .appendNotInKeyStringValues( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE, + trackedEntityAttributeUids + ) + .appendInSubQuery( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE, + "SELECT ${ProgramTrackedEntityAttributeTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE} " + + "FROM ${ProgramTrackedEntityAttributeTableInfo.TABLE_INFO.name()} " + + "WHERE ${ProgramTrackedEntityAttributeTableInfo.Columns.PROGRAM} = '$program'" + ) + .build() + deleteWhere(deleteWhereQuery) + } + + override fun removeDeletedAttributeValuesByInstance(trackedEntityInstanceUid: String) { + val deleteWhereQuery = WhereClauseBuilder() + .appendKeyStringValue( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, + trackedEntityInstanceUid + ) + .appendIsNullValue(TrackedEntityAttributeValueTableInfo.Columns.VALUE) + .build() + deleteWhere(deleteWhereQuery) + } + + private fun trackedEntityAttributeValueListFromQuery(query: String): List { + val trackedEntityAttributeValueList: MutableList = ArrayList() + val cursor = databaseAdapter.rawQuery(query) + addObjectsToCollection(cursor, trackedEntityAttributeValueList) + return trackedEntityAttributeValueList + } + + companion object { + private val BINDER = + StatementBinder { o: TrackedEntityAttributeValue, w: StatementWrapper -> + w.bind(1, o.value()) + w.bind(2, o.created()) + w.bind(3, o.lastUpdated()) + w.bind(4, o.trackedEntityAttribute()) + w.bind(5, o.trackedEntityInstance()) + } + private val WHERE_UPDATE_BINDER = + WhereStatementBinder { o: TrackedEntityAttributeValue, w: StatementWrapper -> + w.bind(6, o.trackedEntityAttribute()) + w.bind(7, o.trackedEntityInstance()) + } + private val WHERE_DELETE_BINDER = + WhereStatementBinder { o: TrackedEntityAttributeValue, w: StatementWrapper -> + w.bind(1, o.trackedEntityAttribute()) + w.bind(2, o.trackedEntityInstance()) + } + + @JvmField + val CHILD_PROJECTION = SingleParentChildProjection( + TrackedEntityAttributeValueTableInfo.TABLE_INFO, + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE + ) + + @JvmStatic + fun create(databaseAdapter: DatabaseAdapter): TrackedEntityAttributeValueStore { + val statementBuilder = SQLStatementBuilderImpl( + TrackedEntityAttributeValueTableInfo.TABLE_INFO.name(), + TrackedEntityAttributeValueTableInfo.TABLE_INFO.columns() + ) + return TrackedEntityAttributeValueStoreImpl( + databaseAdapter, + statementBuilder + ) + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index 696e0f6305..225c479140 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -41,6 +41,7 @@ import org.hisp.dhis.android.core.arch.api.paging.internal.ApiPagingEngine import org.hisp.dhis.android.core.arch.api.paging.internal.Paging import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager +import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.program.internal.ProgramDataDownloadParams import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives @@ -243,10 +244,15 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( val teisToPersist = getTEIsToPersist(paging, pageTEIs) - val hasAllAttributes = true - val hasAllEnrollments = baseQuery.commonParams().program == null + val persistParams = IdentifiableDataHandlerParams( + hasAllAttributes = true, + hasAllEnrollments = baseQuery.commonParams().program == null, + overwrite = overwrite, + asRelationship = false, + program = baseQuery.commonParams().program + ) - persistenceCallFactory.persistTEIs(teisToPersist, hasAllAttributes, hasAllEnrollments, overwrite, relatives) + persistenceCallFactory.persistTEIs(teisToPersist, persistParams, relatives) .blockingAwait() downloadedTEIsForCombination += teisToPersist.size @@ -279,16 +285,15 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( val tei = querySingleTei(uid, useEntityEndpoint, teiQuery) if (tei != null) { - val hasAllAttributes = !useEntityEndpoint - val hasAllEnrollments = teiQuery.commonParams().program == null - - persistenceCallFactory.persistTEIs( - listOf(tei), - hasAllAttributes, - hasAllEnrollments, - overwrite, - relatives - ).blockingAwait() + val persistParams = IdentifiableDataHandlerParams( + hasAllAttributes = !useEntityEndpoint, + hasAllEnrollments = teiQuery.commonParams().program == null, + overwrite = overwrite, + asRelationship = false, + program = teiQuery.commonParams().program + ) + + persistenceCallFactory.persistTEIs(listOf(tei), persistParams, relatives).blockingAwait() result.teiCount++ } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt index 253344174e..f2b080f5e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -87,9 +87,9 @@ internal class TrackedEntityInstanceHandler @Inject constructor( } if (params.hasAllAttributes) { - deleteOrphanAttributes(o) - } else { - // TODO Delete program attributes + deleteOrphanAttributes(o, program = null) + } else if (params.program != null) { + deleteOrphanAttributes(o, params.program) } val enrollments = TrackedEntityInstanceInternalAccessor.accessEnrollments(o) @@ -128,15 +128,19 @@ internal class TrackedEntityInstanceHandler @Inject constructor( return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build() } - private fun deleteOrphanAttributes(tei: TrackedEntityInstance) { - val trackedEntityAttributeValues = tei.trackedEntityAttributeValues() + private fun deleteOrphanAttributes(tei: TrackedEntityInstance, program: String?) { + tei.trackedEntityAttributeValues()?.let { attributes -> + val attributeUids = attributes.mapNotNull { it.trackedEntityAttribute() } - if (trackedEntityAttributeValues.isNullOrEmpty()) { - return + if (program == null) { + trackedEntityAttributeValueStore.deleteByInstanceAndNotInAttributes(tei.uid(), attributeUids) + } else { + trackedEntityAttributeValueStore.deleteByInstanceAndNotInProgramAttributes( + tei.uid(), + attributeUids, + program + ) + } } - - val attributeUids = trackedEntityAttributeValues.mapNotNull { it.trackedEntityAttribute() } - - trackedEntityAttributeValueStore.deleteByInstanceAndNotInAttributes(tei.uid(), attributeUids) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt index 91812fa103..f890b2a5af 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt @@ -43,17 +43,9 @@ internal class TrackedEntityInstancePersistenceCallFactory @Inject constructor( ) { fun persistTEIs( trackedEntityInstances: List, - hasAllAttributes: Boolean, - hasAllEnrollments: Boolean, - overwrite: Boolean, + params: IdentifiableDataHandlerParams, relatives: RelationshipItemRelatives ): Completable { - val params = IdentifiableDataHandlerParams( - hasAllAttributes = hasAllAttributes, - hasAllEnrollments = hasAllEnrollments, - overwrite = overwrite, - asRelationship = false - ) return persistTEIsInternal(trackedEntityInstances, params, relatives) } diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt index 448942d997..d9bcd2937b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -225,13 +225,28 @@ class TrackedEntityInstanceHandlerShould { } @Test - fun do_not_delete_orphan_attribute_values_if_not_all_attributes() { - val params = IdentifiableDataHandlerParams(false, false, false, false) + fun do_not_delete_orphan_attribute_values_if_not_all_attributes_and_null_program() { + val params = IdentifiableDataHandlerParams(false, false, false, false, null) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) verify(trackedEntityAttributeValueHandler, times(1)).handleMany(any(), any()) verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) + verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInProgramAttributes(any(), any(), any()) + } + + @Test + fun delete_orphan_program_attribute_values_if_not_all_attributes_and_program() { + val params = IdentifiableDataHandlerParams(false, false, false, false, "program") + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) + + verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) + verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) + verify(trackedEntityAttributeValueHandler, times(1)).handleMany(any(), any()) + verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) + verify(trackedEntityAttributeValueStore, times(1)).deleteByInstanceAndNotInProgramAttributes( + any(), any(), any() + ) } } From 34b3a8d9ec966c5e021fba1e3a75e81ccf0fb14a Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 10 Mar 2022 16:39:31 +0100 Subject: [PATCH 150/253] [ANDROSDK-1509] Accept version 2.38; allow NTI on >= 2.38 --- .../dhis/android/core/systeminfo/DHISPatchVersion.java | 6 +++++- .../hisp/dhis/android/core/systeminfo/DHISVersion.java | 8 ++++++-- .../dhis/android/core/systeminfo/DHISVersionManager.java | 2 ++ .../core/systeminfo/internal/DHISVersionManagerImpl.java | 5 +++++ .../android/core/tracker/TrackerPostParentCallHelper.kt | 2 +- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java index 5026b4adc3..929ec999fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java @@ -58,7 +58,11 @@ public enum DHISPatchVersion { V2_35_0(DHISVersion.V2_35, "2.35.0", SMSVersion.V2), - V2_36_0(DHISVersion.V2_36, "2.36.0", SMSVersion.V2); + V2_36_0(DHISVersion.V2_36, "2.36.0", SMSVersion.V2), + + V2_37_0(DHISVersion.V2_36, "2.37.0", SMSVersion.V2), + + V2_38_0(DHISVersion.V2_36, "2.38.0", SMSVersion.V2); private String strValue; private DHISVersion majorVersion; diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java index e1e14c4597..597f0f8b23 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java @@ -37,7 +37,8 @@ public enum DHISVersion { V2_34, V2_35, V2_36, - V2_37; + V2_37, + V2_38; private static final String V2_29_STR = "2.29"; private static final String V2_30_STR = "2.30"; @@ -48,6 +49,7 @@ public enum DHISVersion { private static final String V2_35_STR = "2.35"; private static final String V2_36_STR = "2.36"; private static final String V2_37_STR = "2.37"; + private static final String V2_38_STR = "2.38"; public static DHISVersion getValue(String versionStr) { if (versionStr.startsWith(V2_29_STR)) { @@ -68,6 +70,8 @@ public static DHISVersion getValue(String versionStr) { return V2_36; } else if (versionStr.startsWith(V2_37_STR)) { return V2_37; + } else if (versionStr.startsWith(V2_38_STR)) { + return V2_37; } else { return null; } @@ -79,6 +83,6 @@ public static boolean isAllowedVersion(String versionStr) { public static String[] allowedVersionsAsStr() { return new String[]{V2_29_STR, V2_30_STR, V2_31_STR, V2_32_STR, V2_33_STR, V2_34_STR, V2_35_STR, - V2_36_STR, V2_37_STR}; + V2_36_STR, V2_37_STR, V2_38_STR}; } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java index 8df9edf3a2..739a1d1b6f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java @@ -52,6 +52,8 @@ public interface DHISVersionManager { boolean is2_37(); + boolean is2_38(); + /** * Check if the current version is strictly greater than the parameter. * diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java index 0a2bb83018..175c4d2d5b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java @@ -131,6 +131,11 @@ public boolean is2_37() { return getVersion() == DHISVersion.V2_37; } + @Override + public boolean is2_38() { + return getVersion() == DHISVersion.V2_38; + } + @Override public boolean isGreaterThan(DHISVersion version) { return version.compareTo(getVersion()) < 0; diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt index 7b7de243f9..f25a808361 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt @@ -40,7 +40,7 @@ internal class TrackerPostParentCallHelper @Inject constructor( ) { fun useNewTrackerImporter(): Boolean { - return dhisVersionManager.isGreaterOrEqualThan(DHISVersion.V2_37) && + return dhisVersionManager.isGreaterOrEqualThan(DHISVersion.V2_38) && synchronizationSettingStore.selectFirst()?.trackerImporterVersion() == TrackerImporterVersion.V2 } } From 1acdd7b86a4f9d04cc79df1963f42a1f664ace40 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 10 Mar 2022 16:56:21 +0100 Subject: [PATCH 151/253] [ANDROSDK-1509] Adapt AssigendUser model in NTI --- ...NewTrackerImporterUserInfoColumnAdapter.kt | 46 ++++++++++++++ .../core/event/NewTrackerImporterEvent.java | 7 ++- .../NewTrackerImporterEventTransformer.kt | 3 +- .../NewTrackerImporterUserInfo.java | 60 +++++++++++++++++++ 4 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterUserInfo.java diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt new file mode 100644 index 0000000000..cfd0b44d9f --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.arch.db.adapters.custom.internal + +import android.content.ContentValues +import android.database.Cursor +import com.gabrielittner.auto.value.cursor.ColumnTypeAdapter +import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterUserInfo + +internal class NewTrackerImporterUserInfoColumnAdapter : ColumnTypeAdapter { + override fun fromCursor(cursor: Cursor, columnName: String): NewTrackerImporterUserInfo? { + val columnIndex = cursor.getColumnIndex(columnName) + val assignedUserUid = cursor.getString(columnIndex) + + return assignedUserUid?.let { NewTrackerImporterUserInfo.builder().uid(it).build() } + } + + override fun toContentValues(values: ContentValues, columnName: String, value: NewTrackerImporterUserInfo?) { + values.put(columnName, value?.uid()) + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java index f85b436203..c3c2d85860 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java @@ -41,6 +41,7 @@ import org.hisp.dhis.android.core.arch.db.adapters.custom.internal.DbDateColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.custom.internal.DbGeometryColumnAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.custom.internal.NewTrackerImporterUserInfoColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.enums.internal.EventStatusColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.enums.internal.StateColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreNewTackerImporterTrackedEntityDataValueListColumnAdapter; @@ -55,6 +56,7 @@ import org.hisp.dhis.android.core.note.NewTrackerImporterNote; import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterTrackedEntityDataValue; +import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterUserInfo; import java.util.Date; import java.util.List; @@ -135,7 +137,8 @@ public abstract class NewTrackerImporterEvent extends BaseDeletableDataObject im @Nullable @JsonProperty() - public abstract String assignedUser(); + @ColumnAdapter(NewTrackerImporterUserInfoColumnAdapter.class) + public abstract NewTrackerImporterUserInfo assignedUser(); @Nullable @JsonProperty() @@ -204,7 +207,7 @@ public abstract static class Builder extends BaseDeletableDataObject.Builder notes); diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt index 72982088e7..743d78a0bc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.event import org.hisp.dhis.android.core.arch.handlers.internal.Transformer import org.hisp.dhis.android.core.note.NewTrackerImporterNoteTransformer import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterTrackedEntityDataValueTransformer +import org.hisp.dhis.android.core.trackedentity.NewTrackerImporterUserInfo internal object NewTrackerImporterEventTransformer : Transformer { override fun transform(o: Event): NewTrackerImporterEvent { @@ -51,7 +52,7 @@ internal object NewTrackerImporterEventTransformer : Transformer Date: Thu, 10 Mar 2022 18:45:59 +0100 Subject: [PATCH 152/253] [ANDROSDK-1509] Adapt UserCredentials model --- .../hisp/dhis/android/core/common/BaseIdentifiableObject.java | 3 +++ .../org/hisp/dhis/android/core/systeminfo/DHISVersion.java | 2 +- .../dhis/android/core/user/internal/UserCredentialsFields.java | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java index 1ce8e9182d..811d550518 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java @@ -31,6 +31,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; import com.gabrielittner.auto.value.cursor.ColumnAdapter; @@ -50,6 +51,7 @@ public abstract class BaseIdentifiableObject implements IdentifiableObject, Obje public static SafeDateFormat SPACE_DATE_FORMAT = DateUtils.SPACE_DATE_FORMAT; public static final String UID = "id"; + public static final String UUID = "uid"; public static final String CODE = "code"; public static final String NAME = "name"; public static final String DISPLAY_NAME = "displayName"; @@ -108,6 +110,7 @@ public static String dateToDateStr(Date date) { public static abstract class Builder { @JsonProperty(UID) + @JsonAlias({UUID}) // Introduced in 2.38 due to changes in userCredentials model DHIS2-12577 public abstract T uid(String uid); public abstract T code(@Nullable String code); diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java index 597f0f8b23..e597ac8062 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java @@ -71,7 +71,7 @@ public static DHISVersion getValue(String versionStr) { } else if (versionStr.startsWith(V2_37_STR)) { return V2_37; } else if (versionStr.startsWith(V2_38_STR)) { - return V2_37; + return V2_38; } else { return null; } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java index f8d106c6c8..afcc2bbd1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java @@ -30,6 +30,7 @@ import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; import org.hisp.dhis.android.core.arch.fields.internal.FieldsHelper; +import org.hisp.dhis.android.core.common.BaseIdentifiableObject; import org.hisp.dhis.android.core.user.UserCredentials; import org.hisp.dhis.android.core.user.UserRole; @@ -42,6 +43,7 @@ public final class UserCredentialsFields { public static final Fields allFields = Fields.builder() .fields(fh.getIdentifiableFields()) .fields( + fh.field(BaseIdentifiableObject.UUID), fh.field(USERNAME), fh.nestedField(USER_ROLES).with(UserRoleFields.allFields) ).build(); From 077dac015ce2062ebd88d345b954fb5913c7400d Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 08:51:37 +0100 Subject: [PATCH 153/253] [ANDROSDK-1506] Adapt TEI query not to return glass-protected TEIs --- .../TrackedEntityInstanceLocalQueryHelper.kt | 53 ++++++++++++++----- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt index 00d3f2b02e..0eca27a96f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt @@ -28,8 +28,6 @@ package org.hisp.dhis.android.core.trackedentity.search import dagger.Reusable -import java.util.* -import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper import org.hisp.dhis.android.core.arch.helpers.DateUtils @@ -43,10 +41,15 @@ import org.hisp.dhis.android.core.event.EventTableInfo import org.hisp.dhis.android.core.organisationunit.OrganisationUnit import org.hisp.dhis.android.core.organisationunit.OrganisationUnitMode import org.hisp.dhis.android.core.organisationunit.OrganisationUnitTableInfo +import org.hisp.dhis.android.core.program.AccessLevel +import org.hisp.dhis.android.core.program.ProgramTableInfo import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValueTableInfo import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo +import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerTableInfo import org.hisp.dhis.android.core.user.AuthenticatedUserTableInfo import org.hisp.dhis.android.core.user.UserOrganisationUnitLinkTableInfo +import java.util.* +import javax.inject.Inject @Reusable @Suppress("TooManyFunctions") @@ -58,6 +61,8 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( private val eventAlias = "ev" private val orgunitAlias = "ou" private val teavAlias = "teav" + private val programAlias = "pr" + private val ownAlias = "own" private val teiUid = dot(teiAlias, "uid") private val teiAll = dot(teiAlias, "*") @@ -94,7 +99,11 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( if (hasProgram(scope)) { queryStr += " JOIN ${EnrollmentTableInfo.TABLE_INFO.name()} $enrollmentAlias" queryStr += " ON ${dot(teiAlias, IdentifiableColumns.UID)} = " + - dot(enrollmentAlias, EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE) + dot(enrollmentAlias, EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE) + + queryStr += " JOIN ${ProgramTableInfo.TABLE_INFO.name()} $programAlias" + queryStr += " ON ${dot(enrollmentAlias, EnrollmentTableInfo.Columns.PROGRAM)} = " + + dot(programAlias, IdentifiableColumns.UID) appendProgramWhere(where, scope) if (hasEvent(scope)) { @@ -188,18 +197,35 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( val value = if (scope.followUp() == true) 1 else 0 where.appendKeyNumberValue(dot(enrollmentAlias, EnrollmentTableInfo.Columns.FOLLOW_UP), value) } + + val tempOwnershipSubQuery = "SELECT 1 FROM ${ProgramTempOwnerTableInfo.TABLE_INFO.name()} $ownAlias " + + "WHERE ${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.TRACKED_ENTITY_INSTANCE)} = " + + dot(teiAlias, IdentifiableColumns.UID) + + " AND " + + "${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.PROGRAM)} = " + + dot(programAlias, IdentifiableColumns.UID) + + where.appendComplexQuery("CASE " + + "WHEN ${dot(programAlias, ProgramTableInfo.Columns.ACCESS_LEVEL)} = '${AccessLevel.PROTECTED.name}' " + + "THEN (" + + "NOT EXISTS($tempOwnershipSubQuery) " + + "OR " + + "EXISTS($tempOwnershipSubQuery AND ${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.VALID_UNTIL)}) " + + ">= ${DateUtils.DATE_FORMAT.format(Date())}" + + ") ELSE 1 END " + ) } private fun hasOrgunits(scope: TrackedEntityInstanceQueryRepositoryScope): Boolean { return ( - ( - scope.orgUnits().isNotEmpty() && - OrganisationUnitMode.ALL != scope.orgUnitMode() && - OrganisationUnitMode.ACCESSIBLE != scope.orgUnitMode() - ) || - OrganisationUnitMode.CAPTURE == scope.orgUnitMode() || - hasOrgunitSortOrder(scope) - ) + ( + scope.orgUnits().isNotEmpty() && + OrganisationUnitMode.ALL != scope.orgUnitMode() && + OrganisationUnitMode.ACCESSIBLE != scope.orgUnitMode() + ) || + OrganisationUnitMode.CAPTURE == scope.orgUnitMode() || + hasOrgunitSortOrder(scope) + ) } private fun hasOrgunitSortOrder(scope: TrackedEntityInstanceQueryRepositoryScope): Boolean { @@ -238,7 +264,8 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( OrganisationUnitMode.SELECTED -> scope.orgUnits().forEach { orgUnit -> inner.appendOrKeyStringValue(dot(orgunitAlias, IdentifiableColumns.UID), escapeQuotes(orgUnit)) } - OrganisationUnitMode.ACCESSIBLE, OrganisationUnitMode.ALL -> {} + OrganisationUnitMode.ACCESSIBLE, OrganisationUnitMode.ALL -> { + } } if (!inner.isEmpty) { where.appendComplexQuery(inner.build()) @@ -482,7 +509,7 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( val programClause = if (program == null) "" else "AND ${EnrollmentTableInfo.Columns.PROGRAM} = '$program'" return String.format( "(SELECT %s FROM %s WHERE %s IN (SELECT %s FROM %s WHERE %s = %s %s) " + - "ORDER BY IFNULL(%s, %s) DESC LIMIT 1) %s", + "ORDER BY IFNULL(%s, %s) DESC LIMIT 1) %s", field, EventTableInfo.TABLE_INFO.name(), EventTableInfo.Columns.ENROLLMENT, From 5d42b9914f9e25966fb7d0271b943c44e9787343 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 09:12:02 +0100 Subject: [PATCH 154/253] [ANDROSDK-1506] Add integration test --- ...ceLocalQueryHelperMockIntegrationShould.kt | 141 ++++++++++++++++++ .../TrackedEntityInstanceLocalQueryHelper.kt | 2 +- 2 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt new file mode 100644 index 0000000000..7e5c1cc47d --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.search + +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.arch.repositories.scope.RepositoryScope +import org.hisp.dhis.android.core.arch.repositories.scope.internal.FilterItemOperator +import org.hisp.dhis.android.core.arch.repositories.scope.internal.RepositoryScopeFilterItem +import org.hisp.dhis.android.core.common.AssignedUserMode +import org.hisp.dhis.android.core.common.DateFilterPeriod +import org.hisp.dhis.android.core.common.DateFilterPeriodHelper +import org.hisp.dhis.android.core.common.RelativePeriod +import org.hisp.dhis.android.core.enrollment.EnrollmentStatus +import org.hisp.dhis.android.core.event.EventStatus +import org.hisp.dhis.android.core.organisationunit.OrganisationUnitMode +import org.hisp.dhis.android.core.period.internal.CalendarProviderFactory +import org.hisp.dhis.android.core.period.internal.ParentPeriodGeneratorImpl.Companion.create +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStoreImpl +import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestFullDispatcher +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class TrackedEntityInstanceLocalQueryHelperMockIntegrationShould : BaseMockIntegrationTestFullDispatcher() { + + private val trackedEntityInstanceStore = TrackedEntityInstanceStoreImpl.create(databaseAdapter) + + private val calendarProvider = CalendarProviderFactory.calendarProvider + private val periodHelper = DateFilterPeriodHelper(calendarProvider, create(calendarProvider)) + private val localQueryHelper = TrackedEntityInstanceLocalQueryHelper(periodHelper) + + @Test + fun should_generate_valid_sql_queries() { + val scope = TrackedEntityInstanceQueryRepositoryScope.builder() + .program("programUid") + .programDate( + DateFilterPeriod.builder() + .period(RelativePeriod.LAST_10_YEARS) + .build() + ) + .enrollmentStatus(listOf(EnrollmentStatus.ACTIVE)) + .attribute( + listOf( + RepositoryScopeFilterItem.builder() + .key("attributeUid1") + .operator(FilterItemOperator.EQ) + .value("value1") + .build(), + RepositoryScopeFilterItem.builder() + .key("attributeUid2") + .operator(FilterItemOperator.EQ) + .value("value2") + .build() + ) + ) + .filter( + listOf( + RepositoryScopeFilterItem.builder() + .key("attributeUid1") + .operator(FilterItemOperator.EQ) + .value("value1") + .build(), + RepositoryScopeFilterItem.builder() + .key("attributeUid2") + .operator(FilterItemOperator.EQ) + .value("value2") + .build() + ) + ) + .query( + RepositoryScopeFilterItem.builder() + .key("") + .operator(FilterItemOperator.EQ) + .value("value1") + .build() + ) + .trackedEntityType("trackedEntityTypeUid") + .orgUnitMode(OrganisationUnitMode.CAPTURE) + .orgUnits(listOf("orgunit1", "orgunit2")) + .followUp(true) + .eventFilters( + listOf( + TrackedEntityInstanceQueryEventFilter.builder() + .assignedUserMode(AssignedUserMode.CURRENT) + .programStage("programStageUid") + .eventStatus(listOf(EventStatus.ACTIVE, EventStatus.COMPLETED)) + .eventDate( + DateFilterPeriod.builder() + .period(RelativePeriod.LAST_10_YEARS) + .build() + ) + .build() + ) + ) + .order( + listOf( + TrackedEntityInstanceQueryScopeOrderByItem.builder() + .column(TrackedEntityInstanceQueryScopeOrderColumn.ENROLLMENT_DATE) + .direction(RepositoryScope.OrderByDirection.DESC) + .build(), + TrackedEntityInstanceQueryScopeOrderByItem.builder() + .column(TrackedEntityInstanceQueryScopeOrderColumn.LAST_UPDATED) + .direction(RepositoryScope.OrderByDirection.ASC) + .build() + ) + ) + .build() + + val rawQuery = localQueryHelper.getSqlQuery(scope, emptySet(), 10) + + val instances = trackedEntityInstanceStore.selectRawQuery(rawQuery) + + assertThat(instances).isNotNull() + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt index 0eca27a96f..e7d46e90e8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt @@ -211,7 +211,7 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( "NOT EXISTS($tempOwnershipSubQuery) " + "OR " + "EXISTS($tempOwnershipSubQuery AND ${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.VALID_UNTIL)}) " + - ">= ${DateUtils.DATE_FORMAT.format(Date())}" + + ">= '${DateUtils.DATE_FORMAT.format(Date())}'" + ") ELSE 1 END " ) } From d837d02dde9111476b498e6c4afcaa2ae3260d5a Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 09:15:31 +0100 Subject: [PATCH 155/253] [ANDROSDK-1506] Checkstyle --- .../TrackedEntityInstanceLocalQueryHelper.kt | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt index e7d46e90e8..b97f1feb90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt @@ -28,6 +28,8 @@ package org.hisp.dhis.android.core.trackedentity.search import dagger.Reusable +import java.util.* +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper import org.hisp.dhis.android.core.arch.helpers.DateUtils @@ -48,8 +50,6 @@ import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo import org.hisp.dhis.android.core.trackedentity.ownership.ProgramTempOwnerTableInfo import org.hisp.dhis.android.core.user.AuthenticatedUserTableInfo import org.hisp.dhis.android.core.user.UserOrganisationUnitLinkTableInfo -import java.util.* -import javax.inject.Inject @Reusable @Suppress("TooManyFunctions") @@ -99,11 +99,11 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( if (hasProgram(scope)) { queryStr += " JOIN ${EnrollmentTableInfo.TABLE_INFO.name()} $enrollmentAlias" queryStr += " ON ${dot(teiAlias, IdentifiableColumns.UID)} = " + - dot(enrollmentAlias, EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE) + dot(enrollmentAlias, EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE) queryStr += " JOIN ${ProgramTableInfo.TABLE_INFO.name()} $programAlias" queryStr += " ON ${dot(enrollmentAlias, EnrollmentTableInfo.Columns.PROGRAM)} = " + - dot(programAlias, IdentifiableColumns.UID) + dot(programAlias, IdentifiableColumns.UID) appendProgramWhere(where, scope) if (hasEvent(scope)) { @@ -199,14 +199,15 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( } val tempOwnershipSubQuery = "SELECT 1 FROM ${ProgramTempOwnerTableInfo.TABLE_INFO.name()} $ownAlias " + - "WHERE ${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.TRACKED_ENTITY_INSTANCE)} = " + - dot(teiAlias, IdentifiableColumns.UID) + - " AND " + - "${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.PROGRAM)} = " + - dot(programAlias, IdentifiableColumns.UID) - - where.appendComplexQuery("CASE " + - "WHEN ${dot(programAlias, ProgramTableInfo.Columns.ACCESS_LEVEL)} = '${AccessLevel.PROTECTED.name}' " + + "WHERE ${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.TRACKED_ENTITY_INSTANCE)} = " + + dot(teiAlias, IdentifiableColumns.UID) + + " AND " + + "${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.PROGRAM)} = " + + dot(programAlias, IdentifiableColumns.UID) + + where.appendComplexQuery( + "CASE " + + "WHEN ${dot(programAlias, ProgramTableInfo.Columns.ACCESS_LEVEL)} = '${AccessLevel.PROTECTED.name}' " + "THEN (" + "NOT EXISTS($tempOwnershipSubQuery) " + "OR " + @@ -218,14 +219,14 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( private fun hasOrgunits(scope: TrackedEntityInstanceQueryRepositoryScope): Boolean { return ( - ( - scope.orgUnits().isNotEmpty() && - OrganisationUnitMode.ALL != scope.orgUnitMode() && - OrganisationUnitMode.ACCESSIBLE != scope.orgUnitMode() - ) || - OrganisationUnitMode.CAPTURE == scope.orgUnitMode() || - hasOrgunitSortOrder(scope) - ) + ( + scope.orgUnits().isNotEmpty() && + OrganisationUnitMode.ALL != scope.orgUnitMode() && + OrganisationUnitMode.ACCESSIBLE != scope.orgUnitMode() + ) || + OrganisationUnitMode.CAPTURE == scope.orgUnitMode() || + hasOrgunitSortOrder(scope) + ) } private fun hasOrgunitSortOrder(scope: TrackedEntityInstanceQueryRepositoryScope): Boolean { @@ -509,7 +510,7 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( val programClause = if (program == null) "" else "AND ${EnrollmentTableInfo.Columns.PROGRAM} = '$program'" return String.format( "(SELECT %s FROM %s WHERE %s IN (SELECT %s FROM %s WHERE %s = %s %s) " + - "ORDER BY IFNULL(%s, %s) DESC LIMIT 1) %s", + "ORDER BY IFNULL(%s, %s) DESC LIMIT 1) %s", field, EventTableInfo.TABLE_INFO.name(), EventTableInfo.Columns.ENROLLMENT, From 51313315e811a27486a87a5bf0fb70fbb5d5879f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 09:36:04 +0100 Subject: [PATCH 156/253] [ANDROSDK-1506] Fix breakTheGlassQuery --- .../search/TrackedEntityInstanceLocalQueryHelper.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt index b97f1feb90..33db10f8da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt @@ -205,14 +205,18 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( "${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.PROGRAM)} = " + dot(programAlias, IdentifiableColumns.UID) + /* Break the glass query. The condition is: + * - Not to have a record: this applies to CAPTURE teis and SEARCH teis that didn't need a ownership request. + * - To have a record that is not expired. + */ where.appendComplexQuery( "CASE " + "WHEN ${dot(programAlias, ProgramTableInfo.Columns.ACCESS_LEVEL)} = '${AccessLevel.PROTECTED.name}' " + "THEN (" + "NOT EXISTS($tempOwnershipSubQuery) " + "OR " + - "EXISTS($tempOwnershipSubQuery AND ${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.VALID_UNTIL)}) " + - ">= '${DateUtils.DATE_FORMAT.format(Date())}'" + + "EXISTS($tempOwnershipSubQuery AND ${dot(ownAlias, ProgramTempOwnerTableInfo.Columns.VALID_UNTIL)} " + + ">= '${DateUtils.DATE_FORMAT.format(Date())}')" + ") ELSE 1 END " ) } From 30dcf21497293acfec599224ab59aba6c6b999a7 Mon Sep 17 00:00:00 2001 From: Pablo Date: Fri, 11 Mar 2022 10:05:15 +0100 Subject: [PATCH 157/253] fix: Add testingServerUrl variable --- .../main/java/org/hisp/dhis/android/core/D2Manager.kt | 11 +++++++++-- .../internal/MultiUserDatabaseManagerForD2Manager.kt | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index 6999f6ece9..ef8034c76c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -49,6 +49,7 @@ object D2Manager { private var isTestMode = false private var testingSecureStore: SecureStore? = null private var testingInsecureStore: InsecureStore? = null + private var testingServerUrl: String? = null private var testingDatabaseName: String? = null private var testingUsername: String? = null @@ -102,7 +103,12 @@ object D2Manager { val credentials = d2DIComponent.credentialsSecureStore().get() if (wantToImportDBForExternalTesting()) { - multiUserDatabaseManager.loadDbForTesting(testingDatabaseName, false, testingUsername) + multiUserDatabaseManager.loadDbForTesting( + testingServerUrl, + testingDatabaseName, + false, + testingUsername + ) } else { multiUserDatabaseManager.loadIfLogged(credentials) } @@ -151,7 +157,8 @@ object D2Manager { } @VisibleForTesting - fun setTestingDatabase(databaseName: String, username: String) { + fun setTestingDatabase(serverUrl:String, databaseName: String, username: String) { + testingServerUrl = serverUrl testingDatabaseName = databaseName testingUsername = username } diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt index dcfa43e775..e970c1879f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt @@ -55,11 +55,12 @@ internal class MultiUserDatabaseManagerForD2Manager @Inject constructor( } } - fun loadDbForTesting(name: String?, encrypt: Boolean, username: String?) { + fun loadDbForTesting(serverUrl:String?, name: String?, encrypt: Boolean, username: String?) { val config = DatabaseAccount.builder() .databaseName(name) .encrypted(encrypt) .username(username) + .serverUrl(serverUrl) .databaseCreationDate(DateUtils.DATE_FORMAT.format(Date())) .build() databaseAdapterFactory.createOrOpenDatabase(databaseAdapter, config) From 790c288b1e9953cbaa4fcb76da236d92309f88b1 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 10:05:45 +0100 Subject: [PATCH 158/253] [ANDROSDK-1376] Add programStageId variable --- .../internal/variable/ProgramVariableItem.kt | 3 +- .../internal/variable/VProgramStageId.kt | 55 +++++++++++++++++++ ...ackedEntityInstanceDownloadInternalCall.kt | 4 +- .../ProgramIndicatorExecutorShould.kt | 13 +++++ 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt index afdc7c5bdd..b1dea53889 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt @@ -75,7 +75,8 @@ internal class ProgramVariableItem : ProgramExpressionItem() { ExpressionParser.V_INCIDENT_DATE to VIncidentDate(), ExpressionParser.V_TEI_COUNT to VTeiCount(), ExpressionParser.V_VALUE_COUNT to VValueCount(), - ExpressionParser.V_ZERO_POS_VALUE_COUNT to VZeroPosValueCount() + ExpressionParser.V_ZERO_POS_VALUE_COUNT to VZeroPosValueCount(), + ExpressionParser.V_PROGRAM_STAGE_ID to VProgramStageId() ) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt new file mode 100644 index 0000000000..b1ec862314 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.program.programindicatorengine.internal.variable + +import org.hisp.dhis.android.core.common.AnalyticsType +import org.hisp.dhis.android.core.event.EventTableInfo +import org.hisp.dhis.android.core.parser.internal.expression.CommonExpressionVisitor +import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramExpressionItem +import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramIndicatorSQLUtils +import org.hisp.dhis.parser.expression.antlr.ExpressionParser.ExprContext + +internal class VProgramStageId : ProgramExpressionItem() { + + override fun evaluate(ctx: ExprContext, visitor: CommonExpressionVisitor): Any? { + val event = getLatestEvent(visitor) + + return event?.programStage() + } + + override fun getSql(ctx: ExprContext, visitor: CommonExpressionVisitor): Any { + return when (visitor.programIndicatorSQLContext.programIndicator.analyticsType()) { + AnalyticsType.EVENT -> + "${ProgramIndicatorSQLUtils.event}.${EventTableInfo.Columns.PROGRAM_STAGE}" + AnalyticsType.ENROLLMENT, null -> + ProgramIndicatorSQLUtils.getEventColumnForEnrollmentWhereClause( + column = EventTableInfo.Columns.PROGRAM_STAGE + ) + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index 225c479140..7f03f4ab55 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -194,10 +194,10 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( return when { params.uids().isNotEmpty() -> params.uids().size params.limitByProgram() != true -> { - val numOfCombinations = iterables.bundleOrgUnitPrograms.values.map { it.size }.sum() + val numOfCombinations = iterables.bundleOrgUnitPrograms.values.sumOf { it.size } val pendingTeis = bundle.commonParams().limit - iterables.teisCount - if (numOfCombinations == 0) 0 + if (numOfCombinations == 0 || pendingTeis == 0) 0 else ceil(pendingTeis.toDouble() / numOfCombinations.toDouble()).roundToInt() } else -> bundle.commonParams().limit - iterables.teisCount diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt index 44bf6559b6..46d3fa0199 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt @@ -386,6 +386,19 @@ class ProgramIndicatorExecutorShould { assertThat(result).isEqualTo("1") } + @Test + fun evaluate_program_stage_id() { + setExpression(`var`("program_stage_id")) + whenever(event1.eventDate()) doReturn DateUtils.DATE_FORMAT.parse("2020-01-01T00:00:00.000") + whenever(event2_1.eventDate()) doReturn DateUtils.DATE_FORMAT.parse("2020-01-02T00:00:00.000") + whenever(event2_2.eventDate()) doReturn null + + whenever(event2_1.programStage()) doReturn programStage2 + + val result = programIndicatorExecutor.getProgramIndicatorValue(programIndicator) + assertThat(result).isEqualTo(programStage2) + } + @Test fun evaluate_empty_filter() { setExpression("4") From 500131dd979d6edc4e2c73d1bb725b02ede4e3bd Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 10:19:01 +0100 Subject: [PATCH 159/253] [FIX_TESTING_DB_INIT] Checkstyle --- core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt | 2 +- .../internal/MultiUserDatabaseManagerForD2Manager.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index ef8034c76c..f4ccef38d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -157,7 +157,7 @@ object D2Manager { } @VisibleForTesting - fun setTestingDatabase(serverUrl:String, databaseName: String, username: String) { + fun setTestingDatabase(serverUrl: String, databaseName: String, username: String) { testingServerUrl = serverUrl testingDatabaseName = databaseName testingUsername = username diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt index e970c1879f..61eb64c486 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt @@ -55,7 +55,7 @@ internal class MultiUserDatabaseManagerForD2Manager @Inject constructor( } } - fun loadDbForTesting(serverUrl:String?, name: String?, encrypt: Boolean, username: String?) { + fun loadDbForTesting(serverUrl: String?, name: String?, encrypt: Boolean, username: String?) { val config = DatabaseAccount.builder() .databaseName(name) .encrypted(encrypt) From e4307cf1e5cec81efb265944913529f4ae4599ee Mon Sep 17 00:00:00 2001 From: ericampire Date: Fri, 11 Mar 2022 12:33:34 +0200 Subject: [PATCH 160/253] [ANDROSDK-1345] Remove Play services depedency --- core/build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index 6526d7dbcf..f0b7f8a5b9 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -177,10 +177,6 @@ dependencies { api "com.fasterxml.jackson.core:jackson-databind:${libraries.jackson}" api "com.fasterxml.jackson.module:jackson-module-kotlin:${libraries.jackson}" - - // Google's play services - api "com.google.android.gms:play-services-safetynet:${libraries.safetyNet}" - // Square libraries api "com.squareup.okhttp3:okhttp:${libraries.okHttp}" api "com.squareup.retrofit2:retrofit:${libraries.retrofit}" From 2e0c16d0c78f7903c15a0e9591b975b759222636 Mon Sep 17 00:00:00 2001 From: ericampire Date: Fri, 11 Mar 2022 12:34:43 +0200 Subject: [PATCH 161/253] [ANDROSDK-1345] Update minSdkVersion to 21 --- core/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/build.gradle b/core/build.gradle index f0b7f8a5b9..0607e7c165 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -40,7 +40,7 @@ apply from: project.file("plugins/android-pmd.gradle") ext { configuration = [ buildToolsVersion: "30.0.2", - minSdkVersion : 19, + minSdkVersion : 21, targetSdkVersion : 31, versionCode : 260, versionName : "1.6.0-SNAPSHOT" From 8552afb159438c7dee7c552ae7fb6ded1a3afc15 Mon Sep 17 00:00:00 2001 From: ericampire Date: Fri, 11 Mar 2022 13:03:33 +0200 Subject: [PATCH 162/253] [ANDROSDK-1345] Restore play services --- core/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/build.gradle b/core/build.gradle index 0607e7c165..0ab2b3dc66 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -177,6 +177,9 @@ dependencies { api "com.fasterxml.jackson.core:jackson-databind:${libraries.jackson}" api "com.fasterxml.jackson.module:jackson-module-kotlin:${libraries.jackson}" + // Google's play services + api "com.google.android.gms:play-services-safetynet:${libraries.safetyNet}" + // Square libraries api "com.squareup.okhttp3:okhttp:${libraries.okHttp}" api "com.squareup.retrofit2:retrofit:${libraries.retrofit}" From f8bc7b7a5cc5f34475acbfb2540e37488b6c1db5 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 12:17:30 +0100 Subject: [PATCH 163/253] [ANDROSDK-1376] Add programStageName variable --- .../evaluator/BaseEvaluatorSamples.kt | 1 + .../IndicatorEvaluatorIntegrationShould.kt | 4 +- ...amIndicatorSQLExecutorIntegrationShould.kt | 56 ++++++++++++++++ .../expression/CommonExpressionVisitor.java | 16 ++++- .../internal/service/ExpressionService.java | 7 +- .../internal/ProgramIndicatorEngineImpl.kt | 7 +- .../internal/ProgramIndicatorExecutor.kt | 5 +- .../internal/variable/ProgramVariableItem.kt | 3 +- .../internal/variable/VProgramStageName.kt | 67 +++++++++++++++++++ .../DataSetIndicatorEvaluatorShould.kt | 2 +- .../expression/ExpressionServiceShould.java | 13 ++-- .../ProgramIndicatorExecutorShould.kt | 22 +++++- docs/content/developer/analytics.md | 8 +-- .../developer/program-indicator-engine.md | 4 +- 14 files changed, 196 insertions(+), 19 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt index 7be8b61d65..342e1c9397 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt @@ -211,6 +211,7 @@ object BaseEvaluatorSamples { val programStage1: ProgramStage = ProgramStage.builder() .uid(generator.generate()) + .name("Program stage 1") .program(ObjectWithUid.create(program.uid())) .formType(FormType.DEFAULT) .build() diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt index 14520aa658..c757195c33 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt @@ -33,6 +33,7 @@ import org.hisp.dhis.android.core.constant.internal.ConstantStore import org.hisp.dhis.android.core.dataelement.internal.DataElementStore import org.hisp.dhis.android.core.organisationunit.internal.OrganisationUnitGroupStore import org.hisp.dhis.android.core.parser.internal.service.ExpressionService +import org.hisp.dhis.android.core.program.internal.ProgramStageStore import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramIndicatorSQLExecutor import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityAttributeStore import org.hisp.dhis.android.core.utils.runner.D2JunitRunner @@ -55,7 +56,8 @@ internal class IndicatorEvaluatorIntegrationShould : IndicatorEvaluatorIntegrati private val expressionService = ExpressionService( DataElementStore.create(databaseAdapter), CategoryOptionComboStoreImpl.create(databaseAdapter), - OrganisationUnitGroupStore.create(databaseAdapter) + OrganisationUnitGroupStore.create(databaseAdapter), + ProgramStageStore.create(databaseAdapter) ) private val indicatorEngine = IndicatorEngine( diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt index ea57a863d3..d0037f8c8f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt @@ -916,6 +916,62 @@ internal class ProgramIndicatorSQLExecutorIntegrationShould : BaseEvaluatorInteg ).isEqualTo("2") } + @Test + fun should_evaluate_program_stage_variables() { + helper.createTrackedEntity(trackedEntity1.uid(), orgunitChild1.uid(), trackedEntityType.uid()) + val enrollment1 = generator.generate() + helper.createEnrollment(trackedEntity1.uid(), enrollment1, program.uid(), orgunitChild1.uid()) + val event1 = generator.generate() + helper.createTrackerEvent( + event1, enrollment1, program.uid(), programStage1.uid(), orgunitChild1.uid(), + eventDate = firstNovember2019 + ) + + assertThat( + programIndicatorEvaluator.getProgramIndicatorValue( + setProgramIndicator( + expression = `var`("tei_count"), + filter = "${`var`("program_stage_id")} == '${programStage1.uid()}'", + analyticsType = AnalyticsType.EVENT, + aggregationType = AggregationType.COUNT + ) + ) + ).isEqualTo("1") + + assertThat( + programIndicatorEvaluator.getProgramIndicatorValue( + setProgramIndicator( + expression = `var`("tei_count"), + filter = "${`var`("program_stage_id")} == '${programStage1.uid()}'", + analyticsType = AnalyticsType.ENROLLMENT, + aggregationType = AggregationType.COUNT + ) + ) + ).isEqualTo("1") + + assertThat( + programIndicatorEvaluator.getProgramIndicatorValue( + setProgramIndicator( + expression = `var`("tei_count"), + filter = "${`var`("program_stage_name")} == '${programStage1.name()}'", + analyticsType = AnalyticsType.EVENT, + aggregationType = AggregationType.COUNT + ) + ) + ).isEqualTo("1") + + assertThat( + programIndicatorEvaluator.getProgramIndicatorValue( + setProgramIndicator( + expression = `var`("tei_count"), + filter = "${`var`("program_stage_name")} == '${programStage1.name()}'", + analyticsType = AnalyticsType.ENROLLMENT, + aggregationType = AggregationType.COUNT + ) + ) + ).isEqualTo("1") + } + private fun setProgramIndicator( expression: String, filter: String? = null, diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java index 30310d9dcb..f59572ccd8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java @@ -42,6 +42,7 @@ import org.hisp.dhis.android.core.dataelement.DataElement; import org.hisp.dhis.android.core.organisationunit.OrganisationUnitGroup; import org.hisp.dhis.android.core.parser.internal.service.dataitem.DimensionalItemId; +import org.hisp.dhis.android.core.program.ProgramStage; import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramIndicatorContext; import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramIndicatorExecutor; import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramIndicatorSQLContext; @@ -57,7 +58,7 @@ import java.util.Map; import java.util.Set; -@SuppressWarnings({"PMD.TooManyFields"}) +@SuppressWarnings({"PMD.TooManyFields", "PMD.ExcessivePublicCount"}) public class CommonExpressionVisitor extends AntlrExpressionVisitor { @@ -69,6 +70,8 @@ public class CommonExpressionVisitor private IdentifiableObjectStore organisationUnitGroupStore; + private IdentifiableObjectStore programStageStore; + /** * Map of ExprItem instances to call for each expression item */ @@ -286,6 +289,10 @@ public IdentifiableObjectStore getOrganisationUnitGroupSt return organisationUnitGroupStore; } + public IdentifiableObjectStore getProgramStageStore() { + return programStageStore; + } + public Map getItemDescriptions() { return itemDescriptions; } @@ -403,6 +410,11 @@ public Builder withOrganisationUnitGroupStore(IdentifiableObjectStore store) { + this.visitor.programStageStore = store; + return this; + } + public Builder withProgramIndicatorContext(ProgramIndicatorContext programIndicatorContext) { this.visitor.programIndicatorContext = programIndicatorContext; return this; @@ -434,6 +446,7 @@ public CommonExpressionVisitor buildForExpressions() { Validate.notNull(this.visitor.dataElementStore, missingProperty("dataElementStore")); Validate.notNull(this.visitor.categoryOptionComboStore, missingProperty("categoryOptionComboStore")); Validate.notNull(this.visitor.organisationUnitGroupStore, missingProperty("organisationUnitGroupStore")); + Validate.notNull(this.visitor.programStageStore, missingProperty("programStageStore")); return validateCommonProperties(); } @@ -442,6 +455,7 @@ public CommonExpressionVisitor buildForProgramIndicator() { Validate.notNull(this.visitor.programIndicatorContext, missingProperty("programIndicatorContext")); Validate.notNull(this.visitor.programIndicatorExecutor, missingProperty("programIndicatorExecutor")); Validate.notNull(this.visitor.attributeStore, missingProperty("trackedEntityAttributeStore")); + Validate.notNull(this.visitor.programStageStore, missingProperty("programStageStore")); return validateCommonProperties(); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java index f6906112ac..5c4fd7ed34 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java @@ -51,6 +51,7 @@ import org.hisp.dhis.android.core.parser.internal.service.dataitem.DimItemDataElementAndOperand; import org.hisp.dhis.android.core.parser.internal.service.dataitem.DimensionalItemId; import org.hisp.dhis.android.core.parser.internal.service.dataobject.DimensionalItemObject; +import org.hisp.dhis.android.core.program.ProgramStage; import org.hisp.dhis.android.core.validation.MissingValueStrategy; import java.util.Collections; @@ -71,16 +72,19 @@ public class ExpressionService { private final IdentifiableObjectStore dataElementStore; private final CategoryOptionComboStore categoryOptionComboStore; private final IdentifiableObjectStore organisationUnitGroupStore; + private final IdentifiableObjectStore programStageStore; private final Map validationRuleExpressionItems; @Inject public ExpressionService(IdentifiableObjectStore dataElementStore, CategoryOptionComboStore categoryOptionComboStore, - IdentifiableObjectStore organisationUnitGroupStore) { + IdentifiableObjectStore organisationUnitGroupStore, + IdentifiableObjectStore programStageStore) { this.dataElementStore = dataElementStore; this.categoryOptionComboStore = categoryOptionComboStore; this.organisationUnitGroupStore = organisationUnitGroupStore; + this.programStageStore = programStageStore; this.validationRuleExpressionItems = getValidationRuleExpressionItems(); } @@ -257,6 +261,7 @@ private CommonExpressionVisitor newVisitor( .withDataElementStore(dataElementStore) .withCategoryOptionComboStore(categoryOptionComboStore) .withOrganisationUnitGroupStore(organisationUnitGroupStore) + .withProgramStageStore(programStageStore) //.withSamplePeriods( samplePeriods )() .buildForExpressions(); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt index fe26403e2b..5a6fad6d54 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt @@ -39,6 +39,7 @@ import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.EventCollectionRepository import org.hisp.dhis.android.core.program.ProgramIndicator +import org.hisp.dhis.android.core.program.ProgramStage import org.hisp.dhis.android.core.program.ProgramStageCollectionRepository import org.hisp.dhis.android.core.program.programindicatorengine.ProgramIndicatorEngine import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttribute @@ -53,7 +54,8 @@ internal class ProgramIndicatorEngineImpl @Inject constructor( private val eventRepository: EventCollectionRepository, private val programRepository: ProgramStageCollectionRepository, private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore, - private val constantStore: IdentifiableObjectStore + private val constantStore: IdentifiableObjectStore, + private val programStageStore: IdentifiableObjectStore ) : ProgramIndicatorEngine { override fun getProgramIndicatorValue( @@ -112,7 +114,8 @@ internal class ProgramIndicatorEngineImpl @Inject constructor( constantMap, context, dataElementStore, - trackedEntityAttributeStore + trackedEntityAttributeStore, + programStageStore ) return executor.getProgramIndicatorValue(context.programIndicator) diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt index 6debe69e51..a881ce0629 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt @@ -35,6 +35,7 @@ import org.hisp.dhis.android.core.parser.internal.expression.CommonParser import org.hisp.dhis.android.core.parser.internal.expression.ExpressionItemMethod import org.hisp.dhis.android.core.parser.internal.expression.ParserUtils import org.hisp.dhis.android.core.program.ProgramIndicator +import org.hisp.dhis.android.core.program.ProgramStage import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttribute import org.hisp.dhis.antlr.AntlrParserUtils import org.hisp.dhis.antlr.ParserExceptionWithoutContext @@ -43,7 +44,8 @@ internal class ProgramIndicatorExecutor constructor( private val constantMap: Map, private val programIndicatorContext: ProgramIndicatorContext, private val dataElementStore: IdentifiableObjectStore, - private val trackedEntityAttributeStore: IdentifiableObjectStore + private val trackedEntityAttributeStore: IdentifiableObjectStore, + private val programStageStore: IdentifiableObjectStore ) { fun getProgramIndicatorValue(programIndicator: ProgramIndicator): String? { val visitor = newVisitor(ParserUtils.ITEM_EVALUATE) @@ -114,6 +116,7 @@ internal class ProgramIndicatorExecutor constructor( .withProgramIndicatorExecutor(this) .withDataElementStore(dataElementStore) .withTrackedEntityAttributeStore(trackedEntityAttributeStore) + .withProgramStageStore(programStageStore) .buildForProgramIndicator() } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt index b1dea53889..1d74520dcc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt @@ -76,7 +76,8 @@ internal class ProgramVariableItem : ProgramExpressionItem() { ExpressionParser.V_TEI_COUNT to VTeiCount(), ExpressionParser.V_VALUE_COUNT to VValueCount(), ExpressionParser.V_ZERO_POS_VALUE_COUNT to VZeroPosValueCount(), - ExpressionParser.V_PROGRAM_STAGE_ID to VProgramStageId() + ExpressionParser.V_PROGRAM_STAGE_ID to VProgramStageId(), + ExpressionParser.V_PROGRAM_STAGE_NAME to VProgramStageName() ) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt new file mode 100644 index 0000000000..93cf6ec13a --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.program.programindicatorengine.internal.variable + +import org.hisp.dhis.android.core.common.AnalyticsType +import org.hisp.dhis.android.core.common.IdentifiableColumns +import org.hisp.dhis.android.core.event.EventTableInfo +import org.hisp.dhis.android.core.parser.internal.expression.CommonExpressionVisitor +import org.hisp.dhis.android.core.program.ProgramStageTableInfo +import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramExpressionItem +import org.hisp.dhis.android.core.program.programindicatorengine.internal.ProgramIndicatorSQLUtils +import org.hisp.dhis.parser.expression.antlr.ExpressionParser.ExprContext + +internal class VProgramStageName : ProgramExpressionItem() { + + override fun evaluate(ctx: ExprContext, visitor: CommonExpressionVisitor): Any? { + val event = getLatestEvent(visitor) + + return event?.programStage()?.let { + visitor.programStageStore.selectByUid(it)?.name() + } + } + + override fun getSql(ctx: ExprContext, visitor: CommonExpressionVisitor): Any { + return when (visitor.programIndicatorSQLContext.programIndicator.analyticsType()) { + AnalyticsType.EVENT -> + "(SELECT ${ProgramStageTableInfo.Columns.NAME} " + + "FROM ${ProgramStageTableInfo.TABLE_INFO.name()} ps " + + "WHERE ps.${IdentifiableColumns.UID} = " + + "${ProgramIndicatorSQLUtils.event}.${EventTableInfo.Columns.PROGRAM_STAGE}" + + ")" + AnalyticsType.ENROLLMENT, null -> + ProgramIndicatorSQLUtils.getEventColumnForEnrollmentWhereClause( + column = "(SELECT ${ProgramStageTableInfo.Columns.NAME} " + + "FROM ${ProgramStageTableInfo.TABLE_INFO.name()} ps " + + "WHERE ps.${IdentifiableColumns.UID} = " + + EventTableInfo.Columns.PROGRAM_STAGE + + ")" + ) + } + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt index 87b61a18db..fd3f1494db 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt @@ -62,7 +62,7 @@ class DataSetIndicatorEvaluatorShould { @Before fun setUp() { - expressionService = ExpressionService(mock(), mock(), mock()) + expressionService = ExpressionService(mock(), mock(), mock(), mock()) evaluator = DataSetIndicatorEvaluator(expressionService) whenever(indicatorType.factor()) doReturn 1 diff --git a/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java b/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java index d3ddfe3bbd..4f07d60329 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java @@ -28,6 +28,9 @@ package org.hisp.dhis.android.core.parser.internal.expression; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore; import org.hisp.dhis.android.core.category.CategoryOptionCombo; import org.hisp.dhis.android.core.category.internal.CategoryOptionComboStore; @@ -39,6 +42,7 @@ import org.hisp.dhis.android.core.parser.internal.service.dataobject.DataElementObject; import org.hisp.dhis.android.core.parser.internal.service.dataobject.DataElementOperandObject; import org.hisp.dhis.android.core.parser.internal.service.dataobject.DimensionalItemObject; +import org.hisp.dhis.android.core.program.ProgramStage; import org.hisp.dhis.android.core.validation.MissingValueStrategy; import org.junit.Before; import org.junit.Test; @@ -50,9 +54,6 @@ import java.util.Map; import java.util.Set; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.when; - public class ExpressionServiceShould { private String dataElementId1 = "sK2wroysTNW"; @@ -82,6 +83,9 @@ public class ExpressionServiceShould { @Mock IdentifiableObjectStore organisationUnitGroupStore; + @Mock + IdentifiableObjectStore programStageStore; + @Mock OrganisationUnitGroup organisationUnitGroup; @@ -98,7 +102,8 @@ public void setUp() { service = new ExpressionService( dataElementStore, categoryOptionComboStore, - organisationUnitGroupStore); + organisationUnitGroupStore, + programStageStore); when(dataElementStore.selectByUid(dataElementId1)).thenReturn(dataElement1); when(dataElementStore.selectByUid(dataElementId2)).thenReturn(dataElement2); diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt index 46d3fa0199..9838be3225 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt @@ -42,6 +42,7 @@ import org.hisp.dhis.android.core.enrollment.EnrollmentStatus import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.EventStatus import org.hisp.dhis.android.core.program.ProgramIndicator +import org.hisp.dhis.android.core.program.ProgramStage import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttribute import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue @@ -68,6 +69,8 @@ class ProgramIndicatorExecutorShould { private val trackedEntityAttributeStore: IdentifiableObjectStore = mock() + private val programStageStore: IdentifiableObjectStore = mock() + private val programIndicator: ProgramIndicator = mock() private val programIndicatorContext: ProgramIndicatorContext = mock() @@ -101,6 +104,8 @@ class ProgramIndicatorExecutorShould { private val dataElement1: DataElement = mock() private val dataElement2: DataElement = mock() + private val programStage: ProgramStage = mock() + private val attribute1: TrackedEntityAttribute = mock() private val attribute2: TrackedEntityAttribute = mock() @@ -108,7 +113,8 @@ class ProgramIndicatorExecutorShould { constantMap, programIndicatorContext, dataElementStore, - trackedEntityAttributeStore + trackedEntityAttributeStore, + programStageStore ) @Before @@ -399,6 +405,20 @@ class ProgramIndicatorExecutorShould { assertThat(result).isEqualTo(programStage2) } + @Test + fun evaluate_program_stage_name() { + setExpression(`var`("program_stage_name")) + whenever(event1.eventDate()) doReturn DateUtils.DATE_FORMAT.parse("2020-01-01T00:00:00.000") + whenever(event2_1.eventDate()) doReturn DateUtils.DATE_FORMAT.parse("2020-01-02T00:00:00.000") + + whenever(event2_1.programStage()) doReturn programStage2 + whenever(programStageStore.selectByUid(programStage2)) doReturn programStage + whenever(programStage.name()) doReturn "Program stage name" + + val result = programIndicatorExecutor.getProgramIndicatorValue(programIndicator) + assertThat(result).isEqualTo("Program stage name") + } + @Test fun evaluate_empty_filter() { setExpression("4") diff --git a/docs/content/developer/analytics.md b/docs/content/developer/analytics.md index ce1de258da..49c5680b51 100644 --- a/docs/content/developer/analytics.md +++ b/docs/content/developer/analytics.md @@ -444,20 +444,20 @@ ProgramIndicator analytic boundaries are not supported at the moment. ProgramInd |**Variables:** |AnalyticsPeriodEnd | Yes | No | | |AnalyticsPeriodStart | Yes | No | | |CreationDate | Yes | Yes | -| |CurrentDate searchrepo | Yes | Yes | +| |CurrentDate | Yes | Yes | | |CompletedDate | Yes | Yes | | |DueDate | Yes | Yes | | |EnrollmentCount | Yes | Yes | | |EnrollmentDate | Yes | Yes | -| |EnrollmentStatus searchrepo | Yes | Yes | +| |EnrollmentStatus | Yes | Yes | | |EventStatus | Yes | Yes | | |EventCount | Yes | Yes | | |ExecutionDate | Yes | Yes | | |EventDate | Yes | Yes | | |IncidentDate | Yes | Yes | | |OrgunitCount | Yes | No | -| |ProgramStageId | Yes | No | -| |ProgramStageName | Yes | No | +| |ProgramStageId | Yes | Yes | +| |ProgramStageName | Yes | Yes | | |SyncDate | Yes | No | | |TeiCount | Yes | Yes | | |ValueCount | Yes | Yes | diff --git a/docs/content/developer/program-indicator-engine.md b/docs/content/developer/program-indicator-engine.md index cd48d1a9dc..8b3a15cd77 100644 --- a/docs/content/developer/program-indicator-engine.md +++ b/docs/content/developer/program-indicator-engine.md @@ -104,8 +104,8 @@ Table: Compatibility | |EventDate | Yes | Yes | | |IncidentDate | Yes | Yes | | |OrgunitCount | No | No | -| |ProgramStageId | Yes | No | -| |ProgramStageName | Yes | No | +| |ProgramStageId | Yes | Yes | +| |ProgramStageName | Yes | Yes | | |SyncDate | No | No | | |TeiCount | Yes | Yes | | |ValueCount | Yes | Yes | From 2e75c09d2a96aa5aa0728dd04e9cbe9224fe3222 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 12:30:41 +0100 Subject: [PATCH 164/253] [ANDROSDK-1516] Reject connections to 2.29 --- .../java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java | 2 +- .../hisp/dhis/android/core/systeminfo/DHISVersionManager.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java index e597ac8062..edad47c024 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java @@ -82,7 +82,7 @@ public static boolean isAllowedVersion(String versionStr) { } public static String[] allowedVersionsAsStr() { - return new String[]{V2_29_STR, V2_30_STR, V2_31_STR, V2_32_STR, V2_33_STR, V2_34_STR, V2_35_STR, + return new String[]{V2_30_STR, V2_31_STR, V2_32_STR, V2_33_STR, V2_34_STR, V2_35_STR, V2_36_STR, V2_37_STR, V2_38_STR}; } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java index 739a1d1b6f..94e6729fbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java @@ -34,6 +34,7 @@ public interface DHISVersionManager { SMSVersion getSmsVersion(); + @Deprecated boolean is2_29(); boolean is2_30(); From 929a8cf358f1fc41f1cb29d8520d50b9e410bef4 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 12:40:00 +0100 Subject: [PATCH 165/253] [ANDROSDK-1516] Remove data sync compatibility --- .../data/internal/AggregatedDataCall.java | 12 +- .../event/internal/EventPostParentCall.kt | 5 +- .../core/event/internal/OldEventPostCall.kt | 114 ----------------- .../note/internal/NoteDHISVersionManager.java | 21 +--- .../core/option/internal/OptionGroupCall.java | 19 +-- ...tionshipDownloadAndPersistCallFactory.java | 23 +--- .../OldTrackedEntityInstancePostCall.kt | 118 ------------------ .../TrackedEntityInstancePostParentCall.kt | 4 +- .../internal/TrackerPostStateManager.kt | 12 +- 9 files changed, 25 insertions(+), 303 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java index df120a56e4..5225611a1d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java @@ -47,7 +47,6 @@ import org.hisp.dhis.android.core.datavalue.DataValue; import org.hisp.dhis.android.core.datavalue.internal.DataValueQuery; import org.hisp.dhis.android.core.resource.internal.ResourceHandler; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; import org.hisp.dhis.android.core.systeminfo.internal.SystemInfoModuleDownloader; import java.util.ArrayList; @@ -67,7 +66,6 @@ final class AggregatedDataCall { private final SystemInfoModuleDownloader systemInfoModuleDownloader; - private final DHISVersionManager dhisVersionManager; private final QueryCall dataValueCall; private final QueryCall dataSetCompleteRegistrationCall; @@ -82,7 +80,6 @@ final class AggregatedDataCall { @Inject AggregatedDataCall(@NonNull SystemInfoModuleDownloader systemInfoModuleDownloader, - @NonNull DHISVersionManager dhisVersionManager, @NonNull QueryCall dataValueCall, @NonNull QueryCall dataSetCompleteRegistrationCall, @@ -94,7 +91,6 @@ final class AggregatedDataCall { @NonNull ResourceHandler resourceHandler, @NonNull AggregatedDataSyncHashHelper hashHelper) { this.systemInfoModuleDownloader = systemInfoModuleDownloader; - this.dhisVersionManager = dhisVersionManager; this.dataValueCall = dataValueCall; this.dataSetCompleteRegistrationCall = dataSetCompleteRegistrationCall; this.dataApprovalCall = dataApprovalCall; @@ -148,11 +144,9 @@ private Observable downloadInternal(AggregatedDataCallBundle bundle, add(dataSetCompleteRegistrationSingle); }}; - if (!dhisVersionManager.is2_29()) { - Single approvalSingle = getApprovalSingle(bundle, progressManager); - if (approvalSingle != null) { - list.add(approvalSingle); - } + Single approvalSingle = getApprovalSingle(bundle, progressManager); + if (approvalSingle != null) { + list.add(approvalSingle); } list.add(updateAggregatedDataSync(bundle, progressManager)); diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt index a2a4313b33..1f66e8a3d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt @@ -32,12 +32,13 @@ import io.reactivex.Observable import javax.inject.Inject import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.trackedentity.internal.OldTrackerImporterPostCall import org.hisp.dhis.android.core.tracker.TrackerPostParentCallHelper import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterPostCall @Reusable internal class EventPostParentCall @Inject internal constructor( - private val oldCall: OldEventPostCall, + private val oldTrackerImporterCall: OldTrackerImporterPostCall, private val trackerImporterCall: TrackerImporterPostCall, private val trackerParentCallHelper: TrackerPostParentCallHelper ) { @@ -49,7 +50,7 @@ internal class EventPostParentCall @Inject internal constructor( if (trackerParentCallHelper.useNewTrackerImporter()) { trackerImporterCall.uploadEvents(events) } else { - oldCall.uploadEvents(events) + oldTrackerImporterCall.uploadEvents(events) } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt deleted file mode 100644 index e01f7271e0..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/OldEventPostCall.kt +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.android.core.event.internal - -import dagger.Reusable -import io.reactivex.Observable -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor -import org.hisp.dhis.android.core.arch.call.D2Progress -import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager -import org.hisp.dhis.android.core.common.State -import org.hisp.dhis.android.core.event.Event -import org.hisp.dhis.android.core.imports.internal.EventWebResponse -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager -import org.hisp.dhis.android.core.trackedentity.internal.OldTrackerImporterFileResourcesPostCall -import org.hisp.dhis.android.core.trackedentity.internal.OldTrackerImporterPostCall -import org.hisp.dhis.android.core.trackedentity.internal.TrackerPostStateManager - -@Reusable -internal class OldEventPostCall @Inject internal constructor( - private val payloadGenerator: EventPostPayloadGenerator, - private val versionManager: DHISVersionManager, - private val eventService: EventService, - private val apiCallExecutor: APICallExecutor, - private val eventImportHandler: EventImportHandler, - private val trackerPostStateManager: TrackerPostStateManager, - private val oldTrackerImporterPostCall: OldTrackerImporterPostCall, - private val fileResourcePostCall: OldTrackerImporterFileResourcesPostCall -) { - - fun uploadEvents(events: List): Observable { - return if (versionManager.is2_29) { - uploadEvents29(events) - } else { - oldTrackerImporterPostCall.uploadEvents(events) - } - } - - @Suppress("TooGenericExceptionCaught") - private fun uploadEvents29( - events: List - ): Observable { - return Observable.defer { - val validEvents = payloadGenerator.getEvents(events).run { - fileResourcePostCall.uploadEventsFileResources(this).blockingGet() - } - - trackerPostStateManager.setPayloadStates( - events = validEvents.items, - forcedState = State.UPLOADING - ) - - val progressManager = D2ProgressManager(1) - - val eventPayload = EventPayload() - eventPayload.events = validEvents.items - val strategy = "CREATE_AND_UPDATE" - try { - val webResponse = apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( - eventService.postEvents(eventPayload, strategy), - @Suppress("MagicNumber") - listOf(409), - EventWebResponse::class.java - ) - handleWebResponse(webResponse, validEvents.items) - - fileResourcePostCall.updateFileResourceStates(validEvents.fileResources) - - Observable.just(progressManager.increaseProgress(Event::class.java, true)) - } catch (e: Exception) { - trackerPostStateManager.restorePayloadStates( - events = validEvents.items, - fileResources = validEvents.fileResources - ) - Observable.error(e) - } - } - } - - private fun handleWebResponse( - webResponse: EventWebResponse?, - events: List - ) { - eventImportHandler.handleEventImportSummaries( - webResponse?.response()?.importSummaries(), - events - ) - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java index 7e48885a75..4e9eaac7b7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java @@ -31,7 +31,6 @@ import org.hisp.dhis.android.core.arch.helpers.UidGeneratorImpl; import org.hisp.dhis.android.core.common.BaseIdentifiableObject; import org.hisp.dhis.android.core.note.Note; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; import java.text.ParseException; @@ -42,11 +41,8 @@ @Reusable public class NoteDHISVersionManager { - private final DHISVersionManager versionManager; - @Inject - NoteDHISVersionManager(DHISVersionManager versionManager) { - this.versionManager = versionManager; + NoteDHISVersionManager() { } public Note transform(Note.NoteType noteType, String ownerUid, Note note) { @@ -59,17 +55,10 @@ public Note transform(Note.NoteType noteType, String ownerUid, Note note) { Note.builder().noteType(noteType).event(ownerUid); try { - if (this.versionManager.is2_29()) { - builder - .storedDate(BaseIdentifiableObject.dateToDateStr( - BaseIdentifiableObject.parseSpaceDate(note.storedDate()))) - .uid(new UidGeneratorImpl().generate()); - } else { - builder - .storedDate(BaseIdentifiableObject.dateToDateStr( - BaseIdentifiableObject.parseDate(note.storedDate()))) - .uid(note.uid()); - } + builder + .storedDate(BaseIdentifiableObject.dateToDateStr( + BaseIdentifiableObject.parseDate(note.storedDate()))) + .uid(note.uid()); } catch (ParseException ignored) { builder .storedDate(null) diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java index 58447145cc..35cf780067 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java @@ -32,9 +32,7 @@ import org.hisp.dhis.android.core.arch.call.factories.internal.UidsCall; import org.hisp.dhis.android.core.arch.handlers.internal.Handler; import org.hisp.dhis.android.core.option.OptionGroup; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -51,28 +49,21 @@ final class OptionGroupCall implements UidsCall { private final OptionGroupService service; private final Handler handler; private final APIDownloader apiDownloader; - private final DHISVersionManager versionManager; @Inject OptionGroupCall(OptionGroupService service, Handler handler, - APIDownloader apiDownloader, - DHISVersionManager versionManager) { + APIDownloader apiDownloader) { this.service = service; this.handler = handler; this.apiDownloader = apiDownloader; - this.versionManager = versionManager; } @Override public Single> download(Set optionSetUids) { - if (versionManager.is2_29()) { - return Single.just(new ArrayList<>()); - } else { - return apiDownloader.downloadPartitioned(optionSetUids, MAX_UID_LIST_SIZE, handler, partitionUids -> { - String optionSetUidsFilterStr = "optionSet." + OptionSetFields.uid.in(partitionUids).generateString(); - return service.optionGroups(OptionGroupFields.allFields, optionSetUidsFilterStr, Boolean.FALSE); - }); - } + return apiDownloader.downloadPartitioned(optionSetUids, MAX_UID_LIST_SIZE, handler, partitionUids -> { + String optionSetUidsFilterStr = "optionSet." + OptionSetFields.uid.in(partitionUids).generateString(); + return service.optionGroups(OptionGroupFields.allFields, optionSetUidsFilterStr, Boolean.FALSE); + }); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java index cb2578eaa9..5b000c0635 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java @@ -46,7 +46,6 @@ import org.hisp.dhis.android.core.relationship.RelationshipItemEvent; import org.hisp.dhis.android.core.relationship.RelationshipItemTableInfo; import org.hisp.dhis.android.core.relationship.RelationshipItemTrackedEntityInstance; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceFields; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstancePersistenceCallFactory; @@ -78,8 +77,6 @@ public final class RelationshipDownloadAndPersistCallFactory { private final EventService eventService; private final EventPersistenceCallFactory eventPersistenceCallFactory; - private final DHISVersionManager dhisVersionManager; - private final String ouMode = OrganisationUnitMode.ACCESSIBLE.name(); @Inject @@ -90,8 +87,7 @@ public final class RelationshipDownloadAndPersistCallFactory { @NonNull EnrollmentService enrollmentService, @NonNull EnrollmentPersistenceCallFactory enrollmentPersistenceCallFactory, @NonNull EventService eventService, - @NonNull EventPersistenceCallFactory eventPersistenceCallFactory, - @NonNull DHISVersionManager dhisVersionManager) { + @NonNull EventPersistenceCallFactory eventPersistenceCallFactory) { this.relationshipStore = relationshipStore; this.trackedEntityInstanceService = trackedEntityInstanceService; this.teiPersistenceCallFactory = teiPersistenceCallFactory; @@ -99,21 +95,14 @@ public final class RelationshipDownloadAndPersistCallFactory { this.enrollmentPersistenceCallFactory = enrollmentPersistenceCallFactory; this.eventService = eventService; this.eventPersistenceCallFactory = eventPersistenceCallFactory; - this.dhisVersionManager = dhisVersionManager; } public Completable downloadAndPersist(RelationshipItemRelatives relatives) { - return Completable.defer(() -> { - if (dhisVersionManager.is2_29()) { - return Completable.complete(); - } else { - return downloadRelativeEvents(relatives).andThen( - downloadRelativeEnrolments(relatives).andThen( - downloadRelativeTEIs(relatives) - ) - ); - } - }); + return Completable.defer(() -> downloadRelativeEvents(relatives).andThen( + downloadRelativeEnrolments(relatives).andThen( + downloadRelativeTEIs(relatives) + ) + )); } private Completable downloadRelativeEvents(RelationshipItemRelatives relatives) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt deleted file mode 100644 index 16384523d6..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackedEntityInstancePostCall.kt +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.android.core.trackedentity.internal - -import dagger.Reusable -import io.reactivex.Observable -import io.reactivex.ObservableEmitter -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor -import org.hisp.dhis.android.core.arch.call.D2Progress -import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager -import org.hisp.dhis.android.core.common.State -import org.hisp.dhis.android.core.imports.internal.TEIWebResponse -import org.hisp.dhis.android.core.imports.internal.TEIWebResponseHandler -import org.hisp.dhis.android.core.maintenance.D2Error -import org.hisp.dhis.android.core.relationship.internal.RelationshipPostCall -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance - -@Reusable -internal class OldTrackedEntityInstancePostCall @Inject internal constructor( - private val payloadGenerator29: TrackedEntityInstancePostPayloadGenerator29, - private val stateManager: TrackerPostStateManager, - private val versionManager: DHISVersionManager, - private val trackedEntityInstanceService: TrackedEntityInstanceService, - private val teiWebResponseHandler: TEIWebResponseHandler, - private val apiCallExecutor: APICallExecutor, - private val relationshipPostCall: RelationshipPostCall, - private val fileResourcePostCall: OldTrackerImporterFileResourcesPostCall, - private val oldTrackerImporterPostCall: OldTrackerImporterPostCall -) { - - fun uploadTrackedEntityInstances( - trackedEntityInstances: List - ): Observable { - return if (versionManager.is2_29) { - uploadTrackedEntityInstances29(trackedEntityInstances) - } else { - oldTrackerImporterPostCall.uploadTrackedEntityInstances(trackedEntityInstances) - } - } - - @Suppress("TooGenericExceptionCaught") - private fun uploadTrackedEntityInstances29( - filteredTrackedEntityInstances: List - ): Observable { - return Observable.create { emitter: ObservableEmitter -> - val teiPartitions = payloadGenerator29.getTrackedEntityInstancesPartitions29(filteredTrackedEntityInstances) - .map { partition -> fileResourcePostCall.uploadTrackedEntityFileResources(partition).blockingGet() } - .filter { it.items.isNotEmpty() } - - val progressManager = D2ProgressManager(teiPartitions.size) - for (partition in teiPartitions) { - stateManager.setPayloadStates( - trackedEntityInstances = partition.items, - forcedState = State.UPLOADING - ) - val thisPartition = relationshipPostCall.postDeletedRelationships29(partition.items) - try { - val trackedEntityInstancePayload = TrackedEntityInstancePayload.create(thisPartition) - val webResponse = apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( - trackedEntityInstanceService.postTrackedEntityInstances( - trackedEntityInstancePayload, "CREATE_AND_UPDATE" - ), - @Suppress("MagicNumber") - listOf(409), - TEIWebResponse::class.java - ) - teiWebResponseHandler.handleWebResponse(webResponse, thisPartition) - fileResourcePostCall.updateFileResourceStates(partition.fileResources) - emitter.onNext(progressManager.increaseProgress(TrackedEntityInstance::class.java, false)) - } catch (e: Exception) { - stateManager.restorePayloadStates( - trackedEntityInstances = thisPartition, - fileResources = partition.fileResources - ) - if (e is D2Error && e.isOffline) { - emitter.onError(e) - break - } else { - emitter.onNext( - progressManager.increaseProgress( - TrackedEntityInstance::class.java, - false - ) - ) - } - } - } - emitter.onComplete() - } - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt index 590ac91c75..0cc75a2419 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt @@ -37,7 +37,7 @@ import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterPostC @Reusable internal class TrackedEntityInstancePostParentCall @Inject internal constructor( - private val oldCall: OldTrackedEntityInstancePostCall, + private val oldTrackerImporterCall: OldTrackerImporterPostCall, private val trackerImporterCall: TrackerImporterPostCall, private val trackerParentCallHelper: TrackerPostParentCallHelper ) { @@ -49,7 +49,7 @@ internal class TrackedEntityInstancePostParentCall @Inject internal constructor( if (trackerParentCallHelper.useNewTrackerImporter()) { trackerImporterCall.uploadTrackedEntityInstances(trackedEntityInstances) } else { - oldCall.uploadTrackedEntityInstances(trackedEntityInstances) + oldTrackerImporterCall.uploadTrackedEntityInstances(trackedEntityInstances) } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt index 20ff6e5d19..a48f0d11cf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt @@ -29,9 +29,7 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable import javax.inject.Inject -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore -import org.hisp.dhis.android.core.common.CoreColumns import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore @@ -40,13 +38,11 @@ import org.hisp.dhis.android.core.event.internal.EventStore import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.relationship.Relationship import org.hisp.dhis.android.core.relationship.internal.RelationshipStore -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor @Reusable internal class TrackerPostStateManager @Inject internal constructor( - private val versionManager: DHISVersionManager, private val trackedEntityInstanceStore: TrackedEntityInstanceStore, private val enrollmentStore: EnrollmentStore, private val eventStore: EventStore, @@ -87,13 +83,7 @@ internal class TrackerPostStateManager @Inject internal constructor( } } TrackedEntityInstanceInternalAccessor.accessRelationships(instance)?.forEach { r -> - if (versionManager.is2_29) { - val whereClause = WhereClauseBuilder().appendKeyStringValue(CoreColumns.ID, r.id()).build() - val dbRelationship = relationshipStore.selectOneWhere(whereClause) - dbRelationship?.let { h.addState(relationshipMap, it, forcedState) } - } else { - h.addState(relationshipMap, r, forcedState) - } + h.addState(relationshipMap, r, forcedState) } } From 136b116cc8befe72137a427275bf63076b4deec3 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 12:42:55 +0100 Subject: [PATCH 166/253] [ANDROSDK-1516] Remove note support for 2.29 --- ...PayloadGenerator29MockIntegrationShould.kt | 257 ------------------ .../note/internal/NoteToPostTransformer.java | 65 ----- .../OldTrackerImporterPayloadGenerator.kt | 11 +- ...kedEntityInstancePostPayloadGenerator29.kt | 208 -------------- 4 files changed, 2 insertions(+), 539 deletions(-) delete mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteToPostTransformer.java delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt deleted file mode 100644 index 97fe27691d..0000000000 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould.kt +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.android.core.trackedentity.internal - -import com.google.common.collect.Lists -import com.google.common.truth.Truth.assertThat -import org.hisp.dhis.android.core.arch.helpers.UidsHelper.getUidsList -import org.hisp.dhis.android.core.common.State -import org.hisp.dhis.android.core.maintenance.D2Error -import org.hisp.dhis.android.core.note.Note -import org.hisp.dhis.android.core.note.NoteCreateProjection -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance -import org.hisp.dhis.android.core.utils.runner.D2JunitRunner -import org.junit.Test -import org.junit.runner.RunWith - -@RunWith(D2JunitRunner::class) -class TrackedEntityInstancePostPayloadGenerator29MockIntegrationShould : BasePayloadGeneratorMockIntegration() { - - @Test - fun build_payload_with_different_enrollments() { - storeTrackerData() - - val partitions = partitions - - assertThat(partitions.size).isEqualTo(1) - assertThat(partitions.first().size).isEqualTo(1) - - for (instance in partitions.first()) { - assertThat(getEnrollments(instance).size).isEqualTo(2) - for (enrollment in getEnrollments(instance)) { - assertThat(getEvents(enrollment).size).isEqualTo(1) - for (event in getEvents(enrollment)) { - assertThat(event.trackedEntityDataValues()!!.size).isEqualTo(1) - } - } - } - } - - private val partitions: List> - get() = payloadGenerator29.getTrackedEntityInstancesPartitions29( - teiStore.queryTrackedEntityInstancesToSync() - ) - - @Test - fun handle_import_conflicts_correctly() { - storeTrackerData() - - dhis2MockServer.enqueueMockResponse("imports/web_response_with_import_conflicts_2.json") - - d2.trackedEntityModule().trackedEntityInstances().blockingUpload() - - assertThat(d2.importModule().trackerImportConflicts().blockingCount()).isEqualTo(3) - } - - @Test - fun delete_old_import_conflicts() { - storeTrackerData() - - dhis2MockServer.enqueueMockResponse("imports/web_response_with_import_conflicts_2.json") - - d2.trackedEntityModule().trackedEntityInstances().blockingUpload() - - assertThat(d2.importModule().trackerImportConflicts().blockingCount()).isEqualTo(3) - - teiStore.setAggregatedSyncState("teiId", State.TO_POST) - enrollmentStore.setAggregatedSyncState("enrollment1Id", State.TO_POST) - enrollmentStore.setAggregatedSyncState("enrollment2Id", State.TO_POST) - eventStore.setSyncStateOrDelete("event1Id", State.TO_POST) - eventStore.setSyncStateOrDelete("event2Id", State.TO_POST) - - dhis2MockServer.enqueueMockResponse("imports/web_response_with_import_conflicts_3.json") - - d2.trackedEntityModule().trackedEntityInstances().blockingUpload() - assertThat(d2.importModule().trackerImportConflicts().blockingCount()).isEqualTo(1) - } - - @Test - @Throws(D2Error::class) - fun handle_tei_deletions() { - storeTrackerData() - - d2.trackedEntityModule().trackedEntityInstances().uid("teiId").blockingDelete() - - // There is no TEIs to upload, so there is no request to enqueue. - d2.trackedEntityModule().trackedEntityInstances().blockingUpload() - assertThat(d2.trackedEntityModule().trackedEntityInstances().blockingCount()).isEqualTo(0) - assertThat(d2.enrollmentModule().enrollments().blockingCount()).isEqualTo(0) - assertThat(d2.eventModule().events().byEnrollmentUid().isNotNull.blockingCount()).isEqualTo(0) - assertThat(d2.importModule().trackerImportConflicts().blockingCount()).isEqualTo(0) - } - - @Test - @Throws(Exception::class) - fun recreate_teis_with_filters_and_relationships() { - val tei1 = "tei1" - val tei2 = "tei2" - val tei3 = "tei3" - val tei4 = "tei4" - val tei5 = "tei5" - - storeSimpleTrackedEntityInstance(tei1, State.TO_POST) - storeSimpleTrackedEntityInstance(tei2, State.TO_POST) - storeSimpleTrackedEntityInstance(tei3, State.TO_POST) - storeSimpleTrackedEntityInstance(tei4, State.TO_POST) - storeSimpleTrackedEntityInstance(tei5, State.SYNCED) - - storeRelationship("relationship1", tei1, tei2) - storeRelationship("relationship2", tei2, tei3) - storeRelationship("relationship3", tei1, tei5) - storeRelationship("relationship4", tei5, tei4) - - val partitions = payloadGenerator29.getTrackedEntityInstancesPartitions29( - d2.trackedEntityModule().trackedEntityInstances().byUid().eq(tei1) - .byAggregatedSyncState().`in`(*State.uploadableStatesIncludingError()).blockingGet() - ) - - assertThat(partitions.size).isEqualTo(1) - assertThat(partitions[0].size).isEqualTo(3) - assertThat(getUidsList(partitions[0]).containsAll(Lists.newArrayList(tei1, tei2, tei3))).isTrue() - } - - @Test - fun restore_payload_states_when_error_500() { - storeTrackerData() - - dhis2MockServer.enqueueMockResponseText(500, "Internal Server Error") - d2.trackedEntityModule().trackedEntityInstances().blockingUpload() - - val instance = teiStore.selectFirst() - assertThat(instance!!.syncState()).isEqualTo(State.TO_POST) - - val enrollments = enrollmentStore.selectAll() - for (enrollment in enrollments) { - if (enrollment1Id == enrollment.uid() || enrollment2Id == enrollment.uid()) { - assertThat(enrollment.syncState()).isEqualTo(State.TO_POST) - } - } - - val events = eventStore.selectAll() - for (event in events) { - if (event1Id == event.uid()) { - assertThat(event.syncState()).isEqualTo(State.TO_UPDATE) - } - if (event2Id == event.uid()) { - assertThat(event.syncState()).isEqualTo(State.SYNCED_VIA_SMS) - } - } - } - - @Test - @Throws(D2Error::class) - fun build_payload_with_enrollment_notes() { - storeTrackerData() - d2.noteModule().notes().blockingAdd( - NoteCreateProjection.builder() - .enrollment(enrollment1Id) - .noteType(Note.NoteType.ENROLLMENT_NOTE) - .value("This is an enrollment note") - .build() - ) - val partitions = partitions - assertThat(partitions.size).isEqualTo(1) - assertThat(partitions.first().size).isEqualTo(1) - for (instance in partitions.first()) { - for (enrollment in getEnrollments(instance)) { - if (enrollment.uid() == enrollment1Id) { - assertThat(enrollment.notes()!!.size).isEqualTo(1) - } else { - assertThat(enrollment.notes()!!.size).isEqualTo(0) - } - } - } - } - - @Test - @Throws(D2Error::class) - fun build_payload_with_event_notes() { - storeTrackerData() - - d2.noteModule().notes().blockingAdd( - NoteCreateProjection.builder() - .event(event1Id) - .noteType(Note.NoteType.EVENT_NOTE) - .value("This is an event note") - .build() - ) - val partitions = partitions - - assertThat(partitions.size).isEqualTo(1) - assertThat(partitions.first().size).isEqualTo(1) - for (instance in partitions.first()) { - for (enrollment in getEnrollments(instance)) { - if (enrollment.uid() == enrollment1Id) { - for (event in getEvents(enrollment)) { - if (event.uid() == event1Id) { - assertThat(event.notes()!!.size).isEqualTo(1) - } else { - assertThat(enrollment.notes()!!.size).isEqualTo(0) - } - } - } - } - } - } - - @Test - fun do_not_ignore_elements_not_present_in_the_import_summary() { - storeTrackerData() - - // Only enrollment1 and event1 are TO_UPDATE - enrollmentStore.setAggregatedSyncState(enrollment2Id, State.SYNCED) - enrollmentStore.setSyncState(enrollment2Id, State.SYNCED) - eventStore.setAggregatedSyncState(event2Id, State.SYNCED) - eventStore.setSyncState(event2Id, State.SYNCED) - - dhis2MockServer.enqueueMockResponse("imports/web_response_with_empty_events.json") - d2.trackedEntityModule().trackedEntityInstances().blockingUpload() - - val trackedEntityInstance = teiStore.selectByUid(teiId) - assertThat(trackedEntityInstance!!.syncState()).isEqualTo(State.SYNCED) - assertThat(trackedEntityInstance.aggregatedSyncState()).isEqualTo(State.TO_UPDATE) - - assertThat(enrollmentStore.selectByUid(enrollment1Id)!!.syncState()).isEqualTo(State.SYNCED) - assertThat(enrollmentStore.selectByUid(enrollment1Id)!!.aggregatedSyncState()).isEqualTo(State.TO_UPDATE) - assertThat(enrollmentStore.selectByUid(enrollment2Id)!!.syncState()).isEqualTo(State.SYNCED) - assertThat(enrollmentStore.selectByUid(enrollment2Id)!!.aggregatedSyncState()).isEqualTo(State.SYNCED) - - assertThat(eventStore.selectByUid(event1Id)!!.syncState()).isEqualTo(State.TO_UPDATE) - assertThat(eventStore.selectByUid(event2Id)!!.syncState()).isEqualTo(State.SYNCED) - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteToPostTransformer.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteToPostTransformer.java deleted file mode 100644 index 1688f7d413..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteToPostTransformer.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.note.internal; - -import org.hisp.dhis.android.core.arch.handlers.internal.Transformer; -import org.hisp.dhis.android.core.common.BaseIdentifiableObject; -import org.hisp.dhis.android.core.note.Note; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; - -import java.text.ParseException; - -public class NoteToPostTransformer implements Transformer { - - private final DHISVersionManager versionManager; - - public NoteToPostTransformer(DHISVersionManager versionManager) { - this.versionManager = versionManager; - } - - @Override - public Note transform(Note note) { - - Note.Builder noteBuilder = note.toBuilder(); - - try { - if (this.versionManager.is2_29()) { - noteBuilder.storedDate(BaseIdentifiableObject.dateToSpaceDateStr( - BaseIdentifiableObject.parseDate(note.storedDate()))) - .uid(null); - } - } catch (ParseException ignored) { - noteBuilder - .storedDate(null) - .uid(null); - } - - return noteBuilder.build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt index b93567f20d..4b51d7319d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt @@ -40,7 +40,6 @@ import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.event.EventInternalAccessor import org.hisp.dhis.android.core.event.internal.EventStore import org.hisp.dhis.android.core.note.Note -import org.hisp.dhis.android.core.note.internal.NoteToPostTransformer import org.hisp.dhis.android.core.program.internal.ProgramStoreInterface import org.hisp.dhis.android.core.relationship.Relationship import org.hisp.dhis.android.core.relationship.RelationshipCollectionRepository @@ -65,8 +64,6 @@ internal class OldTrackerImporterPayloadGenerator @Inject internal constructor( private val programStore: ProgramStoreInterface ) { - private val noteTransformer = NoteToPostTransformer(versionManager) - private data class ExtraData( val dataValueMap: Map>, val eventMap: Map>, @@ -334,15 +331,11 @@ internal class OldTrackerImporterPayloadGenerator @Inject internal constructor( } private fun getEventNotes(notes: List, event: Event): List { - return notes - .filter { it.event() == event.uid() } - .map { noteTransformer.transform(it) } + return notes.filter { it.event() == event.uid() } } private fun getEnrollmentNotes(notes: List, enrollment: Enrollment): List { - return notes - .filter { it.enrollment() == enrollment.uid() } - .map { noteTransformer.transform(it) } + return notes.filter { it.enrollment() == enrollment.uid() } } private fun pruneNonWritableData(payload: OldTrackerImporterPayload): OldTrackerImporterPayload { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29.kt deleted file mode 100644 index 487a60994a..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostPayloadGenerator29.kt +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.android.core.trackedentity.internal - -import dagger.Reusable -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore -import org.hisp.dhis.android.core.arch.helpers.UidsHelper.getUidsList -import org.hisp.dhis.android.core.common.DataColumns -import org.hisp.dhis.android.core.common.State -import org.hisp.dhis.android.core.enrollment.Enrollment -import org.hisp.dhis.android.core.enrollment.EnrollmentInternalAccessor -import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore -import org.hisp.dhis.android.core.event.Event -import org.hisp.dhis.android.core.event.internal.EventStore -import org.hisp.dhis.android.core.note.Note -import org.hisp.dhis.android.core.note.internal.NoteToPostTransformer -import org.hisp.dhis.android.core.relationship.RelationshipCollectionRepository -import org.hisp.dhis.android.core.relationship.RelationshipHelper -import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager -import org.hisp.dhis.android.core.relationship.internal.RelationshipItemStore -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue -import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor - -@Reusable -@Suppress("LongParameterList") -internal class TrackedEntityInstancePostPayloadGenerator29 @Inject internal constructor( - private val versionManager: DHISVersionManager, - private val relationshipDHISVersionManager: RelationshipDHISVersionManager, - private val relationshipRepository: RelationshipCollectionRepository, - private val trackedEntityInstanceStore: TrackedEntityInstanceStore, - private val enrollmentStore: EnrollmentStore, - private val eventStore: EventStore, - private val trackedEntityDataValueStore: TrackedEntityDataValueStore, - private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore, - private val relationshipItemStore: RelationshipItemStore, - private val noteStore: IdentifiableObjectStore -) { - - private data class ExtraData( - val dataValueMap: Map>, - val eventMap: Map>, - val enrollmentMap: Map>, - val attributeValueMap: Map>, - val notes: List - ) - - fun getTrackedEntityInstancesPartitions29( - filteredTrackedEntityInstances: List - ): List> { - val extraData = getExtraData() - val trackedEntityInstancesToSync = getPagedTrackedEntityInstances(filteredTrackedEntityInstances) - return trackedEntityInstancesToSync.map { partition -> - partition.map { trackedEntityInstance -> - getTrackedEntityInstance(trackedEntityInstance, extraData) - } - } - } - - private fun getExtraData(): ExtraData { - return ExtraData( - dataValueMap = trackedEntityDataValueStore.queryByUploadableEvents(), - eventMap = eventStore.queryEventsAttachedToEnrollmentToPost(), - enrollmentMap = enrollmentStore.queryEnrollmentsToPost(), - attributeValueMap = trackedEntityAttributeValueStore.queryTrackedEntityAttributeValueToPost(), - notes = noteStore.selectWhere( - WhereClauseBuilder() - .appendInKeyStringValues( - DataColumns.SYNC_STATE, State.uploadableStatesIncludingError().map { it.name } - ) - .build() - ) - ) - } - - private fun getPagedTrackedEntityInstances( - filteredTrackedEntityInstances: List - ): List> { - val partitions = filteredTrackedEntityInstances.chunked(TrackedEntityInstanceService.DEFAULT_PAGE_SIZE) - - val includedUids: MutableSet = mutableSetOf() - val partitionsWithRelationships: MutableList> = ArrayList() - for (partition in partitions) { - val partitionWithoutDuplicates = partition.filterNot { o -> includedUids.contains(o.uid()) } - val partitionWithRelationships = - getTrackedEntityInstancesWithRelationships(partitionWithoutDuplicates.toMutableList(), includedUids) - partitionsWithRelationships.add(partitionWithRelationships) - includedUids.addAll(getUidsList(partitionWithRelationships)) - } - return partitionsWithRelationships - } - - private fun getTrackedEntityInstancesWithRelationships( - filteredTrackedEntityInstances: MutableList, - excludedUids: Set - ): List { - val trackedEntityInstancesInDBToSync = trackedEntityInstanceStore.queryTrackedEntityInstancesToSync() - val filteredUids: List = filteredTrackedEntityInstances.map { it.uid() } - val teiUidsToPost = trackedEntityInstanceStore.queryTrackedEntityInstancesToPost().map { it.uid() } - val relatedTeisToPost: MutableList = ArrayList() - - var internalRelatedTeis = filteredUids - do { - val relatedTeiUids = relationshipItemStore.getRelatedTeiUids(internalRelatedTeis) - val filteredToPost = relatedTeiUids - .filter { teiUidsToPost.contains(it) } - .filter { !filteredUids.contains(it) } - .filter { !relatedTeisToPost.contains(it) } - .filter { !excludedUids.contains(it) } - relatedTeisToPost.addAll(filteredToPost) - internalRelatedTeis = filteredToPost - } while (internalRelatedTeis.isNotEmpty()) - - for (trackedEntityInstanceInDB in trackedEntityInstancesInDBToSync) { - if (relatedTeisToPost.contains(trackedEntityInstanceInDB.uid())) { - filteredTrackedEntityInstances.add(trackedEntityInstanceInDB) - } - } - return filteredTrackedEntityInstances - } - - private fun getTrackedEntityInstance( - trackedEntityInstance: TrackedEntityInstance, - extraData: ExtraData - ): TrackedEntityInstance { - val enrollmentsRecreated = getEnrollments(extraData, trackedEntityInstance.uid()) - val attributeValues = extraData.attributeValueMap[trackedEntityInstance.uid()] - val dbRelationships = - relationshipRepository.getByItem(RelationshipHelper.teiItem(trackedEntityInstance.uid()), true, false) - val ownedRelationships = - relationshipDHISVersionManager.getOwnedRelationships(dbRelationships, trackedEntityInstance.uid()) - val versionAwareRelationships = - relationshipDHISVersionManager.to229Compatible(ownedRelationships, trackedEntityInstance.uid()) - return TrackedEntityInstanceInternalAccessor - .insertEnrollments( - TrackedEntityInstanceInternalAccessor - .insertRelationships(trackedEntityInstance.toBuilder(), versionAwareRelationships), - enrollmentsRecreated - ) - .trackedEntityAttributeValues(attributeValues ?: emptyList()) - .build() - } - - private fun getEnrollments( - extraData: ExtraData, - trackedEntityInstanceUid: String - ): List { - return extraData.enrollmentMap[trackedEntityInstanceUid]?.map { enrollment -> - val transformer = NoteToPostTransformer(versionManager) - val events = extraData.eventMap[enrollment.uid()]?.map { event -> - getEvent(event, extraData, transformer) - } ?: emptyList() - - EnrollmentInternalAccessor.insertEvents(enrollment.toBuilder(), events) - .notes(getEnrollmentNotes(extraData.notes, enrollment, transformer)) - .build() - } ?: emptyList() - } - - private fun getEvent(event: Event, extraData: ExtraData, transformer: NoteToPostTransformer): Event { - val eventBuilder = event.toBuilder() - .trackedEntityDataValues(extraData.dataValueMap[event.uid()]) - .notes(getEventNotes(extraData.notes, event, transformer)) - - return eventBuilder.build() - } - - private fun getEventNotes(notes: List, event: Event, t: NoteToPostTransformer): List { - return notes - .filter { it.event() == event.uid() } - .map { t.transform(it) } - } - - private fun getEnrollmentNotes(notes: List, enrollment: Enrollment, t: NoteToPostTransformer): List { - return notes - .filter { it.enrollment() == enrollment.uid() } - .map { t.transform(it) } - } -} From 33b8b302f2fc1c144b8f3fca73825ab676d17e47 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 13:32:49 +0100 Subject: [PATCH 167/253] [ANDROSDK-1516] Remove compatibility for relationships --- ...SVersionsManagerRealIntegrationShould.java | 16 --- .../api/TrackedEntityInstanceUtils.java | 4 +- .../BasePayloadGeneratorMockIntegration.kt | 2 - .../core/arch/d2/internal/D2DIComponent.java | 3 - ...ionship229CompatibleListColumnAdapter.java | 37 ------ .../enrollment/internal/EnrollmentFields.java | 2 +- .../core/event/internal/EventFields.java | 2 +- .../core/relationship/RelationshipFields.java | 32 +----- .../RelationshipTypeCollectionRepository.kt | 49 +++----- .../internal/Relationship229Compatible.java | 76 ------------ .../RelationshipDHISVersionManager.java | 90 +-------------- .../internal/RelationshipHandlerImpl.kt | 17 +-- .../internal/RelationshipPostCall.kt | 35 ------ .../internal/RelationshipTypeCall.java | 7 +- .../TEIRelationshipOrphanCleanerImpl.java | 12 +- .../trackedentity/TrackedEntityInstance.java | 10 +- ...TrackedEntityInstanceInternalAccessor.java | 6 +- .../TrackedEntityInstanceEntityDIModule.java | 4 +- .../internal/TrackedEntityInstanceFields.java | 4 +- .../internal/TrackedEntityInstanceHandler.kt | 9 +- .../relationship/RelationshipSamples.java | 27 ----- .../relationship/relationship_29.json | 19 --- .../relationship/relationship_type_29.json | 10 -- .../relationship/Relationship29Should.java | 60 ---------- .../relationship/Relationship30Should.java | 6 +- .../RelationshipType29Should.java | 67 ----------- .../RelationshipDHISVersionManagerShould.java | 108 +----------------- .../internal/RelationshipHandlerShould.java | 30 +---- .../internal/DHISVersionManagerShould.java | 1 - .../TrackedEntityInstanceHandlerShould.kt | 10 +- 30 files changed, 58 insertions(+), 697 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationship229CompatibleListColumnAdapter.java delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/relationship/internal/Relationship229Compatible.java delete mode 100644 core/src/sharedTest/resources/relationship/relationship_29.json delete mode 100644 core/src/sharedTest/resources/relationship/relationship_type_29.json delete mode 100644 core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship29Should.java delete mode 100644 core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType29Should.java diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java index f0ad978a84..cca889475f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java @@ -47,20 +47,6 @@ public void setUp() throws IOException { super.setUp(); } - //@Test - public void return_2_29_version_when_connecting_to_2_29_server() throws Exception { - d2 = D2Factory.forNewDatabase(); - d2.wipeModule().wipeEverything(); - - DHISVersionManager versionManager = d2.systemInfoModule().versionManager(); - - d2.userModule().logIn(username, password, RealServerMother.url2_29).blockingGet(); - assertThat(versionManager.getVersion()).isEqualTo(DHISVersion.V2_29); - assertThat(versionManager.is2_29()).isTrue(); - assertThat(versionManager.is2_30()).isFalse(); - assertThat(versionManager.is2_31()).isFalse(); - } - //@Test public void return_2_30_version_when_connecting_to_2_30_server() throws Exception { d2 = D2Factory.forNewDatabase(); @@ -70,7 +56,6 @@ public void return_2_30_version_when_connecting_to_2_30_server() throws Exceptio d2.userModule().logIn(username, password, RealServerMother.url2_30).blockingGet(); assertThat(versionManager.getVersion()).isEqualTo(DHISVersion.V2_30); - assertThat(versionManager.is2_29()).isFalse(); assertThat(versionManager.is2_30()).isTrue(); assertThat(versionManager.is2_31()).isFalse(); } @@ -84,7 +69,6 @@ public void return_2_31_version_when_connecting_to_2_31_server() throws Exceptio d2.userModule().logIn(username, password, RealServerMother.url2_31).blockingGet(); assertThat(versionManager.getVersion()).isEqualTo(DHISVersion.V2_31); - assertThat(versionManager.is2_29()).isFalse(); assertThat(versionManager.is2_30()).isFalse(); assertThat(versionManager.is2_31()).isTrue(); } diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java index 233aa8dd0b..2b1e127aa9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java @@ -42,7 +42,7 @@ import org.hisp.dhis.android.core.imports.internal.EnrollmentImportSummary; import org.hisp.dhis.android.core.imports.internal.EventImportSummary; import org.hisp.dhis.android.core.imports.internal.TEIImportSummary; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; +import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; import org.hisp.dhis.android.core.trackedentity.TrackedEntityDataValue; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; @@ -75,7 +75,7 @@ class TrackedEntityInstanceUtils { private static TrackedEntityInstance createTrackedEntityInstance(String trackedEntityInstanceUid, String orgUnitUid, List attributes, - List relationships, + List relationships, List enrollments) { Date refDate = getValidDate(); diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt index 03394743d1..31367d3b7f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt @@ -248,7 +248,6 @@ open class BasePayloadGeneratorMockIntegration : BaseMockIntegrationTestMetadata } protected companion object { - internal lateinit var payloadGenerator29: TrackedEntityInstancePostPayloadGenerator29 internal lateinit var oldTrackerPayloadGenerator: OldTrackerImporterPayloadGenerator internal lateinit var teiStore: TrackedEntityInstanceStore internal lateinit var teiDataValueStore: TrackedEntityDataValueStore @@ -262,7 +261,6 @@ open class BasePayloadGeneratorMockIntegration : BaseMockIntegrationTestMetadata @Throws(Exception::class) fun setUp() { setUpClass() - payloadGenerator29 = objects.d2DIComponent.trackedEntityInstancePostPayloadGenerator() oldTrackerPayloadGenerator = objects.d2DIComponent.oldTrackerImporterPayloadGenerator() teiStore = TrackedEntityInstanceStoreImpl.create(databaseAdapter) teiDataValueStore = TrackedEntityDataValueStoreImpl.create(databaseAdapter) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java index 6c8e26ef22..77006301b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java @@ -90,7 +90,6 @@ import org.hisp.dhis.android.core.trackedentity.TrackedEntityPackageDIModule; import org.hisp.dhis.android.core.trackedentity.TrackedEntityType; import org.hisp.dhis.android.core.trackedentity.internal.OldTrackerImporterPayloadGenerator; -import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstancePostPayloadGenerator29; import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterPackageDIModule; import org.hisp.dhis.android.core.tracker.importer.internal.interpreters.InterpreterSelector; import org.hisp.dhis.android.core.user.internal.UserPackageDIModule; @@ -184,8 +183,6 @@ public interface D2DIComponent { @VisibleForTesting Handler trackedEntityTypeHandler(); @VisibleForTesting - TrackedEntityInstancePostPayloadGenerator29 trackedEntityInstancePostPayloadGenerator(); - @VisibleForTesting OldTrackerImporterPayloadGenerator oldTrackerImporterPayloadGenerator(); @VisibleForTesting EventPostPayloadGenerator eventPostPayloadGenerator(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationship229CompatibleListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationship229CompatibleListColumnAdapter.java deleted file mode 100644 index 0ca305ee62..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationship229CompatibleListColumnAdapter.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.arch.db.adapters.ignore.internal; - -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; - -import java.util.List; - -public final class IgnoreRelationship229CompatibleListColumnAdapter - extends IgnoreColumnAdapter> { -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java index 5c4fe2fa62..79812ef1ff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java @@ -65,7 +65,7 @@ public final class EnrollmentFields { .fields( fh.nestedField(EVENTS).with(EventFields.allFields), fh.nestedField(NOTES).with(NoteFields.all), - fh.nestedField(RELATIONSHIPS).with(RelationshipFields.allNewModelFields) + fh.nestedField(RELATIONSHIPS).with(RelationshipFields.allFields) ).build(); public static final Fields asRelationshipFields = Fields.builder() diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java index 820d46aa52..843778720e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java @@ -64,7 +64,7 @@ public final class EventFields { .fields(getCommonFields()) .fields( fh.nestedField(NOTES).with(NoteFields.all), - fh.nestedField(RELATIONSHIPS).with(RelationshipFields.allNewModelFields), + fh.nestedField(RELATIONSHIPS).with(RelationshipFields.allFields), fh.nestedField(TRACKED_ENTITY_DATA_VALUES) .with(TrackedEntityDataValueFields.allFields) ).build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java index bd82a473d8..1aee6397b6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java @@ -31,16 +31,9 @@ import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; import org.hisp.dhis.android.core.arch.fields.internal.FieldsHelper; import org.hisp.dhis.android.core.common.BaseIdentifiableObject; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; import org.hisp.dhis.android.core.relationship.internal.RelationshipItemFields; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; public final class RelationshipFields { - // 2.29 only // - private static final String TRACKED_ENTITY_INSTANCE_A = "trackedEntityInstanceA"; - private static final String TRACKED_ENTITY_INSTANCE_B = "trackedEntityInstanceB"; - private static final String RELATIVE = "relative"; - static final String RELATIONSHIP = "relationship"; static final String RELATIONSHIP_NAME = "relationshipName"; private static final String RELATIONSHIP_TYPE = "relationshipType"; @@ -50,34 +43,17 @@ public final class RelationshipFields { // Used only for children appending, can't be used in query public static final String ITEMS = "items"; - private static FieldsHelper fh = new FieldsHelper<>(); + private static final FieldsHelper fh = new FieldsHelper<>(); - public static final Fields allFields - = Fields.builder().fields( - fh.field(TRACKED_ENTITY_INSTANCE_A), - fh.field(TRACKED_ENTITY_INSTANCE_B), + public static final Fields allFields + = Fields.builder().fields( fh.field(RELATIONSHIP), fh.field(RELATIONSHIP_NAME), fh.field(RELATIONSHIP_TYPE), fh.field(BaseIdentifiableObject.CREATED), fh.field(BaseIdentifiableObject.LAST_UPDATED), fh.nestedField(FROM).with(RelationshipItemFields.allFields), - fh.nestedField(TO).with(RelationshipItemFields.allFields), - fh.nestedField(RELATIVE) - ).build(); - - private static FieldsHelper rfh = new FieldsHelper<>(); - - public static final Fields allNewModelFields - = Fields.builder().fields( - rfh.field(RELATIONSHIP), - rfh.field(RELATIONSHIP_NAME), - rfh.field(RELATIONSHIP_TYPE), - rfh.field(BaseIdentifiableObject.CREATED), - rfh.field(BaseIdentifiableObject.LAST_UPDATED), - rfh.nestedField(FROM).with(RelationshipItemFields.allFields), - rfh.nestedField(TO).with(RelationshipItemFields.allFields), - rfh.nestedField(RELATIVE) + fh.nestedField(TO).with(RelationshipItemFields.allFields) ).build(); private RelationshipFields() { diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt index 4cac78f453..868fddbfaa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt @@ -44,7 +44,6 @@ import org.hisp.dhis.android.core.relationship.internal.RelationshipTypeCollecti import org.hisp.dhis.android.core.relationship.internal.RelationshipTypeCollectionRepositoryHelper.availableForEventRawQuery import org.hisp.dhis.android.core.relationship.internal.RelationshipTypeCollectionRepositoryHelper.availableForTrackedEntityInstanceRawQuery import org.hisp.dhis.android.core.relationship.internal.RelationshipTypeFields -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore @Reusable @@ -53,7 +52,6 @@ class RelationshipTypeCollectionRepository @Inject internal constructor( private val teiStore: TrackedEntityInstanceStore, private val enrollmentStore: EnrollmentStore, private val eventStore: EventStore, - private val dhisVersionManager: DHISVersionManager, childrenAppenders: MutableMap>, scope: RepositoryScope ) : ReadOnlyIdentifiableCollectionRepositoryImpl( @@ -63,7 +61,7 @@ class RelationshipTypeCollectionRepository @Inject internal constructor( FilterConnectorFactory(scope) { s: RepositoryScope -> RelationshipTypeCollectionRepository( store, teiStore, enrollmentStore, eventStore, - dhisVersionManager, childrenAppenders, s + childrenAppenders, s ) } ) { @@ -97,16 +95,11 @@ class RelationshipTypeCollectionRepository @Inject internal constructor( * - or the TEI might be assigned to the TO component and the RelationshipType is bidirectional */ fun byAvailableForTrackedEntityInstance(trackedEntityInstanceUid: String): RelationshipTypeCollectionRepository { - return if (dhisVersionManager.is2_29) { - // All relationships are allowed for TEIs in 2.29 - this - } else { - val trackedEntityInstance = teiStore.selectByUid(trackedEntityInstanceUid) - cf.subQuery(IdentifiableColumns.UID).rawSubQuery( - FilterItemOperator.IN, - availableForTrackedEntityInstanceRawQuery(trackedEntityInstance) - ) - } + val trackedEntityInstance = teiStore.selectByUid(trackedEntityInstanceUid) + return cf.subQuery(IdentifiableColumns.UID).rawSubQuery( + FilterItemOperator.IN, + availableForTrackedEntityInstanceRawQuery(trackedEntityInstance) + ) } /** @@ -115,16 +108,11 @@ class RelationshipTypeCollectionRepository @Inject internal constructor( * - or the enrollment might be assigned to the TO component and the RelationshipType is bidirectional */ fun byAvailableForEnrollment(enrollmentUid: String): RelationshipTypeCollectionRepository { - return if (dhisVersionManager.is2_29) { - // Enrollment relationships are not supported in 2.29 - cf.string(IdentifiableColumns.UID).`in`(emptyList()) - } else { - val enrollment = enrollmentStore.selectByUid(enrollmentUid) - cf.subQuery(IdentifiableColumns.UID).rawSubQuery( - FilterItemOperator.IN, - availableForEnrollmentRawQuery(enrollment) - ) - } + val enrollment = enrollmentStore.selectByUid(enrollmentUid) + return cf.subQuery(IdentifiableColumns.UID).rawSubQuery( + FilterItemOperator.IN, + availableForEnrollmentRawQuery(enrollment) + ) } /** @@ -133,16 +121,11 @@ class RelationshipTypeCollectionRepository @Inject internal constructor( * - or the event might be assigned to the TO component and the RelationshipType is bidirectional */ fun byAvailableForEvent(eventUid: String): RelationshipTypeCollectionRepository { - return if (dhisVersionManager.is2_29) { - // Event relationships are not supported in 2.29 - cf.string(IdentifiableColumns.UID).`in`(emptyList()) - } else { - val event = eventStore.selectByUid(eventUid) - cf.subQuery(IdentifiableColumns.UID).rawSubQuery( - FilterItemOperator.IN, - availableForEventRawQuery(event) - ) - } + val event = eventStore.selectByUid(eventUid) + return cf.subQuery(IdentifiableColumns.UID).rawSubQuery( + FilterItemOperator.IN, + availableForEventRawQuery(event) + ) } fun withConstraints(): RelationshipTypeCollectionRepository { diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/Relationship229Compatible.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/Relationship229Compatible.java deleted file mode 100644 index 748a24047a..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/Relationship229Compatible.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.relationship.internal; - -import androidx.annotation.Nullable; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; -import com.gabrielittner.auto.value.cursor.ColumnAdapter; -import com.google.auto.value.AutoValue; - -import org.hisp.dhis.android.core.arch.db.adapters.identifiable.internal.TrackedEntityInstanceWithUidColumnAdapter; -import org.hisp.dhis.android.core.relationship.BaseRelationship; -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; - -@AutoValue -@JsonDeserialize(builder = $AutoValue_Relationship229Compatible.Builder.class) -public abstract class Relationship229Compatible extends BaseRelationship { - - @Nullable - @JsonProperty() - public abstract String trackedEntityInstanceA(); - - @Nullable - @JsonProperty() - public abstract String trackedEntityInstanceB(); - - @Nullable - @JsonProperty() - @ColumnAdapter(TrackedEntityInstanceWithUidColumnAdapter.class) - public abstract TrackedEntityInstance relative(); - - - public static Builder builder() { - return new $AutoValue_Relationship229Compatible.Builder(); - } - - @AutoValue.Builder - @JsonPOJOBuilder(withPrefix = "") - public abstract static class Builder extends BaseRelationship.Builder { - public abstract Builder trackedEntityInstanceA(String trackedEntityInstanceA); - - public abstract Builder trackedEntityInstanceB(String trackedEntityInstanceB); - - public abstract Builder relative(TrackedEntityInstance relative); - - public abstract Relationship229Compatible build(); - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java index c206d151d6..3930e68327 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java @@ -29,14 +29,12 @@ package org.hisp.dhis.android.core.relationship.internal; import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore; -import org.hisp.dhis.android.core.arch.helpers.UidGeneratorImpl; import org.hisp.dhis.android.core.relationship.BaseRelationship; import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.relationship.RelationshipHelper; import org.hisp.dhis.android.core.relationship.RelationshipItem; import org.hisp.dhis.android.core.relationship.RelationshipItemTableInfo; import org.hisp.dhis.android.core.relationship.RelationshipType; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor; @@ -52,13 +50,10 @@ @Reusable public class RelationshipDHISVersionManager { - private final DHISVersionManager versionManager; private final IdentifiableObjectStore relationshipTypeStore; @Inject - public RelationshipDHISVersionManager(DHISVersionManager versionManager, - IdentifiableObjectStore relationshipTypeStore) { - this.versionManager = versionManager; + public RelationshipDHISVersionManager(IdentifiableObjectStore relationshipTypeStore) { this.relationshipTypeStore = relationshipTypeStore; } @@ -66,7 +61,7 @@ public List getOwnedRelationships(Collection relatio List ownedRelationships = new ArrayList<>(); for (Relationship relationship : relationships) { RelationshipItem fromItem = relationship.from(); - if (versionManager.is2_29() || isBidirectional(relationship) || + if (isBidirectional(relationship) || fromItem != null && fromItem.elementUid() != null && fromItem.elementUid().equals(elementUid)) { ownedRelationships.add(relationship); } @@ -83,79 +78,8 @@ private boolean isBidirectional(Relationship relationship) { } } - public List to229Compatible(List storedRelationships, String teiUid) { - List transformedRelationships = new ArrayList<>(); - for (Relationship relationship : storedRelationships) { - transformedRelationships.add(to229Compatible(relationship, teiUid)); - } - return transformedRelationships; - } - - Relationship229Compatible to229Compatible(Relationship relationship, String teiUid) { - Relationship229Compatible.Builder builder = Relationship229Compatible.builder() - .id(relationship.id()) - .name(relationship.name()) - .created(relationship.created()) - .lastUpdated(relationship.lastUpdated()) - .syncState(relationship.syncState()) - .deleted(relationship.deleted()); - - if (versionManager.is2_29()) { - return builder - .uid(relationship.relationshipType()) - .trackedEntityInstanceA(relationship.from().trackedEntityInstance().trackedEntityInstance()) - .trackedEntityInstanceB(relationship.to().trackedEntityInstance().trackedEntityInstance()) - .relative(getRelativeTEI230(relationship, teiUid)) - .build(); - } else { - return builder - .uid(relationship.uid()) - .relationshipType(relationship.relationshipType()) - .from(relationship.from()) - .to(relationship.to()) - .build(); - } - } - - public Relationship from229Compatible(Relationship229Compatible relationship229Compatible) { - Relationship.Builder builder = Relationship.builder() - .name(relationship229Compatible.name()) - .created(relationship229Compatible.created()) - .lastUpdated(relationship229Compatible.lastUpdated()) - .syncState(relationship229Compatible.syncState()) - .deleted(relationship229Compatible.deleted()); - - if (versionManager.is2_29()) { - return builder - .uid(new UidGeneratorImpl().generate()) - .relationshipType(relationship229Compatible.uid()) - .from(RelationshipHelper.teiItem(relationship229Compatible.trackedEntityInstanceA())) - .to(RelationshipHelper.teiItem(relationship229Compatible.trackedEntityInstanceB())) - .build(); - } else { - return builder - .uid(relationship229Compatible.uid()) - .relationshipType(relationship229Compatible.relationshipType()) - .from(relationship229Compatible.from()) - .to(relationship229Compatible.to()) - .build(); - } - } - - public Collection from229Compatible(Collection list) { - List result = new ArrayList<>(list.size()); - for (Relationship229Compatible r : list) { - result.add(from229Compatible(r)); - } - return result; - } - - public TrackedEntityInstance getRelativeTei(Relationship229Compatible relationship229Compatible, String teiUid) { - if (versionManager.is2_29()) { - return relationship229Compatible.relative(); - } else { - return getRelativeTEI230(relationship229Compatible, teiUid); - } + public TrackedEntityInstance getRelativeTei(Relationship relationship, String teiUid) { + return getRelativeTEI230(relationship, teiUid); } boolean isRelationshipSupported(BaseRelationship relationship) { @@ -163,11 +87,7 @@ boolean isRelationshipSupported(BaseRelationship relationship) { } private boolean isItemSupported(RelationshipItem item) { - if (versionManager.is2_29()) { - return item.hasTrackedEntityInstance(); - } else { - return true; - } + return true; } public TrackedEntityInstance getRelativeTEI230(BaseRelationship baseRelationship, String teiUid) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt index fc4b7b9aa4..c4961b8e80 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt @@ -42,24 +42,9 @@ internal class RelationshipHandlerImpl @Inject constructor( relationshipStore: RelationshipStore, private val relationshipItemStore: RelationshipItemStore, private val relationshipItemHandler: Handler, - private val storeSelector: RelationshipItemElementStoreSelector, - private val versionManager: RelationshipDHISVersionManager + private val storeSelector: RelationshipItemElementStoreSelector ) : IdentifiableHandlerImpl(relationshipStore), RelationshipHandler { - override fun beforeObjectHandled(o: Relationship): Relationship { - if (!versionManager.isRelationshipSupported(o)) { - @Suppress("TooGenericExceptionThrown") - throw RuntimeException("Only TEI to TEI relationships are supported in 2.29") - } - val existingRelationshipUid = getExistingRelationshipUid(o) - - // Compatibility with 2.29. Relationships do not have uids and must be matched based on their items. - if (existingRelationshipUid != null && existingRelationshipUid != o.uid()) { - store.delete(existingRelationshipUid) - } - return o - } - override fun afterObjectHandled(o: Relationship, action: HandleAction) { relationshipItemHandler.handle( o.from()!!.toBuilder() diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt index 90a221a9d5..9bf8ff8fe6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt @@ -28,7 +28,6 @@ package org.hisp.dhis.android.core.relationship.internal import dagger.Reusable -import io.reactivex.Completable import io.reactivex.Observable import io.reactivex.ObservableEmitter import java.net.HttpURLConnection.* @@ -36,17 +35,12 @@ import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager -import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder -import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper -import org.hisp.dhis.android.core.common.CoreColumns import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.common.internal.DataStatePropagator import org.hisp.dhis.android.core.imports.ImportStatus import org.hisp.dhis.android.core.imports.internal.RelationshipDeleteWebResponse import org.hisp.dhis.android.core.imports.internal.RelationshipWebResponse import org.hisp.dhis.android.core.relationship.Relationship -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance -import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAccessor import org.hisp.dhis.android.core.trackedentity.internal.TrackerPostStateManager @Reusable @@ -117,33 +111,4 @@ internal class RelationshipPostCall @Inject internal constructor( } } } - - fun postDeletedRelationships29(trackedEntityInstances: List): List { - return trackedEntityInstances.map { instance -> - val relationships = TrackedEntityInstanceInternalAccessor.accessRelationships(instance) - - if (relationships == null || relationships.isEmpty()) { - instance - } else { - val partitionedRelationships = relationships.partition { CollectionsHelper.isDeleted(it) } - - partitionedRelationships.first.forEach { - deleteRelationship29(it).blockingAwait() - } - - TrackedEntityInstanceInternalAccessor - .insertRelationships(instance.toBuilder(), partitionedRelationships.second) - .build() - } - } - } - - private fun deleteRelationship29(relationship: Relationship229Compatible): Completable { - return Completable.fromCallable { - val whereClause = WhereClauseBuilder() - .appendKeyStringValue(CoreColumns.ID, relationship.id()).build() - relationshipStore.deleteWhereIfExists(whereClause) - return@fromCallable RelationshipDeleteWebResponse.empty() - } - } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java index 8528c7e6ee..5c5ca3aafb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java @@ -34,7 +34,6 @@ import org.hisp.dhis.android.core.common.internal.DataAccessFields; import org.hisp.dhis.android.core.relationship.RelationshipType; import org.hisp.dhis.android.core.resource.internal.Resource; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; import java.util.List; @@ -50,25 +49,21 @@ final class RelationshipTypeCall implements ListCall { private final RelationshipTypeService service; private final Handler handler; - private final DHISVersionManager versionManager; private final APIDownloader apiDownloader; @Inject RelationshipTypeCall(RelationshipTypeService service, Handler handler, - DHISVersionManager versionManager, APIDownloader apiDownloader) { this.service = service; this.handler = handler; - this.versionManager = versionManager; this.apiDownloader = apiDownloader; } @Override public Single> download() { return apiDownloader.downloadWithLastUpdated(handler, resourceType, lastUpdated -> { - String accessDataFilter = versionManager.is2_29() ? null : - "access.data." + DataAccessFields.read.eq(true).generateString(); + String accessDataFilter = "access.data." + DataAccessFields.read.eq(true).generateString(); return service.getRelationshipTypes(RelationshipTypeFields.allFields, RelationshipTypeFields.lastUpdated.gt(lastUpdated), accessDataFilter, Boolean.FALSE); diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java index 587cbdec6a..051ceb89c1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java @@ -42,16 +42,12 @@ @Reusable public class TEIRelationshipOrphanCleanerImpl - extends RelationshipOrphanCleanerImpl { - - private final RelationshipDHISVersionManager relationshipDHISVersionManager; + extends RelationshipOrphanCleanerImpl { @Inject TEIRelationshipOrphanCleanerImpl(RelationshipStore relationshipStore, - RelationshipCollectionRepository relationshipRepository, - RelationshipDHISVersionManager relationshipDHISVersionManager) { + RelationshipCollectionRepository relationshipRepository) { super(relationshipStore, relationshipRepository); - this.relationshipDHISVersionManager = relationshipDHISVersionManager; } @Override @@ -60,7 +56,7 @@ public RelationshipItem getItem(String uid) { } @Override - public Collection relationships(Collection relationships) { - return relationshipDHISVersionManager.from229Compatible(relationships); + public Collection relationships(Collection relationships) { + return relationships; } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java index a521a7ff31..b693a00864 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java @@ -43,7 +43,7 @@ import org.hisp.dhis.android.core.arch.db.adapters.custom.internal.DbGeometryColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.enums.internal.StateColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreEnrollmentListColumnAdapter; -import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreRelationship229CompatibleListColumnAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreRelationshipListColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreStateColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreStringColumnAdapter; import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreTrackedEntityAttributeValueListColumnAdapter; @@ -54,7 +54,7 @@ import org.hisp.dhis.android.core.common.ObjectWithUidInterface; import org.hisp.dhis.android.core.common.State; import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; +import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceFields; import java.util.Date; @@ -117,8 +117,8 @@ public abstract class TrackedEntityInstance extends BaseDeletableDataObject impl @Nullable @JsonProperty() - @ColumnAdapter(IgnoreRelationship229CompatibleListColumnAdapter.class) - abstract List relationships(); + @ColumnAdapter(IgnoreRelationshipListColumnAdapter.class) + abstract List relationships(); @Nullable @JsonProperty() @@ -193,7 +193,7 @@ public Builder state(State state) { return aggregatedSyncState(state).syncState(state); } - abstract Builder relationships(List relationships); + abstract Builder relationships(List relationships); abstract Builder enrollments(List enrollments); diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java index 61ba8fd61a..ee7bf5258d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java @@ -29,7 +29,7 @@ package org.hisp.dhis.android.core.trackedentity; import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; +import org.hisp.dhis.android.core.relationship.Relationship; import java.util.List; @@ -48,13 +48,13 @@ public static TrackedEntityInstance.Builder insertEnrollments( return builder.enrollments(enrollments); } - public static List accessRelationships(TrackedEntityInstance trackedEntityInstance) { + public static List accessRelationships(TrackedEntityInstance trackedEntityInstance) { return trackedEntityInstance.relationships(); } public static TrackedEntityInstance.Builder insertRelationships( TrackedEntityInstance.Builder builder, - List relationships) { + List relationships) { return builder.relationships(relationships); } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java index af3343b038..d73a3c029d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java @@ -36,7 +36,7 @@ import org.hisp.dhis.android.core.common.DataColumns; import org.hisp.dhis.android.core.enrollment.Enrollment; import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; +import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.relationship.internal.TEIRelationshipOrphanCleanerImpl; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceCreateProjection; @@ -85,7 +85,7 @@ OrphanCleaner enrollmentOrphanCleaner(Databas @Provides @Reusable - OrphanCleaner relationshipOrphanCleaner( + OrphanCleaner relationshipOrphanCleaner( TEIRelationshipOrphanCleanerImpl impl) { return impl; } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java index 4170962af3..7df0ba6d86 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java @@ -34,7 +34,7 @@ import org.hisp.dhis.android.core.common.Geometry; import org.hisp.dhis.android.core.enrollment.Enrollment; import org.hisp.dhis.android.core.enrollment.internal.EnrollmentFields; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; +import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.relationship.RelationshipFields; import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; @@ -61,7 +61,7 @@ public final class TrackedEntityInstanceFields { public static final Fields allFields = Fields.builder() .fields(getCommonFields()) .fields( - fh.nestedField(RELATIONSHIPS) + fh.nestedField(RELATIONSHIPS) .with(RelationshipFields.allFields), fh.nestedField(ENROLLMENTS) .with(EnrollmentFields.allFields) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt index f2b080f5e3..b3487770c9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -35,7 +35,7 @@ import org.hisp.dhis.android.core.arch.handlers.internal.* import org.hisp.dhis.android.core.arch.helpers.GeometryHelper import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.Enrollment -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible +import org.hisp.dhis.android.core.relationship.Relationship import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives @@ -45,14 +45,14 @@ import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceInternalAcc @Reusable internal class TrackedEntityInstanceHandler @Inject constructor( - private val relationshipVersionManager: RelationshipDHISVersionManager, + relationshipVersionManager: RelationshipDHISVersionManager, relationshipHandler: RelationshipHandler, trackedEntityInstanceStore: TrackedEntityInstanceStore, private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore, private val trackedEntityAttributeValueHandler: HandlerWithTransformer, private val enrollmentHandler: IdentifiableDataHandler, private val enrollmentOrphanCleaner: OrphanCleaner, - private val relationshipOrphanCleaner: OrphanCleaner + private val relationshipOrphanCleaner: OrphanCleaner ) : IdentifiableDataHandlerImpl( trackedEntityInstanceStore, relationshipVersionManager, @@ -104,8 +104,7 @@ internal class TrackedEntityInstanceHandler @Inject constructor( } val relationships = TrackedEntityInstanceInternalAccessor.accessRelationships(o) if (relationships != null && relationships.isNotEmpty()) { - val relationshipsList = relationshipVersionManager.from229Compatible(relationships) - handleRelationships(relationshipsList, o, relatives) + handleRelationships(relationships, o, relatives) } if (params.hasAllEnrollments) { enrollmentOrphanCleaner.deleteOrphan( diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java index ef20c5368a..cbc59e9f3f 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java @@ -30,7 +30,6 @@ import org.hisp.dhis.android.core.common.State; import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; import org.hisp.dhis.android.core.relationship.RelationshipHelper; import org.hisp.dhis.android.core.relationship.RelationshipItem; @@ -38,7 +37,6 @@ import static org.hisp.dhis.android.core.data.utils.FillPropertiesTestUtils.LAST_UPDATED; import static org.hisp.dhis.android.core.data.utils.FillPropertiesTestUtils.NAME; - public class RelationshipSamples { protected static String UID = "uid"; @@ -59,14 +57,6 @@ public class RelationshipSamples { protected static Boolean DELETED = false; - private Relationship229Compatible.Builder commonCompatibleBuilder = Relationship229Compatible - .builder() - .created(CREATED) - .lastUpdated(LAST_UPDATED) - .name(NAME) - .syncState(STATE) - .deleted(DELETED); - private static Relationship.Builder commonBuilder = Relationship .builder() .created(CREATED) @@ -75,23 +65,6 @@ public class RelationshipSamples { .syncState(STATE) .deleted(DELETED); - public Relationship229Compatible get229Compatible() { - return commonCompatibleBuilder - .uid(TYPE) - .trackedEntityInstanceA(FROM_UID) - .trackedEntityInstanceB(TO_UID) - .build(); - } - - public Relationship229Compatible get230Compatible() { - return commonCompatibleBuilder - .uid(UID) - .relationshipType(TYPE) - .from(fromItem) - .to(toItem) - .build(); - } - protected Relationship get230() { return commonBuilder .uid(UID) diff --git a/core/src/sharedTest/resources/relationship/relationship_29.json b/core/src/sharedTest/resources/relationship/relationship_29.json deleted file mode 100644 index e01cf1cdab..0000000000 --- a/core/src/sharedTest/resources/relationship/relationship_29.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "relationship": "V2kkHafqs8G", - "relationshipName": "Mother-Child", - "created": "2014-06-06T20:44:21.375", - "lastUpdated": "2015-10-15T11:32:27.242", - "trackedEntityInstanceB": "G1afLIEKt8A", - "trackedEntityInstanceA": "Ea0rRdBPAIp", - "relative": { - "created": "2013-09-08T21:40:28.000", - "orgUnit": "DiszpKrYNg8", - "trackedEntityInstance": "G1afLIEKt8A", - "lastUpdated": "2014-07-23T12:18:42.751", - "trackedEntityType": "nEenWmSyUEp", - "deleted": false, - "enrollments": [], - "relationships": [], - "attributes": [] - } -} \ No newline at end of file diff --git a/core/src/sharedTest/resources/relationship/relationship_type_29.json b/core/src/sharedTest/resources/relationship/relationship_type_29.json deleted file mode 100644 index 3a2c56b5a4..0000000000 --- a/core/src/sharedTest/resources/relationship/relationship_type_29.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "created": "2013-09-19T15:17:41.000", - "lastUpdated": "2014-04-14T13:53:20.166", - "name": "Mother-Child", - "id": "V2kkHafqs8G", - "displayName": "Mother-Child", - "bIsToA": "Child", - "externalAccess": false, - "aIsToB": "Mother" -} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship29Should.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship29Should.java deleted file mode 100644 index c42f7ac24b..0000000000 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship29Should.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.relationship; - -import org.hisp.dhis.android.core.common.BaseObjectShould; -import org.hisp.dhis.android.core.common.ObjectShould; -import org.hisp.dhis.android.core.data.relationship.RelationshipSamples; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; -import org.junit.Test; - -import java.io.IOException; -import java.text.ParseException; - -import static com.google.common.truth.Truth.assertThat; - -public class Relationship29Should extends BaseObjectShould implements ObjectShould { - - private RelationshipSamples samples = new RelationshipSamples(); - - public Relationship29Should() { - super("relationship/relationship_29.json"); - } - - @Override - @Test - public void map_from_json_string() throws IOException, ParseException { - Relationship229Compatible relationship = deserialize(Relationship229Compatible.class); - - assertThat(relationship.trackedEntityInstanceA()).isEqualTo("Ea0rRdBPAIp"); - assertThat(relationship.trackedEntityInstanceB()).isEqualTo("G1afLIEKt8A"); - assertThat(relationship.uid()).isEqualTo("V2kkHafqs8G"); - assertThat(relationship.name()).isEqualTo("Mother-Child"); - } -} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java index 8b9f48a949..8bf4962e9d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java @@ -30,8 +30,6 @@ import org.hisp.dhis.android.core.common.BaseObjectShould; import org.hisp.dhis.android.core.common.ObjectShould; -import org.hisp.dhis.android.core.data.relationship.RelationshipSamples; -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible; import org.junit.Test; import java.io.IOException; @@ -41,8 +39,6 @@ public class Relationship30Should extends BaseObjectShould implements ObjectShould { - private RelationshipSamples samples = new RelationshipSamples(); - public Relationship30Should() { super("relationship/relationship_30.json"); } @@ -50,7 +46,7 @@ public Relationship30Should() { @Override @Test public void map_from_json_string() throws IOException, ParseException { - Relationship229Compatible relationship = deserialize(Relationship229Compatible.class); + Relationship relationship = deserialize(Relationship.class); assertThat(relationship.uid()).isEqualTo("nEenWmSyUEp"); assertThat(relationship.relationshipType()).isEqualTo("V2kkHafqs8G"); diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType29Should.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType29Should.java deleted file mode 100644 index 9701722ffe..0000000000 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType29Should.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.relationship; - -import org.hisp.dhis.android.core.common.BaseIdentifiableObject; -import org.hisp.dhis.android.core.common.BaseObjectShould; -import org.hisp.dhis.android.core.common.ObjectShould; -import org.junit.Test; - -import java.io.IOException; -import java.text.ParseException; - -import static com.google.common.truth.Truth.assertThat; - -public class RelationshipType29Should extends BaseObjectShould implements ObjectShould { - - public RelationshipType29Should() { - super("relationship/relationship_type_29.json"); - } - - @Override - @Test - public void map_from_json_string() throws IOException, ParseException { - RelationshipType relationshipType = objectMapper.readValue(jsonStream, RelationshipType.class); - - assertThat(relationshipType.uid()).isEqualTo("V2kkHafqs8G"); - assertThat(relationshipType.name()).isEqualTo("Mother-Child"); - assertThat(relationshipType.displayName()).isEqualTo("Mother-Child"); - assertThat(relationshipType.created()).isEqualTo( - BaseIdentifiableObject.DATE_FORMAT.parse("2013-09-19T15:17:41.000")); - assertThat(relationshipType.lastUpdated()).isEqualTo( - BaseIdentifiableObject.DATE_FORMAT.parse("2014-04-14T13:53:20.166")); - assertThat(relationshipType.aIsToB()).isEqualTo("Mother"); - assertThat(relationshipType.bIsToA()).isEqualTo("Child"); - assertThat(relationshipType.toFromName()).isEqualTo("Mother"); - assertThat(relationshipType.fromToName()).isEqualTo("Child"); - assertThat(relationshipType.bidirectional()).isFalse(); - assertThat(relationshipType.access().data().read()).isTrue(); - assertThat(relationshipType.access().data().write()).isTrue(); - } -} diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java index 73a3918672..4ac5f195c3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java @@ -30,19 +30,15 @@ import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore; import org.hisp.dhis.android.core.data.relationship.RelationshipSamples; -import org.hisp.dhis.android.core.relationship.BaseRelationship; import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.relationship.RelationshipType; -import org.hisp.dhis.android.core.systeminfo.DHISVersionManager; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import static com.google.common.truth.Truth.assertThat; -import static org.hisp.dhis.android.core.data.utils.FillPropertiesTestUtils.CREATED; -import static org.hisp.dhis.android.core.data.utils.FillPropertiesTestUtils.LAST_UPDATED; -import static org.hisp.dhis.android.core.data.utils.FillPropertiesTestUtils.NAME; import static org.mockito.Mockito.when; import java.util.Collection; @@ -51,9 +47,6 @@ public class RelationshipDHISVersionManagerShould extends RelationshipSamples { - @Mock - private DHISVersionManager versionManager; - @Mock private IdentifiableObjectStore relationshipTypeStore; @@ -65,107 +58,11 @@ public class RelationshipDHISVersionManagerShould extends RelationshipSamples { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - relationshipDHISVersionManager = new RelationshipDHISVersionManager(versionManager, relationshipTypeStore); - } - - private void assertCommonFields(BaseRelationship relationship) { - assertThat(relationship.name()).isEqualTo(NAME); - assertThat(relationship.created()).isEqualTo(CREATED); - assertThat(relationship.lastUpdated()).isEqualTo(LAST_UPDATED); - } - - private void assert230Fields(BaseRelationship relationship) { - assertCommonFields(relationship); - assertThat(relationship.relationshipType()).isEqualTo(TYPE); - assertThat(relationship.from()).isEqualTo(fromItem); - assertThat(relationship.to()).isEqualTo(toItem); - } - - @Test - public void transform_2_30_compatible_relationship_into_equivalent_relationship() { - when(versionManager.is2_29()).thenReturn(false); - - Relationship229Compatible relationship230Compatible = get230Compatible(); - - Relationship relationship230 = relationshipDHISVersionManager.from229Compatible(relationship230Compatible); - assert230Fields(relationship230); - assertThat(relationship230.uid()).isEqualTo(UID); - } - - @Test - public void transform_2_29_compatible_relationship_into_2_30_relationship() { - when(versionManager.is2_29()).thenReturn(true); - Relationship relationship229_as_230 = relationshipDHISVersionManager.from229Compatible(get229Compatible()); - assert230Fields(relationship229_as_230); - } - - @Test - public void generate_uid_for_229_relationship() { - when(versionManager.is2_29()).thenReturn(true); - Relationship relationship229_as_230 = relationshipDHISVersionManager.from229Compatible(get229Compatible()); - assertThat(relationship229_as_230.uid()).isNotNull(); - } - - @Test - public void transform_2_30_relationship_into_equivalent_compatible_relationship() { - when(versionManager.is2_29()).thenReturn(false); - Relationship229Compatible compatible = relationshipDHISVersionManager.to229Compatible(get230(), FROM_UID); - assert230Fields(compatible); - assertThat(compatible.uid()).isEqualTo(UID); - assertThat(compatible.relative()).isNull(); - assertThat(compatible.syncState()).isEqualTo(STATE); - assertThat(compatible.deleted()).isEqualTo(DELETED); - } - - @Test - public void not_include_relative_in_2_20_relationship() { - when(versionManager.is2_29()).thenReturn(false); - Relationship229Compatible compatible = relationshipDHISVersionManager.to229Compatible(get230(), FROM_UID); - assertThat(compatible.relative()).isNull(); - } - - @Test - public void transform_2_30_relationship_into_compatible_229_relationship() { - when(versionManager.is2_29()).thenReturn(true); - Relationship229Compatible compatible = relationshipDHISVersionManager.to229Compatible(get230(), FROM_UID); - assertCommonFields(compatible); - assertThat(compatible.trackedEntityInstanceA()).isEqualTo(FROM_UID); - assertThat(compatible.trackedEntityInstanceB()).isEqualTo(TO_UID); - assertThat(compatible.uid()).isEqualTo(TYPE); - assertThat(compatible.syncState()).isEqualTo(STATE); - assertThat(compatible.deleted()).isEqualTo(DELETED); - } - - @Test - public void include_to_as_relative_when_passing_from_in_2_29() { - when(versionManager.is2_29()).thenReturn(true); - when(versionManager.is2_29()).thenReturn(true); - Relationship229Compatible compatible = relationshipDHISVersionManager.to229Compatible(get230(), FROM_UID); - assertThat(compatible.relative().uid()).isEqualTo(TO_UID); - } - - @Test - public void include_from_as_relative_when_passing_to_in_2_29() { - when(versionManager.is2_29()).thenReturn(true); - Relationship229Compatible compatible = relationshipDHISVersionManager.to229Compatible(get230(), TO_UID); - assertThat(compatible.relative().uid()).isEqualTo(FROM_UID); - } - - @Test - public void get_owned_relationships_in_2_29() { - when(versionManager.is2_29()).thenReturn(true); - - Collection relationships = Collections.singletonList(get230()); - - Collection ownedRelationships = - relationshipDHISVersionManager.getOwnedRelationships(relationships, TO_UID); - - assertThat(ownedRelationships.size()).isEqualTo(1); + relationshipDHISVersionManager = new RelationshipDHISVersionManager(relationshipTypeStore); } @Test public void get_owned_relationships_in_bidirectional() { - when(versionManager.is2_29()).thenReturn(false); when(relationshipTypeStore.selectByUid(TYPE)).thenReturn(relationshipType); when(relationshipType.bidirectional()).thenReturn(true); @@ -179,7 +76,6 @@ public void get_owned_relationships_in_bidirectional() { @Test public void get_owned_relationships_in_non_bidirectional() { - when(versionManager.is2_29()).thenReturn(false); when(relationshipTypeStore.selectByUid(TYPE)).thenReturn(relationshipType); when(relationshipType.bidirectional()).thenReturn(false); diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java index dc962b6348..44ee48564e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java @@ -65,9 +65,6 @@ public class RelationshipHandlerShould extends RelationshipSamples { @Mock private RelationshipItemElementStoreSelector storeSelector; - @Mock - private RelationshipDHISVersionManager versionManager; - @Mock private StoreWithState itemElementStore; @@ -94,7 +91,7 @@ public void setUp() throws Exception { MockitoAnnotations.initMocks(this); relationshipHandler = new RelationshipHandlerImpl(relationshipStore, relationshipItemStore, - relationshipItemHandler, storeSelector, versionManager); + relationshipItemHandler, storeSelector); when(storeSelector.getElementStore(any(RelationshipItem.class))).thenReturn(itemElementStore); when(itemElementStore.exists(FROM_UID)).thenReturn(true); @@ -104,29 +101,10 @@ public void setUp() throws Exception { when(relationshipItemStore.getRelationshipUidsForItems(fromItem, toItem)).thenReturn(Collections.singletonList(UID)); when(relationshipItemStore.getRelationshipUidsForItems(tei3Item, tei4Item)).thenReturn(Collections.emptyList()); when(relationshipStore.selectByUid(UID)).thenReturn(get230()); - when(versionManager.isRelationshipSupported(any(Relationship.class))).thenReturn(true); when(relationshipStore.updateOrInsert(any())).thenReturn(HandleAction.Insert); } - @Test(expected = RuntimeException.class) - public void throw_exception_when_relationship_is_no_compatible() { - when(versionManager.isRelationshipSupported(existingRelationship)).thenReturn(false); - relationshipHandler.handle(existingRelationship); - } - - @Test() - public void call_relationship_item_store_for_existing_relationship() { - relationshipHandler.handle(existingRelationship); - verify(relationshipItemStore).getRelationshipUidsForItems(fromItem, toItem); - } - - @Test() - public void call_relationship_store_for_existing_relationship() { - relationshipHandler.handle(existingRelationship); - verify(relationshipStore).selectByUid(UID); - } - @Test() public void not_delete_relationship_if_existing_id_matches() { relationshipHandler.handle(existingRelationship); @@ -139,12 +117,6 @@ public void not_call_delete_if_no_existing_relationship() { verify(relationshipStore, never()).delete(UID); } - @Test() - public void delete_relationship_if_existing_id_doesnt_match() { - relationshipHandler.handle(existingRelationshipWithNewUid); - verify(relationshipStore).delete(UID); - } - @Test() public void update_relationship_store_for_existing_relationship() { relationshipHandler.handle(existingRelationship); diff --git a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java index d929a32031..d37a7b4754 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java @@ -65,7 +65,6 @@ public void setUp() throws IOException { public void compare_version_when_not_null() { when(systemInfo.version()).thenReturn("2.31.2"); - assertThat(dhisVersionManager.isGreaterThan(DHISVersion.V2_29)).isTrue(); assertThat(dhisVersionManager.isGreaterThan(DHISVersion.V2_30)).isTrue(); assertThat(dhisVersionManager.isGreaterThan(DHISVersion.V2_31)).isFalse(); assertThat(dhisVersionManager.isGreaterThan(DHISVersion.V2_32)).isFalse(); diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt index d9bcd2937b..36f7fda371 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -40,7 +40,6 @@ import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.Enrollment import org.hisp.dhis.android.core.relationship.Relationship import org.hisp.dhis.android.core.relationship.RelationshipHelper -import org.hisp.dhis.android.core.relationship.internal.Relationship229Compatible import org.hisp.dhis.android.core.relationship.internal.RelationshipDHISVersionManager import org.hisp.dhis.android.core.relationship.internal.RelationshipHandler import org.hisp.dhis.android.core.relationship.internal.RelationshipItemRelatives @@ -64,13 +63,12 @@ class TrackedEntityInstanceHandlerShould { private val trackedEntityInstance: TrackedEntityInstance = mock() private val enrollment: Enrollment = mock() - private val relationship229Compatible: Relationship229Compatible = mock() private val relationshipItemRelatives: RelationshipItemRelatives = mock() private val relationship: Relationship = mock() private val relative: TrackedEntityInstance = mock() private val relativeBuilder: TrackedEntityInstance.Builder = mock() private val enrollmentCleaner: OrphanCleaner = mock() - private val relationshipCleaner: OrphanCleaner = mock() + private val relationshipCleaner: OrphanCleaner = mock() private val relatives: RelationshipItemRelatives = mock() private val teiBuilder: TrackedEntityInstance.Builder = mock() @@ -93,8 +91,6 @@ class TrackedEntityInstanceHandlerShould { whenever(TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance)) .thenReturn(listOf(enrollment)) whenever(TrackedEntityInstanceInternalAccessor.accessRelationships(trackedEntityInstance)) - .thenReturn(listOf(relationship229Compatible)) - whenever(relationshipVersionManager.from229Compatible(listOf(relationship229Compatible))) .thenReturn(listOf(relationship)) whenever(relationship.relationshipType()).thenReturn(RELATIONSHIP_TYPE) whenever(relationship.from()).thenReturn(RelationshipHelper.teiItem(TEI_UID)) @@ -196,7 +192,7 @@ class TrackedEntityInstanceHandlerShould { @Test fun invoke_relationship_handler_with_relationship_from_version_manager() { - whenever(relationshipVersionManager.getRelativeTei(relationship229Compatible, TEI_UID)).doReturn(relative) + whenever(relationshipVersionManager.getRelativeTei(relationship, TEI_UID)).doReturn(relative) whenever(relationshipVersionManager.getOwnedRelationships(listOf(relationship), TEI_UID)) .doReturn(listOf(relationship)) whenever(relative.toBuilder()).doReturn(relativeBuilder) @@ -216,7 +212,7 @@ class TrackedEntityInstanceHandlerShould { @Test fun do_not_invoke_relationship_repository_when_no_relative() { - whenever(relationshipVersionManager.getRelativeTei(relationship229Compatible, TEI_UID)).doReturn(null) + whenever(relationshipVersionManager.getRelativeTei(relationship, TEI_UID)).doReturn(null) val params = IdentifiableDataHandlerParams(true, false, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relationshipItemRelatives) From 5a94df8dfb2ebf58042e5eb3142d492dd9cee39f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 11 Mar 2022 13:39:53 +0100 Subject: [PATCH 168/253] [ANDROSDK-1516] Checkstyle --- .../internal/RelationshipDHISVersionManager.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java index 3930e68327..5c7fd2a22e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java @@ -82,14 +82,6 @@ public TrackedEntityInstance getRelativeTei(Relationship relationship, String te return getRelativeTEI230(relationship, teiUid); } - boolean isRelationshipSupported(BaseRelationship relationship) { - return isItemSupported(relationship.from()) && isItemSupported(relationship.to()); - } - - private boolean isItemSupported(RelationshipItem item) { - return true; - } - public TrackedEntityInstance getRelativeTEI230(BaseRelationship baseRelationship, String teiUid) { String fromTEIUid = RelationshipHelper.getTeiUid(baseRelationship.from()); String toTEIUid = RelationshipHelper.getTeiUid(baseRelationship.to()); From 2d06381a04a638c7eb3f9e6fbaeab3247f5a60cd Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Sun, 13 Mar 2022 11:54:47 +0100 Subject: [PATCH 169/253] [ANDROSDK-1510] Adapt NTI relationship model to 2.38 --- ...oreNewRelationshipItemEnrollmentAdapter.kt | 33 ++++ .../IgnoreNewRelationshipItemEventAdapter.kt | 33 ++++ ...NewRelationshipItemTrackedEntityAdapter.kt | 33 ++++ .../NewTrackerImporterRelationshipItem.java | 18 ++- ...kerImporterRelationshipItemEnrollment.java | 60 +++++++ ...wTrackerImporterRelationshipItemEvent.java | 60 +++++++ ...ImporterRelationshipItemTrackedEntity.java | 60 +++++++ ...wTrackerImporterRelationshipTransformer.kt | 16 +- .../relationship/new_relationship.json | 152 ++++++++++++++++++ .../NewTrackerImporterRelationshipShould.kt | 54 +++++++ 10 files changed, 510 insertions(+), 9 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java create mode 100644 core/src/sharedTest/resources/relationship/new_relationship.json create mode 100644 core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt new file mode 100644 index 0000000000..e854727b5a --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.arch.db.adapters.ignore.internal + +import org.hisp.dhis.android.core.relationship.NewTrackerImporterRelationshipItemEnrollment + +internal class IgnoreNewRelationshipItemEnrollmentAdapter : + IgnoreColumnAdapter() \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt new file mode 100644 index 0000000000..d37b0dd7cc --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.arch.db.adapters.ignore.internal + +import org.hisp.dhis.android.core.relationship.NewTrackerImporterRelationshipItemEvent + +internal class IgnoreNewRelationshipItemEventAdapter : + IgnoreColumnAdapter() \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt new file mode 100644 index 0000000000..7d7d01e290 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.arch.db.adapters.ignore.internal + +import org.hisp.dhis.android.core.relationship.NewTrackerImporterRelationshipItemTrackedEntity + +internal class IgnoreNewRelationshipItemTrackedEntityAdapter : + IgnoreColumnAdapter() \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java index 4151ea1200..66c07aa409 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java @@ -40,6 +40,9 @@ import com.google.auto.value.AutoValue; import org.hisp.dhis.android.core.arch.db.adapters.enums.internal.RelationshipConstraintTypeColumnAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreNewRelationshipItemEnrollmentAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreNewRelationshipItemEventAdapter; +import org.hisp.dhis.android.core.arch.db.adapters.ignore.internal.IgnoreNewRelationshipItemTrackedEntityAdapter; import org.hisp.dhis.android.core.common.CoreObject; @AutoValue @@ -57,15 +60,18 @@ public abstract class NewTrackerImporterRelationshipItem implements CoreObject { @Nullable @JsonProperty() - public abstract String trackedEntity(); + @ColumnAdapter(IgnoreNewRelationshipItemTrackedEntityAdapter.class) + public abstract NewTrackerImporterRelationshipItemTrackedEntity trackedEntity(); @Nullable @JsonProperty() - public abstract String enrollment(); + @ColumnAdapter(IgnoreNewRelationshipItemEnrollmentAdapter.class) + public abstract NewTrackerImporterRelationshipItemEnrollment enrollment(); @Nullable @JsonProperty() - public abstract String event(); + @ColumnAdapter(IgnoreNewRelationshipItemEventAdapter.class) + public abstract NewTrackerImporterRelationshipItemEvent event(); public static Builder builder() { return new $$AutoValue_NewTrackerImporterRelationshipItem.Builder(); @@ -87,11 +93,11 @@ public abstract static class Builder { public abstract Builder relationshipItemType(RelationshipConstraintType relationshipItemType); - public abstract Builder trackedEntity(String relationship); + public abstract Builder trackedEntity(NewTrackerImporterRelationshipItemTrackedEntity trackedEntity); - public abstract Builder enrollment(String relationship); + public abstract Builder enrollment(NewTrackerImporterRelationshipItemEnrollment enrollment); - public abstract Builder event(String relationship); + public abstract Builder event(NewTrackerImporterRelationshipItemEvent event); public abstract NewTrackerImporterRelationshipItem build(); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java new file mode 100644 index 0000000000..0394bd3956 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.relationship; + +import androidx.annotation.Nullable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; +import com.google.auto.value.AutoValue; + +@AutoValue +@JsonDeserialize(builder = AutoValue_NewTrackerImporterRelationshipItemEnrollment.Builder.class) +public abstract class NewTrackerImporterRelationshipItemEnrollment { + + @Nullable + @JsonProperty() + public abstract String enrollment(); + + public static Builder builder() { + return new AutoValue_NewTrackerImporterRelationshipItemEnrollment.Builder(); + } + + public abstract Builder toBuilder(); + + @AutoValue.Builder + @JsonPOJOBuilder(withPrefix = "") + public abstract static class Builder { + + public abstract Builder enrollment(String enrollment); + + public abstract NewTrackerImporterRelationshipItemEnrollment build(); + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java new file mode 100644 index 0000000000..d5dd32354d --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.relationship; + +import androidx.annotation.Nullable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; +import com.google.auto.value.AutoValue; + +@AutoValue +@JsonDeserialize(builder = AutoValue_NewTrackerImporterRelationshipItemEvent.Builder.class) +public abstract class NewTrackerImporterRelationshipItemEvent { + + @Nullable + @JsonProperty() + public abstract String event(); + + public static Builder builder() { + return new AutoValue_NewTrackerImporterRelationshipItemEvent.Builder(); + } + + public abstract Builder toBuilder(); + + @AutoValue.Builder + @JsonPOJOBuilder(withPrefix = "") + public abstract static class Builder { + + public abstract Builder event(String event); + + public abstract NewTrackerImporterRelationshipItemEvent build(); + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java new file mode 100644 index 0000000000..3872eee785 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.relationship; + +import androidx.annotation.Nullable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; +import com.google.auto.value.AutoValue; + +@AutoValue +@JsonDeserialize(builder = AutoValue_NewTrackerImporterRelationshipItemTrackedEntity.Builder.class) +public abstract class NewTrackerImporterRelationshipItemTrackedEntity { + + @Nullable + @JsonProperty() + public abstract String trackedEntity(); + + public static Builder builder() { + return new AutoValue_NewTrackerImporterRelationshipItemTrackedEntity.Builder(); + } + + public abstract Builder toBuilder(); + + @AutoValue.Builder + @JsonPOJOBuilder(withPrefix = "") + public abstract static class Builder { + + public abstract Builder trackedEntity(String trackedEntity); + + public abstract NewTrackerImporterRelationshipItemTrackedEntity build(); + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt index ea3e6b8dfb..5e15b5b23b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt @@ -52,9 +52,19 @@ internal object NewTrackerImporterRelationshipTransformer : Transformer builder.trackedEntity(item.elementUid()).build() - item.hasEnrollment() -> builder.enrollment(item.elementUid()).build() - item.hasEvent() -> builder.event(item.elementUid()).build() + item.hasTrackedEntityInstance() -> + builder.trackedEntity( + NewTrackerImporterRelationshipItemTrackedEntity.builder().trackedEntity(item.elementUid()) + .build() + ).build() + item.hasEnrollment() -> + builder.enrollment( + NewTrackerImporterRelationshipItemEnrollment.builder().enrollment(item.elementUid()).build() + ).build() + item.hasEvent() -> + builder.event( + NewTrackerImporterRelationshipItemEvent.builder().event(item.elementUid()).build() + ).build() else -> null } } diff --git a/core/src/sharedTest/resources/relationship/new_relationship.json b/core/src/sharedTest/resources/relationship/new_relationship.json new file mode 100644 index 0000000000..db192b4f48 --- /dev/null +++ b/core/src/sharedTest/resources/relationship/new_relationship.json @@ -0,0 +1,152 @@ +{ + "relationship": "VdjOfugUb9y", + "relationshipName": "Malaria case linked to person", + "relationshipType": "mxZDvSZYxlw", + "createdAt": "2021-07-26T13:34:46.887", + "updatedAt": "2021-07-26T15:34:46.887", + "bidirectional": true, + "from": { + "event": { + "event": "mOFppqD2q8d", + "status": "COMPLETED", + "program": "VBqh0ynB2wv", + "programStage": "pTo4uMt3xur", + "enrollment": "xw4GwQ4hIsc", + "orgUnit": "DiszpKrYNg8", + "orgUnitName": "Ngelehun CHC", + "occurredAt": "2022-07-06T00:00:00.000", + "scheduledAt": "2022-07-06T23:13:58.332", + "storedBy": "android", + "followup": false, + "deleted": false, + "createdAt": "2021-07-06T23:13:58.332", + "updatedAt": "2021-07-06T23:13:58.332", + "attributeOptionCombo": "HllvX50cXC0", + "attributeCategoryOptions": "xYerKDKCefk", + "completedAt": "2022-07-06T16:13:56.209", + "geometry": { + "type": "Point", + "coordinates": [ + -89.646, + 16.04144 + ] + }, + "assignedUser": {}, + "createdBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + }, + "updatedBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + }, + "dataValues": [ + { + "createdAt": "2021-07-06T23:13:58.328", + "updatedAt": "2021-07-06T23:13:58.328", + "providedElsewhere": false, + "dataElement": "F3ogKBuviRA", + "value": "[-89.16002,14.89767]", + "createdBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + }, + "updatedBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + } + }, + { + "createdAt": "2021-07-06T23:13:58.328", + "updatedAt": "2021-07-06T23:13:58.328", + "providedElsewhere": false, + "dataElement": "qrur9Dvnyt5", + "value": "25", + "createdBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + }, + "updatedBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + } + }, + { + "createdAt": "2021-07-06T23:13:58.328", + "updatedAt": "2021-07-06T23:13:58.328", + "providedElsewhere": false, + "dataElement": "oZg33kd9taw", + "value": "Male", + "createdBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + }, + "updatedBy": { + "uid": "DXyJmlo9rge", + "username": "android", + "firstName": "John", + "surname": "Barnes" + } + } + ], + "notes": [] + } + }, + "to": { + "trackedEntity": { + "trackedEntity": "vOxUH373fy5", + "trackedEntityType": "nEenWmSyUEp", + "createdAt": "2017-01-20T10:44:02.770", + "createdAtClient": "2017-01-20T10:44:02.770", + "updatedAt": "2021-02-24T15:06:46.251", + "updatedAtClient": "2017-05-26T11:46:22.372", + "orgUnit": "DiszpKrYNg8", + "inactive": false, + "deleted": false, + "potentialDuplicate": false, + "attributes": [ + { + "attribute": "zDhUuAYrxNC", + "displayName": "Last name", + "createdAt": "2017-05-26T11:46:22.371", + "updatedAt": "2017-05-26T11:46:22.371", + "valueType": "TEXT", + "value": "Ryder" + }, + { + "attribute": "w75KJ2mc4zz", + "code": "MMD_PER_NAM", + "displayName": "First name", + "createdAt": "2017-05-26T11:46:22.369", + "updatedAt": "2017-05-26T11:46:22.369", + "valueType": "TEXT", + "value": "Filona" + }, + { + "attribute": "cejWyOfXge6", + "displayName": "Gender", + "createdAt": "2017-05-26T11:46:22.336", + "updatedAt": "2017-05-26T11:46:22.336", + "valueType": "TEXT", + "value": "Female" + } + ], + "enrollments": [], + "programOwners": [] + } + } +} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt b/core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt new file mode 100644 index 0000000000..ccd96c180c --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.relationship + +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.common.BaseIdentifiableObject +import org.hisp.dhis.android.core.common.BaseObjectShould +import org.hisp.dhis.android.core.common.ObjectShould +import org.junit.Test + +class NewTrackerImporterRelationshipShould : BaseObjectShould("relationship/new_relationship.json"), ObjectShould { + + @Test + override fun map_from_json_string() { + val relationship = objectMapper.readValue(jsonStream, NewTrackerImporterRelationship::class.java) + + assertThat(relationship.uid()).isEqualTo("VdjOfugUb9y") + assertThat(relationship.relationshipType()).isEqualTo("mxZDvSZYxlw") + assertThat(relationship.createdAt()).isEqualTo( + BaseIdentifiableObject.DATE_FORMAT.parse("2021-07-26T13:34:46.887") + ) + assertThat(relationship.updatedAt()).isEqualTo( + BaseIdentifiableObject.DATE_FORMAT.parse("2021-07-26T15:34:46.887") + ) + assertThat(relationship.bidirectional()).isTrue() + assertThat(relationship.from()?.event()?.event()).isEqualTo("mOFppqD2q8d") + assertThat(relationship.to()?.trackedEntity()?.trackedEntity()).isEqualTo("vOxUH373fy5") + } +} From c050936c08673215cda69c5b5b3c0f04a4efe671 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Sun, 13 Mar 2022 11:58:07 +0100 Subject: [PATCH 170/253] [ANDROSDK-1510] Checkstyle --- .../internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt | 2 +- .../ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt | 2 +- .../internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt index e854727b5a..d63cc154ab 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt @@ -30,4 +30,4 @@ package org.hisp.dhis.android.core.arch.db.adapters.ignore.internal import org.hisp.dhis.android.core.relationship.NewTrackerImporterRelationshipItemEnrollment internal class IgnoreNewRelationshipItemEnrollmentAdapter : - IgnoreColumnAdapter() \ No newline at end of file + IgnoreColumnAdapter() diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt index d37b0dd7cc..350af968e0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt @@ -30,4 +30,4 @@ package org.hisp.dhis.android.core.arch.db.adapters.ignore.internal import org.hisp.dhis.android.core.relationship.NewTrackerImporterRelationshipItemEvent internal class IgnoreNewRelationshipItemEventAdapter : - IgnoreColumnAdapter() \ No newline at end of file + IgnoreColumnAdapter() diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt index 7d7d01e290..aa72249cb7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt @@ -30,4 +30,4 @@ package org.hisp.dhis.android.core.arch.db.adapters.ignore.internal import org.hisp.dhis.android.core.relationship.NewTrackerImporterRelationshipItemTrackedEntity internal class IgnoreNewRelationshipItemTrackedEntityAdapter : - IgnoreColumnAdapter() \ No newline at end of file + IgnoreColumnAdapter() From e3a1f45299deff984c308d49d84cd7cf013d5b0a Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Feb 2022 08:51:33 +0100 Subject: [PATCH 171/253] [androsdk-402] Add UserAccountDisabledErrorCatcher --- .../UserAccountDisabledErrorCatcher.kt | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt new file mode 100644 index 0000000000..a7290a645f --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.user.internal + +import com.fasterxml.jackson.databind.ObjectMapper +import dagger.Reusable +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher +import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.wipe.internal.WipeModule +import retrofit2.Response +import java.net.HttpURLConnection +import javax.inject.Inject + +@Reusable +internal class UserAccountDisabledErrorCatcher @Inject constructor( + private val objectMapper: ObjectMapper, + private val wipeModule: WipeModule, +) : APICallErrorCatcher { + + override fun mustBeStored(): Boolean { + return true + } + + override fun catchError(response: Response<*>?): D2ErrorCode { + wipeModule.wipeData() + return D2ErrorCode.USER_ACCOUNT_DISABLED + } + + fun isUserAccountLocked(response: Response<*>): Boolean { + return try { + val isUnauthorized = response.code() == HttpURLConnection.HTTP_UNAUTHORIZED + isUnauthorized && objectMapper.readValue(response.errorBody()!!.string(), HttpMessageResponse::class.java) + .message().contains("Account disabled") + } catch (e: Exception) { + false + } + } +} \ No newline at end of file From 769de6218c685dc6e7c9a48ca1703b713844bd11 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Feb 2022 08:52:37 +0100 Subject: [PATCH 172/253] [androsdk-402] Refactor APICallExecutorImpl to catch disabled accounts --- .../internal/APICallExecutorImpl.java | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java index 6ed3d2a567..4cdc0bd81b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java @@ -28,14 +28,15 @@ package org.hisp.dhis.android.core.arch.api.executors.internal; -import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory; import org.hisp.dhis.android.core.arch.api.payload.internal.Payload; import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectStore; +import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory; import org.hisp.dhis.android.core.common.Unit; import org.hisp.dhis.android.core.maintenance.D2Error; import org.hisp.dhis.android.core.maintenance.D2ErrorCode; import org.hisp.dhis.android.core.maintenance.internal.D2ErrorStore; +import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher; import java.io.IOException; import java.util.ArrayList; @@ -51,27 +52,19 @@ public final class APICallExecutorImpl implements APICallExecutor { private final ObjectStore errorStore; + private final UserAccountDisabledErrorCatcher userAccountDisabledErrorCatcher; private final APIErrorMapper errorMapper = new APIErrorMapper(); @Inject - public APICallExecutorImpl(ObjectStore errorStore) { + public APICallExecutorImpl(ObjectStore errorStore, + UserAccountDisabledErrorCatcher userAccountDisabledErrorCatcher) { this.errorStore = errorStore; + this.userAccountDisabledErrorCatcher = userAccountDisabledErrorCatcher; } @Override public

List

executePayloadCall(Call> call) throws D2Error { - try { - Response> response = call.execute(); - if (response.isSuccessful() && response.body() != null) { - return response.body().items(); - } else { - throw storeAndReturn(errorMapper.responseException(errorBuilder(call), response)); - } - } catch (D2Error d2Error) { - throw d2Error; - } catch (Throwable t) { - throw storeAndReturn(errorMapper.mapRetrofitException(t, errorBuilder(call))); - } + return executeObjectCallInternal(call, new ArrayList<>(), null, null, false).items(); } @Override @@ -105,6 +98,8 @@ private

P executeObjectCallInternal(Call

call, Response

response = call.execute(); if (response.isSuccessful()) { return processSuccessfulResponse(errorBuilder(call), response, emptyBodyExpected); + } else if (userAccountDisabledErrorCatcher.isUserAccountLocked(response)) { + this.catchAndThrow(userAccountDisabledErrorCatcher, errorBuilder(call), response); } else if (errorClass != null && acceptedErrorCodes.contains(response.code())) { return ObjectMapperFactory.objectMapper().readValue(response.errorBody().string(), errorClass); } else if (errorCatcher != null) { @@ -155,7 +150,8 @@ private

D2Error.Builder errorBuilder(Call

call) { return errorMapper.getBaseErrorBuilder(call); } - public static APICallExecutor create(DatabaseAdapter databaseAdapter) { - return new APICallExecutorImpl(D2ErrorStore.create(databaseAdapter)); + public static APICallExecutor create(DatabaseAdapter databaseAdapter, + UserAccountDisabledErrorCatcher userAccountDisabledErrorCatcher) { + return new APICallExecutorImpl(D2ErrorStore.create(databaseAdapter), userAccountDisabledErrorCatcher); } } \ No newline at end of file From 024f0a96bb89e97e46672dade6f40bdf4e029c35 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Feb 2022 08:52:58 +0100 Subject: [PATCH 173/253] [androsdk-402] Remove catching disabled accounts on LoginInCall --- .../org/hisp/dhis/android/core/user/internal/LogInCall.kt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index 64f13ca30d..a5c07be2a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -48,7 +48,6 @@ import org.hisp.dhis.android.core.systeminfo.SystemInfo import org.hisp.dhis.android.core.user.AuthenticatedUser import org.hisp.dhis.android.core.user.User import org.hisp.dhis.android.core.user.UserInternalAccessor -import org.hisp.dhis.android.core.wipe.internal.WipeModule @Reusable @Suppress("LongParameterList") @@ -62,7 +61,6 @@ internal class LogInCall @Inject internal constructor( private val authenticatedUserStore: ObjectWithoutUidStore, private val systemInfoRepository: ReadOnlyWithDownloadObjectRepository, private val userStore: IdentifiableObjectStore, - private val wipeModule: WipeModule, private val apiCallErrorCatcher: UserAuthenticateCallErrorCatcher, private val databaseManager: LogInDatabaseManager, private val exceptions: LogInExceptions @@ -104,10 +102,7 @@ internal class LogInCall @Inject internal constructor( } private fun handleOnlineException(d2Error: D2Error): D2Error { - return if (d2Error.errorCode() == D2ErrorCode.USER_ACCOUNT_DISABLED) { - wipeModule.wipeEverything() - d2Error - } else if (d2Error.errorCode() == D2ErrorCode.UNEXPECTED || + return if (d2Error.errorCode() == D2ErrorCode.UNEXPECTED || d2Error.errorCode() == D2ErrorCode.API_RESPONSE_PROCESS_ERROR ) { exceptions.noDHIS2Server() From bae08ff0434fd1f6404a0fb4fbd39646a2e33da1 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Feb 2022 08:53:54 +0100 Subject: [PATCH 174/253] [androsdk-402] Add UserAccountDisabledErrorCatcherShould --- .../UserAccountDisabledErrorCatcherShould.kt | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt new file mode 100644 index 0000000000..690e566073 --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.user.internal + +import com.google.common.truth.Truth +import com.nhaarman.mockitokotlin2.mock +import com.nhaarman.mockitokotlin2.times +import com.nhaarman.mockitokotlin2.verify +import okhttp3.ResponseBody +import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.wipe.internal.WipeModule +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import retrofit2.Response + +@RunWith(JUnit4::class) +class UserAccountDisabledErrorCatcherShould { + private lateinit var catcher: UserAccountDisabledErrorCatcher + private lateinit var response: Response + private var wipeModule: WipeModule = mock() + + @Before + fun setUp() { + catcher = UserAccountDisabledErrorCatcher(objectMapper(), wipeModule) + + val responseError = + "{\"httpStatus\": \"Unauthorized\",\"httpStatusCode\": 401,\"status\": \"ERROR\",\"message\": \"Account disabled\"}" + response = Response.error(401, ResponseBody.create(null, responseError)) + } + + @Test + fun return_account_disabled() { + Truth.assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.USER_ACCOUNT_DISABLED) + } + + @Test + fun wipeData() { + catcher.catchError(response) + verify(wipeModule, times(1)).wipeData() + } +} \ No newline at end of file From 3853bda623feacabc4cfed6b8be7a52e572584c0 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Feb 2022 08:54:52 +0100 Subject: [PATCH 175/253] [androsdk-402] Fix unit tests --- .../internal/APICallExecutorShould.java | 24 +++++++++++- .../android/core/common/BaseCallShould.java | 4 ++ .../event/internal/EventEndpointCallShould.kt | 6 ++- .../internal/AuthorityEndpointCallShould.java | 5 ++- .../user/internal/LogInCallUnitShould.java | 39 +------------------ 5 files changed, 36 insertions(+), 42 deletions(-) diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java index dc912ebdc2..e3ff4410c0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java @@ -33,6 +33,7 @@ import org.hisp.dhis.android.core.maintenance.D2Error; import org.hisp.dhis.android.core.maintenance.D2ErrorCode; import org.hisp.dhis.android.core.user.User; +import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -42,6 +43,7 @@ import java.util.Collections; import java.util.List; +import io.reactivex.observers.TestObserver; import okhttp3.MediaType; import okhttp3.ResponseBody; import retrofit2.Call; @@ -74,6 +76,9 @@ public class APICallExecutorShould { @Mock private IOException ioException; + @Mock + private UserAccountDisabledErrorCatcher userAccountDisabledErrorCatcher; + private Response conflictResponse; private APICallExecutor apiCallExecutor; @@ -93,7 +98,7 @@ public void setUp() throws Exception { conflictResponse = Response.error(409, ResponseBody.create(MediaType.get("application/text"), "error_response")); - apiCallExecutor = new APICallExecutorImpl(errorStore); + apiCallExecutor = new APICallExecutorImpl(errorStore, userAccountDisabledErrorCatcher); } @Test @@ -185,4 +190,21 @@ public void persist_thrown_d2_error_when_object_call_is_conflict() throws IOExce verify(errorStore).insert(any(D2Error.class)); verifyNoMoreInteractions(errorStore); } + + @Test + public void call_error_catcher_when_account_disabled() throws IOException { + Response disabledResponse = Response.error(401, ResponseBody.create(MediaType.get("application/text"), + "Account disabled")); + + when(objectAPICall.execute()).thenReturn(disabledResponse); + when(userAccountDisabledErrorCatcher.isUserAccountLocked(any())).thenReturn(true); + + try { + apiCallExecutor.executeObjectCall(objectAPICall); + } catch (D2Error d2Error) { + //Empty block + } + + verify(userAccountDisabledErrorCatcher).catchError(any()); + } } \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java index 331efccf6c..026ae065c0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java @@ -34,6 +34,7 @@ import org.hisp.dhis.android.core.maintenance.D2Error; import org.hisp.dhis.android.core.resource.internal.Resource; import org.hisp.dhis.android.core.resource.internal.ResourceHandler; +import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher; import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -76,6 +77,9 @@ public abstract class BaseCallShould { @Mock protected D2Error d2Error; + @Mock + protected UserAccountDisabledErrorCatcher userAccountDisabledErrorCatcher; + protected Response errorResponse; public void setUp() throws Exception { diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt index ca6a31e353..fb760d210c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt @@ -29,7 +29,6 @@ package org.hisp.dhis.android.core.event.internal import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.mock -import java.util.concurrent.Callable import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutorImpl import org.hisp.dhis.android.core.arch.api.testutils.RetrofitFactory import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter @@ -38,10 +37,12 @@ import org.hisp.dhis.android.core.event.Event import org.hisp.dhis.android.core.mockwebserver.Dhis2MockServer import org.hisp.dhis.android.core.organisationunit.OrganisationUnitMode import org.hisp.dhis.android.core.trackedentity.internal.TrackerQueryCommonParams +import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher import org.junit.AfterClass import org.junit.BeforeClass import org.junit.Test import retrofit2.Retrofit +import java.util.concurrent.Callable class EventEndpointCallShould { @@ -50,6 +51,7 @@ class EventEndpointCallShould { private val startDateStr = "2021-01-01" private val databaseAdapter: DatabaseAdapter = mock() + private val userAccountDisabledErrorCatcher: UserAccountDisabledErrorCatcher = mock() @Test fun realize_request_with_page_filters_when_included_in_query() { @@ -113,7 +115,7 @@ class EventEndpointCallShould { private fun givenACallForQuery(eventQuery: EventQuery): Callable> { return EventEndpointCallFactory( retrofit.create(EventService::class.java), - APICallExecutorImpl.create(databaseAdapter) + APICallExecutorImpl.create(databaseAdapter, userAccountDisabledErrorCatcher) ).getCall(eventQuery) } diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java index 30793652fb..a294d7f472 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java @@ -62,6 +62,9 @@ public class AuthorityEndpointCallShould extends BaseCallShould { @Mock private List payload; + @Mock + private UserAccountDisabledErrorCatcher userAccountDisabledErrorCatcher; + private Callable> endpointCall; @@ -70,7 +73,7 @@ public class AuthorityEndpointCallShould extends BaseCallShould { public void setUp() throws Exception { super.setUp(); - APICallExecutor apiCallExecutor = APICallExecutorImpl.create(databaseAdapter); + APICallExecutor apiCallExecutor = APICallExecutorImpl.create(databaseAdapter, userAccountDisabledErrorCatcher); endpointCall = new AuthorityEndpointCallFactory(genericCallData, apiCallExecutor, handler, retrofit.create(AuthorityService.class)).create(); when(retrofitCall.execute()).thenReturn(Response.success(payload)); diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java index 497d400c0c..567f19b6e1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java @@ -57,7 +57,6 @@ import org.hisp.dhis.android.core.systeminfo.SystemInfo; import org.hisp.dhis.android.core.user.AuthenticatedUser; import org.hisp.dhis.android.core.user.User; -import org.hisp.dhis.android.core.wipe.internal.WipeModule; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -130,9 +129,6 @@ public class LogInCallUnitShould extends BaseCallShould { @Mock private ReadOnlyWithDownloadObjectRepository systemInfoRepository; - @Mock - private WipeModule wipeModule; - @Mock private MultiUserDatabaseManager multiUserDatabaseManager; @@ -192,7 +188,7 @@ public void setUp() throws Exception { private Single instantiateCall(String username, String password, String serverUrl) { return new LogInCall(databaseAdapter, apiCallExecutor, userService, credentialsSecureStore, userIdStore, userHandler, authenticatedUserStore, - systemInfoRepository, userStore, wipeModule, apiCallErrorCatcher, + systemInfoRepository, userStore, apiCallErrorCatcher, new LogInDatabaseManager(multiUserDatabaseManager, generalSettingCall), new LogInExceptions(credentialsSecureStore)).logIn(username, password, serverUrl); } @@ -269,39 +265,6 @@ public void succeed_when_no_previous_user_or_system_info() { verifySuccess(); } - @Test - public void not_wipe_db_when_no_previous_user_or_system_info() throws Exception { - logInSingle.blockingGet(); - - verify(wipeModule, never()).wipeEverything(); - verifySuccess(); - } - - @Test - public void not_wipe_db_when_previously_user() throws Exception { - when(userStore.selectFirst()).thenReturn(user); - - logInSingle.blockingGet(); - - verify(wipeModule, never()).wipeEverything(); - verifySuccess(); - } - - @Test - public void wipe_db_when_account_disabled() throws Exception { - whenAPICall().thenThrow(d2Error); - when(d2Error.errorCode()).thenReturn(D2ErrorCode.USER_ACCOUNT_DISABLED); - when(d2Error.isOffline()).thenReturn(false); - - TestObserver testObserver = logInSingle.test(); - testObserver.awaitTerminalEvent(); - - assertThat(testObserver.errorCount()).isEqualTo(1); - testObserver.dispose(); - - verify(wipeModule).wipeEverything(); - } - @Test public void throw_d2_error_if_user_already_signed_in() { when(credentialsSecureStore.get()).thenReturn(credentials); From 271ba335bb0f2046d3bf84b40bca17a1b3e6296b Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Feb 2022 08:55:44 +0100 Subject: [PATCH 176/253] [androsdk-402] Fix integration tests --- .../dhis/android/core/event/internal/EventAPIRealShould.java | 3 ++- .../hisp/dhis/android/core/event/internal/EventCallFactory.kt | 2 +- .../android/core/trackedentity/api/BreakTheGlassAPIShould.java | 2 +- .../core/trackedentity/api/TrackedEntityInstanceAPIShould.java | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java index 22b9d2ffd4..349fb54711 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java @@ -38,6 +38,7 @@ import org.hisp.dhis.android.core.imports.internal.EventWebResponse; import org.hisp.dhis.android.core.maintenance.D2Error; import org.hisp.dhis.android.core.organisationunit.OrganisationUnitMode; +import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher; import org.junit.Assert; import org.junit.Before; @@ -80,7 +81,7 @@ public void setUp() throws IOException { super.setUp(); d2 = D2Factory.forNewDatabase(); - apiCallExecutor = APICallExecutorImpl.create(d2.databaseAdapter()); + apiCallExecutor = APICallExecutorImpl.create(d2.databaseAdapter(), null); eventService = d2.retrofit().create(EventService.class); } diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt index bd2d32a945..682be395a6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt @@ -52,7 +52,7 @@ object EventCallFactory { return EventEndpointCallFactory( retrofit.create(EventService::class.java), - APICallExecutorImpl.create(databaseAdapter) + APICallExecutorImpl.create(databaseAdapter, null) ).getCall(eventQuery) } } diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java index e26df16baf..471b598403 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java @@ -106,7 +106,7 @@ public void setUp() throws IOException { d2 = D2Factory.forNewDatabase(); - executor = APICallExecutorImpl.create(d2.databaseAdapter()); + executor = APICallExecutorImpl.create(d2.databaseAdapter(), null); trackedEntityInstanceService = d2.retrofit().create(TrackedEntityInstanceService.class); ownershipService = d2.retrofit().create(OwnershipService.class); diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java index 7eaa70c03c..986d0d315e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java @@ -100,7 +100,7 @@ public void setUp() throws IOException { d2 = D2Factory.forNewDatabase(); - executor = APICallExecutorImpl.create(d2.databaseAdapter()); + executor = APICallExecutorImpl.create(d2.databaseAdapter(), null); trackedEntityInstanceService = d2.retrofit().create(TrackedEntityInstanceService.class); } From 37b852fc664fe396b863505e92403f094905fec4 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 24 Feb 2022 13:51:41 +0100 Subject: [PATCH 177/253] [androsdk-402] Add disable Deletion Helper --- .../access/internal/DatabaseDeletionHelper.kt | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt new file mode 100644 index 0000000000..dd7c586f74 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.arch.db.access.internal + +import dagger.Reusable +import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore +import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore +import org.hisp.dhis.android.core.configuration.internal.DatabaseConfigurationHelper +import org.hisp.dhis.android.core.configuration.internal.DatabasesConfiguration +import javax.inject.Inject + +@Reusable +class DatabaseDeletionHelper @Inject internal constructor( + private val databaseAdapterFactory: DatabaseAdapterFactory, + private val databaseConfigurationSecureStore: ObjectKeyValueStore, + private val credentialsSecureStore: CredentialsSecureStore +) { + fun deleteActiveDatabase() { + val credentials = credentialsSecureStore.get() ?: throw RuntimeException("No active database") + deleteDatabase(credentials.serverUrl, credentials.username) + } + + fun deleteDatabase(serverUrl: String, username: String) { + val account = + DatabaseConfigurationHelper.getAccount(databaseConfigurationSecureStore.get(), serverUrl, username) + databaseAdapterFactory.deleteDatabase(account) + databaseConfigurationSecureStore.remove() + } +} \ No newline at end of file From 693c3020a580af6b1ee13e4bedc06166ac1a2492 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 24 Feb 2022 13:54:11 +0100 Subject: [PATCH 178/253] [androsdk-402] Update catching exception --- .../arch/api/executors/internal/APIErrorMapper.kt | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt index 7a9a05e625..d8af6a80cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt @@ -29,14 +29,6 @@ package org.hisp.dhis.android.core.arch.api.executors.internal import android.util.Log import dagger.Reusable -import java.io.IOException -import java.lang.Exception -import java.lang.RuntimeException -import java.net.SocketTimeoutException -import java.net.UnknownHostException -import javax.inject.Inject -import javax.net.ssl.SSLException -import kotlin.jvm.JvmOverloads import okhttp3.Request import org.hisp.dhis.android.core.arch.api.internal.DynamicServerURLInterceptor import org.hisp.dhis.android.core.maintenance.D2Error @@ -45,6 +37,11 @@ import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import retrofit2.Call import retrofit2.HttpException import retrofit2.Response +import java.io.IOException +import java.net.SocketTimeoutException +import java.net.UnknownHostException +import javax.inject.Inject +import javax.net.ssl.SSLException @Reusable @Suppress("TooManyFunctions") @@ -153,7 +150,7 @@ internal class APIErrorMapper @Inject constructor() { getIfNotEmpty(response.message()) ?: getIfNotEmpty(response.errorBody()!!.string()) ?: getIfNotEmpty(response.errorBody().toString()) - } catch (e: IOException) { + } catch (e: Exception) { null } From fb78b7ff55e1552d1f5586c06629d4d83347c544 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 24 Feb 2022 14:03:32 +0100 Subject: [PATCH 179/253] [androsdk-402] Update LogInCall to delete db if user disabled --- .../android/core/user/internal/LogInCall.kt | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index a5c07be2a2..0edfa234d1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -29,11 +29,11 @@ package org.hisp.dhis.android.core.user.internal import dagger.Reusable import io.reactivex.Single -import javax.inject.Inject import net.openid.appauth.AuthState import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.api.internal.ServerURLWrapper import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.handlers.internal.Handler @@ -48,6 +48,7 @@ import org.hisp.dhis.android.core.systeminfo.SystemInfo import org.hisp.dhis.android.core.user.AuthenticatedUser import org.hisp.dhis.android.core.user.User import org.hisp.dhis.android.core.user.UserInternalAccessor +import javax.inject.Inject @Reusable @Suppress("LongParameterList") @@ -63,7 +64,8 @@ internal class LogInCall @Inject internal constructor( private val userStore: IdentifiableObjectStore, private val apiCallErrorCatcher: UserAuthenticateCallErrorCatcher, private val databaseManager: LogInDatabaseManager, - private val exceptions: LogInExceptions + private val exceptions: LogInExceptions, + private val databaseDeletionHelper: DatabaseDeletionHelper ) { fun logIn(username: String?, password: String?, serverUrl: String?): Single { return Single.fromCallable { @@ -96,13 +98,20 @@ internal class LogInCall @Inject internal constructor( if (d2Error.isOffline) { tryLoginOffline(credentials, d2Error) } else { - throw handleOnlineException(d2Error) + throw handleOnlineException(d2Error, credentials) } } } - private fun handleOnlineException(d2Error: D2Error): D2Error { - return if (d2Error.errorCode() == D2ErrorCode.UNEXPECTED || + private fun handleOnlineException(d2Error: D2Error, credentials: Credentials?): D2Error { + return if (d2Error.errorCode() == D2ErrorCode.USER_ACCOUNT_DISABLED) { + try { + databaseDeletionHelper.deleteDatabase(credentials!!.serverUrl, credentials.username) + d2Error + } catch (e: Exception) { + d2Error + } + } else if (d2Error.errorCode() == D2ErrorCode.UNEXPECTED || d2Error.errorCode() == D2ErrorCode.API_RESPONSE_PROCESS_ERROR ) { exceptions.noDHIS2Server() @@ -168,12 +177,13 @@ internal class LogInCall @Inject internal constructor( UserFields.allFieldsWithoutOrgUnit ) + var credentials: Credentials? = null return try { val user = apiCallExecutor.executeObjectCallWithErrorCatcher(authenticateCall, apiCallErrorCatcher) - val credentials = getOpenIdConnectCredentials(user, trimmedServerUrl!!, openIDConnectState) + credentials = getOpenIdConnectCredentials(user, trimmedServerUrl!!, openIDConnectState) loginOnline(user, credentials) } catch (d2Error: D2Error) { - throw handleOnlineException(d2Error) + throw handleOnlineException(d2Error, credentials) } } From 2ac2db297e7de9d2dca5844a79da7bb93d6d8bd1 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 24 Feb 2022 14:04:49 +0100 Subject: [PATCH 180/253] [androsdk-402] Update Disabled ErrorCatcher to delete account --- .../internal/RxAPICallExecutorImpl.kt | 1 + .../UserAccountDisabledErrorCatcher.kt | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt index ed9d396d8b..ececf602e2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt @@ -86,6 +86,7 @@ internal class RxAPICallExecutorImpl @Inject constructor( } private fun mapAndStore(throwable: Throwable, storeError: Boolean): D2Error { + // TODO Delete db if user is disabled val d2Error = if (throwable is D2Error) throwable else errorMapper.mapRetrofitException(throwable, errorMapper.rxObjectErrorBuilder) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index a7290a645f..b97b2b4f83 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -30,9 +30,9 @@ package org.hisp.dhis.android.core.user.internal import com.fasterxml.jackson.databind.ObjectMapper import dagger.Reusable import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher +import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import org.hisp.dhis.android.core.maintenance.D2ErrorCode -import org.hisp.dhis.android.core.wipe.internal.WipeModule import retrofit2.Response import java.net.HttpURLConnection import javax.inject.Inject @@ -40,23 +40,27 @@ import javax.inject.Inject @Reusable internal class UserAccountDisabledErrorCatcher @Inject constructor( private val objectMapper: ObjectMapper, - private val wipeModule: WipeModule, + private val databaseDeletionHelper: DatabaseDeletionHelper ) : APICallErrorCatcher { override fun mustBeStored(): Boolean { return true } - override fun catchError(response: Response<*>?): D2ErrorCode { - wipeModule.wipeData() - return D2ErrorCode.USER_ACCOUNT_DISABLED + override fun catchError(response: Response<*>): D2ErrorCode? { + return try { + databaseDeletionHelper.deleteActiveDatabase() + D2ErrorCode.USER_ACCOUNT_DISABLED + } catch (e: Throwable) { + D2ErrorCode.USER_ACCOUNT_DISABLED + } } fun isUserAccountLocked(response: Response<*>): Boolean { return try { val isUnauthorized = response.code() == HttpURLConnection.HTTP_UNAUTHORIZED - isUnauthorized && objectMapper.readValue(response.errorBody()!!.string(), HttpMessageResponse::class.java) - .message().contains("Account disabled") + val errorBody = objectMapper.readValue(response.errorBody()!!.string(), HttpMessageResponse::class.java) + isUnauthorized && errorBody.message().contains("Account disabled") } catch (e: Exception) { false } From 5503bd92539629fa34fd278d0d15e9841c327e37 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 24 Feb 2022 14:05:11 +0100 Subject: [PATCH 181/253] [androsdk-402] Add UserDisabledMockIntegrationShould --- .../user/UserDisabledMockIntegrationShould.kt | 62 +++++++++++++++++++ .../resources/user/user_disabled.json | 6 ++ .../resources/user/user_unauthorized.json | 6 ++ 3 files changed, 74 insertions(+) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt create mode 100644 core/src/sharedTest/resources/user/user_disabled.json create mode 100644 core/src/sharedTest/resources/user/user_unauthorized.json diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt new file mode 100644 index 0000000000..bdb5aea26a --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt @@ -0,0 +1,62 @@ +package org.hisp.dhis.android.core.user + +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestMetadataEnqueable +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.After +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class UserDisabledMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueable() { + + @After + @Throws(D2Error::class) + fun tearDown() { + d2.wipeModule().wipeData() + } + + @Test + fun delete_database_when_user_disabled() { + // Enqueue user disabled response + dhis2MockServer.enqueueMockResponse(401,"user/user_disabled.json") + addDummyData() + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) + + try { + d2.dataValueModule().dataValues().blockingUpload() + } catch (e: Exception) { + val d2Error = e.cause as D2Error + assertThat(d2Error.errorCode()).isEqualTo(D2ErrorCode.USER_ACCOUNT_DISABLED) + } + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(0) + } + + @Test + fun do_not_delete_database_when_user_has_bad_credentials() { + // Enqueue user bad credentials response + dhis2MockServer.enqueueMockResponse(401, "user/user_unauthorized.json") + addDummyData() + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) + + try { + d2.dataValueModule().dataValues().blockingUpload() + } catch (e: Exception) { + val d2Error = e.cause as D2Error + assertThat(d2Error.errorCode()).isEqualTo(D2ErrorCode.API_UNSUCCESSFUL_RESPONSE) + } + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) + } + + private fun addDummyData() { + d2.dataValueModule().dataValues().value( + "20191021", + "DiszpKrYNg8", + "Ok9OQpitjQr", + "DwrQJzeChWp", + "DwrQJzeChWp" + ).blockingSet("30") + } +} diff --git a/core/src/sharedTest/resources/user/user_disabled.json b/core/src/sharedTest/resources/user/user_disabled.json new file mode 100644 index 0000000000..cb6f4b631e --- /dev/null +++ b/core/src/sharedTest/resources/user/user_disabled.json @@ -0,0 +1,6 @@ +{ + "httpStatus": "Unauthorized", + "httpStatusCode": 401, + "status": "ERROR", + "message": "Account disabled" +} \ No newline at end of file diff --git a/core/src/sharedTest/resources/user/user_unauthorized.json b/core/src/sharedTest/resources/user/user_unauthorized.json new file mode 100644 index 0000000000..9e8e32df13 --- /dev/null +++ b/core/src/sharedTest/resources/user/user_unauthorized.json @@ -0,0 +1,6 @@ +{ + "httpStatus": "Unauthorized", + "httpStatusCode": 401, + "status": "ERROR", + "message": "Unauthorized" +} \ No newline at end of file From 4134123640939980a4a4d479ebb5b0e5a52ef51d Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 25 Feb 2022 17:35:48 +0100 Subject: [PATCH 182/253] [androsdk-402] Fix tests and kotlintFormat --- .../user/UserDisabledMockIntegrationShould.kt | 2 +- .../api/executors/internal/APIErrorMapper.kt | 10 +++++----- .../access/internal/DatabaseDeletionHelper.kt | 6 +++--- .../core/sms/internal/SMSModuleWiper.kt | 1 + .../android/core/user/internal/LogInCall.kt | 2 +- .../UserAccountDisabledErrorCatcher.kt | 6 +++--- .../internal/APICallExecutorShould.java | 13 ++++++------- .../android/core/common/BaseCallShould.java | 16 ++++++---------- .../event/internal/EventEndpointCallShould.kt | 2 +- .../user/internal/LogInCallUnitShould.java | 6 +++++- .../UserAccountDisabledErrorCatcherShould.kt | 18 +++++++++--------- 11 files changed, 41 insertions(+), 41 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt index bdb5aea26a..c224664e7a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt @@ -21,7 +21,7 @@ class UserDisabledMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueab @Test fun delete_database_when_user_disabled() { // Enqueue user disabled response - dhis2MockServer.enqueueMockResponse(401,"user/user_disabled.json") + dhis2MockServer.enqueueMockResponse(401, "user/user_disabled.json") addDummyData() assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt index d8af6a80cd..8b3bf08ddd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt @@ -29,6 +29,11 @@ package org.hisp.dhis.android.core.arch.api.executors.internal import android.util.Log import dagger.Reusable +import java.io.IOException +import java.net.SocketTimeoutException +import java.net.UnknownHostException +import javax.inject.Inject +import javax.net.ssl.SSLException import okhttp3.Request import org.hisp.dhis.android.core.arch.api.internal.DynamicServerURLInterceptor import org.hisp.dhis.android.core.maintenance.D2Error @@ -37,11 +42,6 @@ import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import retrofit2.Call import retrofit2.HttpException import retrofit2.Response -import java.io.IOException -import java.net.SocketTimeoutException -import java.net.UnknownHostException -import javax.inject.Inject -import javax.net.ssl.SSLException @Reusable @Suppress("TooManyFunctions") diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt index dd7c586f74..2d126c1085 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt @@ -28,14 +28,14 @@ package org.hisp.dhis.android.core.arch.db.access.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.DatabaseConfigurationHelper import org.hisp.dhis.android.core.configuration.internal.DatabasesConfiguration -import javax.inject.Inject @Reusable -class DatabaseDeletionHelper @Inject internal constructor( +internal class DatabaseDeletionHelper @Inject internal constructor( private val databaseAdapterFactory: DatabaseAdapterFactory, private val databaseConfigurationSecureStore: ObjectKeyValueStore, private val credentialsSecureStore: CredentialsSecureStore @@ -51,4 +51,4 @@ class DatabaseDeletionHelper @Inject internal constructor( databaseAdapterFactory.deleteDatabase(account) databaseConfigurationSecureStore.remove() } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt index c9850f9043..5d9fe7bc07 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.sms.internal import dagger.Reusable +import org.hisp.dhis.android.core.wipe.internal.ModuleWiper import javax.inject.Inject import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdTableInfo diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index 0edfa234d1..108b6dd455 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.user.internal import dagger.Reusable import io.reactivex.Single +import javax.inject.Inject import net.openid.appauth.AuthState import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.api.internal.ServerURLWrapper @@ -48,7 +49,6 @@ import org.hisp.dhis.android.core.systeminfo.SystemInfo import org.hisp.dhis.android.core.user.AuthenticatedUser import org.hisp.dhis.android.core.user.User import org.hisp.dhis.android.core.user.UserInternalAccessor -import javax.inject.Inject @Reusable @Suppress("LongParameterList") diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index b97b2b4f83..26bdde05e5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -29,13 +29,13 @@ package org.hisp.dhis.android.core.user.internal import com.fasterxml.jackson.databind.ObjectMapper import dagger.Reusable +import java.net.HttpURLConnection +import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import org.hisp.dhis.android.core.maintenance.D2ErrorCode import retrofit2.Response -import java.net.HttpURLConnection -import javax.inject.Inject @Reusable internal class UserAccountDisabledErrorCatcher @Inject constructor( @@ -65,4 +65,4 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( false } } -} \ No newline at end of file +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java index e3ff4410c0..88fb51da93 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java @@ -28,6 +28,12 @@ package org.hisp.dhis.android.core.arch.api.executors.internal; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; + import org.hisp.dhis.android.core.arch.api.payload.internal.Payload; import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectStore; import org.hisp.dhis.android.core.maintenance.D2Error; @@ -43,18 +49,11 @@ import java.util.Collections; import java.util.List; -import io.reactivex.observers.TestObserver; import okhttp3.MediaType; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Response; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - public class APICallExecutorShould { @Mock diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java index 026ae065c0..b724bf7785 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java @@ -27,6 +27,12 @@ */ package org.hisp.dhis.android.core.common; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import org.hisp.dhis.android.core.arch.api.testutils.RetrofitFactory; import org.hisp.dhis.android.core.arch.call.internal.GenericCallData; import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; @@ -34,7 +40,6 @@ import org.hisp.dhis.android.core.maintenance.D2Error; import org.hisp.dhis.android.core.resource.internal.Resource; import org.hisp.dhis.android.core.resource.internal.ResourceHandler; -import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher; import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -49,12 +54,6 @@ import retrofit2.Response; import retrofit2.Retrofit; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - public abstract class BaseCallShould { @Mock @@ -77,9 +76,6 @@ public abstract class BaseCallShould { @Mock protected D2Error d2Error; - @Mock - protected UserAccountDisabledErrorCatcher userAccountDisabledErrorCatcher; - protected Response errorResponse; public void setUp() throws Exception { diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt index fb760d210c..c4ffbe4e39 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.event.internal import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.mock +import java.util.concurrent.Callable import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutorImpl import org.hisp.dhis.android.core.arch.api.testutils.RetrofitFactory import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter @@ -42,7 +43,6 @@ import org.junit.AfterClass import org.junit.BeforeClass import org.junit.Test import retrofit2.Retrofit -import java.util.concurrent.Callable class EventEndpointCallShould { diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java index 567f19b6e1..d7dedc2823 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java @@ -42,6 +42,7 @@ import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher; import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor; import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; +import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper; import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore; import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore; import org.hisp.dhis.android.core.arch.handlers.internal.Handler; @@ -138,6 +139,9 @@ public class LogInCallUnitShould extends BaseCallShould { @Mock private UserAuthenticateCallErrorCatcher apiCallErrorCatcher; + @Mock + private DatabaseDeletionHelper databaseDeletionHelper; + // call we are testing private Single logInSingle; @@ -190,7 +194,7 @@ private Single instantiateCall(String username, String password, String se userService, credentialsSecureStore, userIdStore, userHandler, authenticatedUserStore, systemInfoRepository, userStore, apiCallErrorCatcher, new LogInDatabaseManager(multiUserDatabaseManager, generalSettingCall), - new LogInExceptions(credentialsSecureStore)).logIn(username, password, serverUrl); + new LogInExceptions(credentialsSecureStore), databaseDeletionHelper).logIn(username, password, serverUrl); } private OngoingStubbing whenAPICall() throws D2Error { diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt index 690e566073..567031c3c3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -32,9 +32,9 @@ import com.nhaarman.mockitokotlin2.mock import com.nhaarman.mockitokotlin2.times import com.nhaarman.mockitokotlin2.verify import okhttp3.ResponseBody +import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper import org.hisp.dhis.android.core.maintenance.D2ErrorCode -import org.hisp.dhis.android.core.wipe.internal.WipeModule import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -45,15 +45,15 @@ import retrofit2.Response class UserAccountDisabledErrorCatcherShould { private lateinit var catcher: UserAccountDisabledErrorCatcher private lateinit var response: Response - private var wipeModule: WipeModule = mock() + private var databaseDeletionHelper: DatabaseDeletionHelper = mock() @Before fun setUp() { - catcher = UserAccountDisabledErrorCatcher(objectMapper(), wipeModule) + catcher = UserAccountDisabledErrorCatcher(objectMapper(), databaseDeletionHelper) - val responseError = - "{\"httpStatus\": \"Unauthorized\",\"httpStatusCode\": 401,\"status\": \"ERROR\",\"message\": \"Account disabled\"}" - response = Response.error(401, ResponseBody.create(null, responseError)) + val responseError = "{\"httpStatus\": \"Unauthorized\",\"httpStatusCode\": 401,\"status\": \"ERROR\"," + + "\"message\": \"Account disabled\"}" + response = Response.error(401, ResponseBody.create(null, responseError)) } @Test @@ -62,8 +62,8 @@ class UserAccountDisabledErrorCatcherShould { } @Test - fun wipeData() { + fun delete_database() { catcher.catchError(response) - verify(wipeModule, times(1)).wipeData() + verify(databaseDeletionHelper, times(1)).deleteActiveDatabase() } -} \ No newline at end of file +} From 9860ebbbdd28625ab60367e4a40350688956b5a1 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 25 Feb 2022 17:58:56 +0100 Subject: [PATCH 183/253] [androsdk-402] Refactor code --- .../android/core/arch/api/executors/internal/APIErrorMapper.kt | 2 +- .../core/user/internal/UserAccountDisabledErrorCatcherShould.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt index 8b3bf08ddd..740b7019e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt @@ -150,7 +150,7 @@ internal class APIErrorMapper @Inject constructor() { getIfNotEmpty(response.message()) ?: getIfNotEmpty(response.errorBody()!!.string()) ?: getIfNotEmpty(response.errorBody().toString()) - } catch (e: Exception) { + } catch (e: IOException) { null } diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt index 567031c3c3..391e5f13c5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -52,7 +52,7 @@ class UserAccountDisabledErrorCatcherShould { catcher = UserAccountDisabledErrorCatcher(objectMapper(), databaseDeletionHelper) val responseError = "{\"httpStatus\": \"Unauthorized\",\"httpStatusCode\": 401,\"status\": \"ERROR\"," + - "\"message\": \"Account disabled\"}" + "\"message\": \"Account disabled\"}" response = Response.error(401, ResponseBody.create(null, responseError)) } From 82b7f7627521371438e489ce6955c0f8dd85b1ea Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 8 Mar 2022 12:49:31 +0100 Subject: [PATCH 184/253] [androsdk-402] Detect disable users on RxAPICalls too --- .../executors/internal/RxAPICallExecutorImpl.kt | 11 ++++++++--- .../internal/UserAccountDisabledErrorCatcher.kt | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt index ececf602e2..3c654c34d9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt @@ -37,13 +37,15 @@ import org.hisp.dhis.android.core.arch.db.access.Transaction import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectStore import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.internal.ForeignKeyCleaner +import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher @Reusable internal class RxAPICallExecutorImpl @Inject constructor( private val databaseAdapter: DatabaseAdapter, private val errorStore: ObjectStore, private val errorMapper: APIErrorMapper, - private val foreignKeyCleaner: ForeignKeyCleaner + private val foreignKeyCleaner: ForeignKeyCleaner, + private val userAccountDisabledErrorCatcher: UserAccountDisabledErrorCatcher ) : RxAPICallExecutor { override fun

wrapSingle(single: Single

, storeError: Boolean): Single

{ @@ -86,10 +88,13 @@ internal class RxAPICallExecutorImpl @Inject constructor( } private fun mapAndStore(throwable: Throwable, storeError: Boolean): D2Error { - // TODO Delete db if user is disabled - val d2Error = + var d2Error = if (throwable is D2Error) throwable else errorMapper.mapRetrofitException(throwable, errorMapper.rxObjectErrorBuilder) + if (userAccountDisabledErrorCatcher.isUserAccountLocked(throwable)) { + val errorCode = userAccountDisabledErrorCatcher.catchError(throwable) + d2Error = d2Error.toBuilder().errorCode(errorCode).build() + } if (storeError) { errorStore.insert(d2Error) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index 26bdde05e5..a548f339a3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -35,6 +35,7 @@ import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatche import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import retrofit2.HttpException import retrofit2.Response @Reusable @@ -65,4 +66,18 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( false } } + + fun catchError(throwable: Throwable): D2ErrorCode? { + val response = (throwable as HttpException).response()!! + return catchError(response) + } + + fun isUserAccountLocked(throwable: Throwable): Boolean { + return try { + val response = (throwable as HttpException).response()!! + isUserAccountLocked(response) + } catch (e: Exception) { + false + } + } } From 7017100554a83b7724f25385f1ab4c0a337920fa Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 8 Mar 2022 12:50:20 +0100 Subject: [PATCH 185/253] [androsdk-402] Add test for rxApiCall executor --- .../core/user/UserDisabledMockIntegrationShould.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt index c224664e7a..ac267dd0e2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt @@ -50,6 +50,20 @@ class UserDisabledMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueab assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) } + @Test + fun delete_database_when_user_disabled_on_rx_api_call_executor() { + dhis2MockServer.enqueueMockResponse(401, "user/user_disabled.json") + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) + + try { + d2.eventModule().eventDownloader().blockingDownload() + } catch (e: Exception) { + val d2Error = e.cause as D2Error + assertThat(d2Error.errorCode()).isEqualTo(D2ErrorCode.USER_ACCOUNT_DISABLED) + } + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(0) + } + private fun addDummyData() { d2.dataValueModule().dataValues().value( "20191021", From ccda1c97b82936caa005ba98252080b2c53da2aa Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 8 Mar 2022 14:25:28 +0100 Subject: [PATCH 186/253] [androsdk-402] Detekt and refactor tests --- .../event/internal/EventAPIRealShould.java | 1 - .../user/UserDisabledMockIntegrationShould.kt | 14 --------- .../UserDisabledRxAPIMockIntegrationShould.kt | 29 +++++++++++++++++++ .../access/internal/DatabaseDeletionHelper.kt | 3 +- .../android/core/user/internal/LogInCall.kt | 1 + .../UserAccountDisabledErrorCatcher.kt | 1 + 6 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java index 349fb54711..65c4131787 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java @@ -38,7 +38,6 @@ import org.hisp.dhis.android.core.imports.internal.EventWebResponse; import org.hisp.dhis.android.core.maintenance.D2Error; import org.hisp.dhis.android.core.organisationunit.OrganisationUnitMode; -import org.hisp.dhis.android.core.user.internal.UserAccountDisabledErrorCatcher; import org.junit.Assert; import org.junit.Before; diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt index ac267dd0e2..c224664e7a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt @@ -50,20 +50,6 @@ class UserDisabledMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueab assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) } - @Test - fun delete_database_when_user_disabled_on_rx_api_call_executor() { - dhis2MockServer.enqueueMockResponse(401, "user/user_disabled.json") - assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) - - try { - d2.eventModule().eventDownloader().blockingDownload() - } catch (e: Exception) { - val d2Error = e.cause as D2Error - assertThat(d2Error.errorCode()).isEqualTo(D2ErrorCode.USER_ACCOUNT_DISABLED) - } - assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(0) - } - private fun addDummyData() { d2.dataValueModule().dataValues().value( "20191021", diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt new file mode 100644 index 0000000000..460045c145 --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt @@ -0,0 +1,29 @@ +package org.hisp.dhis.android.core.user + +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyEnqueable +import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestMetadataEnqueable +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.After +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class UserDisabledRxAPIMockIntegrationShould : BaseMockIntegrationTestEmptyEnqueable() { + + //@Test + fun delete_database_when_user_disabled_on_rx_api_call_executor() { + dhis2MockServer.enqueueMockResponse(401, "user/user_disabled.json") + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) + + try { + d2.eventModule().eventDownloader().blockingDownload() + } catch (e: Exception) { + val d2Error = e.cause as D2Error + assertThat(d2Error.errorCode()).isEqualTo(D2ErrorCode.USER_ACCOUNT_DISABLED) + } + assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(0) + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt index 2d126c1085..623e239c56 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.arch.db.access.internal import dagger.Reusable +import java.io.IOException import javax.inject.Inject import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore @@ -41,7 +42,7 @@ internal class DatabaseDeletionHelper @Inject internal constructor( private val credentialsSecureStore: CredentialsSecureStore ) { fun deleteActiveDatabase() { - val credentials = credentialsSecureStore.get() ?: throw RuntimeException("No active database") + val credentials = credentialsSecureStore.get() ?: throw IOException("No active database") deleteDatabase(credentials.serverUrl, credentials.username) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index 108b6dd455..8d23facea8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -103,6 +103,7 @@ internal class LogInCall @Inject internal constructor( } } + @Suppress("TooGenericExceptionCaught") private fun handleOnlineException(d2Error: D2Error, credentials: Credentials?): D2Error { return if (d2Error.errorCode() == D2ErrorCode.USER_ACCOUNT_DISABLED) { try { diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index a548f339a3..e3e41747ee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -39,6 +39,7 @@ import retrofit2.HttpException import retrofit2.Response @Reusable +@Suppress("TooGenericExceptionCaught") internal class UserAccountDisabledErrorCatcher @Inject constructor( private val objectMapper: ObjectMapper, private val databaseDeletionHelper: DatabaseDeletionHelper From 8238ed053c0f42e065d604de5c026384487212a1 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 8 Mar 2022 14:27:50 +0100 Subject: [PATCH 187/253] [androsdk-402] Fix SMSModuleWiper --- .../org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt index 5d9fe7bc07..efaf5c1e2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt @@ -33,7 +33,6 @@ import javax.inject.Inject import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmissionTableInfo -import org.hisp.dhis.android.core.wipe.internal.ModuleWiper import org.hisp.dhis.android.core.wipe.internal.TableWiper @Reusable From da90a52186d882c6d5fe38da7620dc4e7a0ce31a Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Wed, 9 Mar 2022 16:37:51 +0100 Subject: [PATCH 188/253] [androsdk-402] Modify call executors to store error bodies --- .../user/UserDisabledMockIntegrationShould.kt | 4 +-- .../UserDisabledRxAPIMockIntegrationShould.kt | 6 ++--- .../executors/internal/APICallErrorCatcher.kt | 2 +- .../internal/APICallExecutorImpl.java | 26 +++++++++++-------- .../api/executors/internal/APIErrorMapper.kt | 16 ++++++++++-- .../core/sms/internal/SMSModuleWiper.kt | 2 +- ...ttributeReservedValueCallErrorCatcher.java | 11 +++----- .../TrackedEntityInstanceCallErrorCatcher.kt | 7 ++--- .../TrackedEntityInstanceQueryErrorCatcher.kt | 11 +++----- .../importer/internal/JobQueryErrorCatcher.kt | 2 +- .../UserAccountDisabledErrorCatcher.kt | 14 +++++----- .../UserAuthenticateCallErrorCatcher.java | 2 +- .../internal/APICallExecutorShould.java | 4 +-- ...edEntityInstanceQueryErrorCatcherShould.kt | 12 ++++++--- .../internal/LogInCallErrorCatcherShould.java | 15 +++++++---- .../UserAccountDisabledErrorCatcherShould.kt | 5 ++-- 16 files changed, 79 insertions(+), 60 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt index c224664e7a..9955737730 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt @@ -6,9 +6,11 @@ import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestMetadataEnqueable import org.hisp.dhis.android.core.utils.runner.D2JunitRunner import org.junit.After +import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith +@Ignore("Test for db deletion on user disabled. Only to be executed on demand") @RunWith(D2JunitRunner::class) class UserDisabledMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueable() { @@ -20,7 +22,6 @@ class UserDisabledMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueab @Test fun delete_database_when_user_disabled() { - // Enqueue user disabled response dhis2MockServer.enqueueMockResponse(401, "user/user_disabled.json") addDummyData() assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) @@ -36,7 +37,6 @@ class UserDisabledMockIntegrationShould : BaseMockIntegrationTestMetadataEnqueab @Test fun do_not_delete_database_when_user_has_bad_credentials() { - // Enqueue user bad credentials response dhis2MockServer.enqueueMockResponse(401, "user/user_unauthorized.json") addDummyData() assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt index 460045c145..4814a9daca 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt @@ -4,16 +4,16 @@ import com.google.common.truth.Truth.assertThat import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestEmptyEnqueable -import org.hisp.dhis.android.core.utils.integration.mock.BaseMockIntegrationTestMetadataEnqueable import org.hisp.dhis.android.core.utils.runner.D2JunitRunner -import org.junit.After +import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith +@Ignore("Test for db deletion on user disabled. Only to be executed on demand") @RunWith(D2JunitRunner::class) class UserDisabledRxAPIMockIntegrationShould : BaseMockIntegrationTestEmptyEnqueable() { - //@Test + @Test fun delete_database_when_user_disabled_on_rx_api_call_executor() { dhis2MockServer.enqueueMockResponse(401, "user/user_disabled.json") assertThat(d2.userModule().accountManager().getAccounts().size).isEqualTo(1) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt index 4e4db04b90..2e81397262 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt @@ -36,5 +36,5 @@ internal interface APICallErrorCatcher { fun mustBeStored(): Boolean? @Throws(IOException::class) - fun catchError(response: Response<*>): D2ErrorCode? + fun catchError(response: Response<*>, errorBody: String): D2ErrorCode? } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java index 4cdc0bd81b..1afb336636 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java @@ -45,6 +45,7 @@ import javax.inject.Inject; import dagger.Reusable; +import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Response; @@ -98,14 +99,17 @@ private

P executeObjectCallInternal(Call

call, Response

response = call.execute(); if (response.isSuccessful()) { return processSuccessfulResponse(errorBuilder(call), response, emptyBodyExpected); - } else if (userAccountDisabledErrorCatcher.isUserAccountLocked(response)) { - this.catchAndThrow(userAccountDisabledErrorCatcher, errorBuilder(call), response); - } else if (errorClass != null && acceptedErrorCodes.contains(response.code())) { - return ObjectMapperFactory.objectMapper().readValue(response.errorBody().string(), errorClass); - } else if (errorCatcher != null) { - this.catchAndThrow(errorCatcher, errorBuilder(call), response); + } else { + String errorBody = errorMapper.getErrorBody(response); + if (userAccountDisabledErrorCatcher.isUserAccountLocked(response, errorBody)) { + this.catchAndThrow(userAccountDisabledErrorCatcher, errorBuilder(call), response, errorBody); + } else if (errorClass != null && acceptedErrorCodes.contains(response.code())) { + return ObjectMapperFactory.objectMapper().readValue(errorBody, errorClass); + } else if (errorCatcher != null) { + this.catchAndThrow(errorCatcher, errorBuilder(call), response, errorBody); + } + throw storeAndReturn(errorMapper.responseException(errorBuilder(call), response, errorBody)); } - throw storeAndReturn(errorMapper.responseException(errorBuilder(call), response)); } catch (D2Error d2Error) { throw d2Error; } catch (Throwable t) { @@ -114,11 +118,11 @@ private

P executeObjectCallInternal(Call

call, } private

void catchAndThrow(APICallErrorCatcher errorCatcher, D2Error.Builder errorBuilder, - Response

response) throws IOException, D2Error { - D2ErrorCode d2ErrorCode = errorCatcher.catchError(response); + Response

response, String errorBody) throws IOException, D2Error { + D2ErrorCode d2ErrorCode = errorCatcher.catchError(response, errorBody); if (d2ErrorCode != null) { - D2Error d2error = errorMapper.responseException(errorBuilder, response, d2ErrorCode); + D2Error d2error = errorMapper.responseException(errorBuilder, response, d2ErrorCode, errorBody); if (errorCatcher.mustBeStored()) { throw storeAndReturn(d2error); @@ -133,7 +137,7 @@ private

P processSuccessfulResponse(D2Error.Builder errorBuilder, Response

, - errorCode: D2ErrorCode? = D2ErrorCode.API_UNSUCCESSFUL_RESPONSE + errorCode: D2ErrorCode? = D2ErrorCode.API_UNSUCCESSFUL_RESPONSE, + errorBody: String? ): D2Error { - val serverMessage = getServerMessage(response) + val serverMessage = errorBody ?: getServerMessage(response) Log.e(this.javaClass.simpleName, serverMessage) return errorBuilder .errorCode(errorCode) @@ -156,4 +157,15 @@ internal class APIErrorMapper @Inject constructor() { return message ?: "No server message" } + + fun getErrorBody(response: Response<*>): String { + val errorBody = + try { + getIfNotEmpty(response.errorBody()!!.string()) ?: getIfNotEmpty(response.errorBody().toString()) + } catch (e: IOException) { + null + } + + return errorBody ?: "No error message" + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt index efaf5c1e2c..c9850f9043 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt @@ -28,11 +28,11 @@ package org.hisp.dhis.android.core.sms.internal import dagger.Reusable -import org.hisp.dhis.android.core.wipe.internal.ModuleWiper import javax.inject.Inject import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSConfigTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSMetadataIdTableInfo import org.hisp.dhis.android.core.sms.data.localdbrepository.internal.SMSOngoingSubmissionTableInfo +import org.hisp.dhis.android.core.wipe.internal.ModuleWiper import org.hisp.dhis.android.core.wipe.internal.TableWiper @Reusable diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java index df072524a6..e6759a442c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java @@ -43,15 +43,12 @@ public Boolean mustBeStored() { } @Override - public D2ErrorCode catchError(Response response) throws IOException { - - String errorResponse = response.errorBody().string(); - - if (errorResponse.contains("Not enough values left to reserve")) { + public D2ErrorCode catchError(Response response, String errorBody) throws IOException { + if (errorBody.contains("Not enough values left to reserve")) { return D2ErrorCode.NOT_ENOUGH_VALUES_LEFT_TO_RESERVE_ON_SERVER; - } else if (errorResponse.contains("Generation and reservation of values took too long")) { + } else if (errorBody.contains("Generation and reservation of values took too long")) { return D2ErrorCode.VALUES_RESERVATION_TOOK_TOO_LONG; - } else if (errorResponse.contains("You might be running low on available values")) { + } else if (errorBody.contains("You might be running low on available values")) { return D2ErrorCode.MIGHT_BE_RUNNING_LOW_ON_AVAILABLE_VALUES; } else if (response.code() == 409) { return D2ErrorCode.COULD_NOT_RESERVE_VALUE_ON_SERVER; diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt index 99d0be8e06..71a6b10e5a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt @@ -41,11 +41,8 @@ internal class TrackedEntityInstanceCallErrorCatcher : APICallErrorCatcher { } @Throws(IOException::class) - override fun catchError(response: Response<*>): D2ErrorCode? { - val parsed = objectMapper().readValue( - response.errorBody()!!.string(), - HttpMessageResponse::class.java - ) + override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode? { + val parsed = objectMapper().readValue(errorBody, HttpMessageResponse::class.java) @Suppress("MagicNumber") return if (parsed.httpStatusCode() == 401) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt index 599cc12df4..bee9f376fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt @@ -43,7 +43,7 @@ internal class TrackedEntityInstanceQueryErrorCatcher : APICallErrorCatcher { } @SuppressWarnings("MagicNumber") - override fun catchError(response: Response<*>): D2ErrorCode? { + override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode { return when { response.code() == HttpsURLConnection.HTTP_REQ_TOO_LONG -> D2ErrorCode.TOO_MANY_ORG_UNITS @@ -52,16 +52,13 @@ internal class TrackedEntityInstanceQueryErrorCatcher : APICallErrorCatcher { D2ErrorCode.TOO_MANY_REQUESTS else -> - parseErrorMessage(response) + parseErrorMessage(errorBody) } } - private fun parseErrorMessage(response: Response<*>): D2ErrorCode { + private fun parseErrorMessage(errorBody: String): D2ErrorCode { return try { - val parsed = objectMapper().readValue( - response.errorBody()!!.string(), - HttpMessageResponse::class.java - ) + val parsed = objectMapper().readValue(errorBody, HttpMessageResponse::class.java) if (parsed.httpStatusCode() == HttpsURLConnection.HTTP_CONFLICT) { when { parsed.message() == "maxteicountreached" -> D2ErrorCode.MAX_TEI_COUNT_REACHED diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt index 5a36621f1f..095aed0216 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt @@ -37,7 +37,7 @@ internal class JobQueryErrorCatcher : APICallErrorCatcher { override fun mustBeStored(): Boolean = false - override fun catchError(response: Response<*>): D2ErrorCode? { + override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode? { return if (response.code() == HttpURLConnection.HTTP_NOT_FOUND) { D2ErrorCode.JOB_REPORT_NOT_AVAILABLE } else { diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index e3e41747ee..270636feb6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -49,7 +49,7 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( return true } - override fun catchError(response: Response<*>): D2ErrorCode? { + override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode? { return try { databaseDeletionHelper.deleteActiveDatabase() D2ErrorCode.USER_ACCOUNT_DISABLED @@ -58,11 +58,11 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( } } - fun isUserAccountLocked(response: Response<*>): Boolean { + fun isUserAccountLocked(response: Response<*>, errorBody: String?): Boolean { return try { val isUnauthorized = response.code() == HttpURLConnection.HTTP_UNAUTHORIZED - val errorBody = objectMapper.readValue(response.errorBody()!!.string(), HttpMessageResponse::class.java) - isUnauthorized && errorBody.message().contains("Account disabled") + val responseErrorBody = objectMapper.readValue(errorBody, HttpMessageResponse::class.java) + isUnauthorized && responseErrorBody.message().contains("Account disabled") } catch (e: Exception) { false } @@ -70,13 +70,15 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( fun catchError(throwable: Throwable): D2ErrorCode? { val response = (throwable as HttpException).response()!! - return catchError(response) + val errorBody = response.errorBody()?.string() ?: "No error" + return catchError(response, errorBody) } fun isUserAccountLocked(throwable: Throwable): Boolean { return try { val response = (throwable as HttpException).response()!! - isUserAccountLocked(response) + val errorBody = response.errorBody()?.string() + isUserAccountLocked(response, errorBody) } catch (e: Exception) { false } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.java index 5f73abbd97..125e9e7da7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.java @@ -60,7 +60,7 @@ public Boolean mustBeStored() { } @Override - public D2ErrorCode catchError(Response response) { + public D2ErrorCode catchError(Response response, String errorBody) { String errorBodyStr = null; if (response.errorBody() != null) { diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java index 88fb51da93..74895231cb 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java @@ -196,7 +196,7 @@ public void call_error_catcher_when_account_disabled() throws IOException { "Account disabled")); when(objectAPICall.execute()).thenReturn(disabledResponse); - when(userAccountDisabledErrorCatcher.isUserAccountLocked(any())).thenReturn(true); + when(userAccountDisabledErrorCatcher.isUserAccountLocked(any(), any())).thenReturn(true); try { apiCallExecutor.executeObjectCall(objectAPICall); @@ -204,6 +204,6 @@ public void call_error_catcher_when_account_disabled() throws IOException { //Empty block } - verify(userAccountDisabledErrorCatcher).catchError(any()); + verify(userAccountDisabledErrorCatcher).catchError(any(), any()); } } \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt index d7467c356f..c003d3f630 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt @@ -45,7 +45,8 @@ class TrackedEntityInstanceQueryErrorCatcherShould { val response = Response.error(HttpsURLConnection.HTTP_REQ_TOO_LONG, ResponseBody.create(null, "")) - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.TOO_MANY_ORG_UNITS) + assertThat(catcher.catchError(response, response.errorBody()!!.string())) + .isEqualTo(D2ErrorCode.TOO_MANY_ORG_UNITS) } @Test @@ -59,7 +60,8 @@ class TrackedEntityInstanceQueryErrorCatcherShould { }""" val response = Response.error(409, ResponseBody.create(null, responseError)) - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.MAX_TEI_COUNT_REACHED) + assertThat(catcher.catchError(response, response.errorBody()!!.string())) + .isEqualTo(D2ErrorCode.MAX_TEI_COUNT_REACHED) } @Test @@ -73,7 +75,8 @@ class TrackedEntityInstanceQueryErrorCatcherShould { }""" val response = Response.error(409, ResponseBody.create(null, responseError)) - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.ORGUNIT_NOT_IN_SEARCH_SCOPE) + assertThat(catcher.catchError(response, response.errorBody()!!.string())) + .isEqualTo(D2ErrorCode.ORGUNIT_NOT_IN_SEARCH_SCOPE) } @Test @@ -87,6 +90,7 @@ class TrackedEntityInstanceQueryErrorCatcherShould { }""" val response = Response.error(409, ResponseBody.create(null, responseError)) - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.MIN_SEARCH_ATTRIBUTES_REQUIRED) + assertThat(catcher.catchError(response, response.errorBody()!!.string())) + .isEqualTo(D2ErrorCode.MIN_SEARCH_ATTRIBUTES_REQUIRED) } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java index ecc11c336c..e936a2b3b6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java @@ -54,34 +54,39 @@ public void setUp() { public void return_bad_credentials_error_for_expected_error_response() { String responseError = "{\"httpStatus\":\"Unauthorized\",\"httpStatusCode\":401,\"status\":\"ERROR\",\"message\":\"Unauthorized\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.BAD_CREDENTIALS); + String errorBody = response.errorBody().toString(); + assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.BAD_CREDENTIALS); } @Test public void return_bad_credentials_error_for_other_messages() { String responseError = "{\"httpStatus\":\"Unauthorized\",\"httpStatusCode\":401,\"status\":\"ERROR\",\"message\":\"Something new\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.BAD_CREDENTIALS); + String errorBody = response.errorBody().toString(); + assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.BAD_CREDENTIALS); } @Test public void return_account_locked() { String responseError = "{\"httpStatus\":\"Unauthorized\",\"httpStatusCode\":401,\"status\":\"ERROR\",\"message\":\"Account locked\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.USER_ACCOUNT_LOCKED); + String errorBody = response.errorBody().toString(); + assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.USER_ACCOUNT_LOCKED); } @Test public void return_no_dhis_server_for_another_json() { String responseError = "{\"other\":\"JSON\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.NO_DHIS2_SERVER); + String errorBody = response.errorBody().toString(); + assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.NO_DHIS2_SERVER); } @Test public void return_no_dhis_server_for_non_json() { String responseError = "ERROR"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.NO_DHIS2_SERVER); + String errorBody = response.errorBody().toString(); + assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.NO_DHIS2_SERVER); } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt index 391e5f13c5..d2113c7857 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -58,12 +58,13 @@ class UserAccountDisabledErrorCatcherShould { @Test fun return_account_disabled() { - Truth.assertThat(catcher.catchError(response)).isEqualTo(D2ErrorCode.USER_ACCOUNT_DISABLED) + Truth.assertThat(catcher.catchError(response, response.errorBody()!!.string())) + .isEqualTo(D2ErrorCode.USER_ACCOUNT_DISABLED) } @Test fun delete_database() { - catcher.catchError(response) + catcher.catchError(response, response.errorBody()!!.string()) verify(databaseDeletionHelper, times(1)).deleteActiveDatabase() } } From ce51216ede2368002432399401a6ee80fbad5a36 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Wed, 16 Mar 2022 14:50:26 +0100 Subject: [PATCH 189/253] [androsdk-402] Remove import --- .../core/arch/api/executors/internal/APICallExecutorImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java index 1afb336636..08b86f9138 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java @@ -45,7 +45,6 @@ import javax.inject.Inject; import dagger.Reusable; -import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Response; From 0ce267df698b5f677a85977191b3ce633dd45278 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 17 Mar 2022 12:01:26 +0100 Subject: [PATCH 190/253] [androsdk-402] update database deletion --- .../arch/db/access/internal/DatabaseDeletionHelper.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt index 623e239c56..7787541d79 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt @@ -49,7 +49,12 @@ internal class DatabaseDeletionHelper @Inject internal constructor( fun deleteDatabase(serverUrl: String, username: String) { val account = DatabaseConfigurationHelper.getAccount(databaseConfigurationSecureStore.get(), serverUrl, username) - databaseAdapterFactory.deleteDatabase(account) - databaseConfigurationSecureStore.remove() + + if (account != null) { + databaseAdapterFactory.deleteDatabase(account) + val updatedConfiguration = + DatabaseConfigurationHelper.removeAccount(databaseConfigurationSecureStore.get(), listOf(account)) + databaseConfigurationSecureStore.set(updatedConfiguration) + } } } From 7778867619a90bdf6d4bf45f3d57330184759c43 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Mar 2022 18:51:42 +0100 Subject: [PATCH 191/253] [androsdk-402] Use account manager to handle db deletion --- .../access/internal/DatabaseDeletionHelper.kt | 60 ------------------- .../dhis/android/core/user/AccountManager.kt | 4 ++ .../core/user/internal/AccountManagerImpl.kt | 30 ++++++---- .../android/core/user/internal/LogInCall.kt | 7 ++- .../UserAccountDisabledErrorCatcher.kt | 5 +- 5 files changed, 28 insertions(+), 78 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt deleted file mode 100644 index 7787541d79..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDeletionHelper.kt +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.android.core.arch.db.access.internal - -import dagger.Reusable -import java.io.IOException -import javax.inject.Inject -import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore -import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore -import org.hisp.dhis.android.core.configuration.internal.DatabaseConfigurationHelper -import org.hisp.dhis.android.core.configuration.internal.DatabasesConfiguration - -@Reusable -internal class DatabaseDeletionHelper @Inject internal constructor( - private val databaseAdapterFactory: DatabaseAdapterFactory, - private val databaseConfigurationSecureStore: ObjectKeyValueStore, - private val credentialsSecureStore: CredentialsSecureStore -) { - fun deleteActiveDatabase() { - val credentials = credentialsSecureStore.get() ?: throw IOException("No active database") - deleteDatabase(credentials.serverUrl, credentials.username) - } - - fun deleteDatabase(serverUrl: String, username: String) { - val account = - DatabaseConfigurationHelper.getAccount(databaseConfigurationSecureStore.get(), serverUrl, username) - - if (account != null) { - databaseAdapterFactory.deleteDatabase(account) - val updatedConfiguration = - DatabaseConfigurationHelper.removeAccount(databaseConfigurationSecureStore.get(), listOf(account)) - databaseConfigurationSecureStore.set(updatedConfiguration) - } - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index 95c991dc79..5d89a61590 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -29,6 +29,7 @@ package org.hisp.dhis.android.core.user import kotlin.jvm.Throws +import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount import org.hisp.dhis.android.core.maintenance.D2Error @@ -41,4 +42,7 @@ interface AccountManager { @Throws(D2Error::class) fun deleteCurrentAccount() + + @Throws(D2Error::class) + fun deleteAccount(credentials: Credentials) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index 8a6f7ea2fa..eba767f704 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -33,6 +33,7 @@ import dagger.Reusable import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper +import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.arch.storage.internal.CredentialsSecureStore import org.hisp.dhis.android.core.arch.storage.internal.ObjectKeyValueStore import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount @@ -76,18 +77,23 @@ internal class AccountManagerImpl @Inject constructor( .errorComponent(D2ErrorComponent.SDK) .build() } else { - logOutCall.logOut().blockingAwait() - val configuration = databasesConfigurationStore.get() - val loggedAccount = DatabaseConfigurationHelper.getLoggedAccount( - configuration, - credentials.username, - credentials.serverUrl - ) - val updatedConfiguration = DatabaseConfigurationHelper.removeAccount(configuration, listOf(loggedAccount)) - databasesConfigurationStore.set(updatedConfiguration) - - FileResourceDirectoryHelper.deleteFileResourceDirectory(context, loggedAccount) - databaseAdapterFactory.deleteDatabase(loggedAccount) + deleteAccount(credentials) } } + + @Throws(D2Error::class) + override fun deleteAccount(credentials: Credentials) { + logOutCall.logOut().blockingAwait() + val configuration = databasesConfigurationStore.get() + val loggedAccount = DatabaseConfigurationHelper.getLoggedAccount( + configuration, + credentials.username, + credentials.serverUrl + ) + val updatedConfiguration = DatabaseConfigurationHelper.removeAccount(configuration, listOf(loggedAccount)) + databasesConfigurationStore.set(updatedConfiguration) + + FileResourceDirectoryHelper.deleteFileResourceDirectory(context, loggedAccount) + databaseAdapterFactory.deleteDatabase(loggedAccount) + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index 8d23facea8..8b3ebeb522 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -34,7 +34,6 @@ import net.openid.appauth.AuthState import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.api.internal.ServerURLWrapper import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter -import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore import org.hisp.dhis.android.core.arch.handlers.internal.Handler @@ -65,7 +64,7 @@ internal class LogInCall @Inject internal constructor( private val apiCallErrorCatcher: UserAuthenticateCallErrorCatcher, private val databaseManager: LogInDatabaseManager, private val exceptions: LogInExceptions, - private val databaseDeletionHelper: DatabaseDeletionHelper + private val accountManager: AccountManagerImpl ) { fun logIn(username: String?, password: String?, serverUrl: String?): Single { return Single.fromCallable { @@ -107,7 +106,9 @@ internal class LogInCall @Inject internal constructor( private fun handleOnlineException(d2Error: D2Error, credentials: Credentials?): D2Error { return if (d2Error.errorCode() == D2ErrorCode.USER_ACCOUNT_DISABLED) { try { - databaseDeletionHelper.deleteDatabase(credentials!!.serverUrl, credentials.username) + if (credentials != null) { + accountManager.deleteAccount(credentials) + } d2Error } catch (e: Exception) { d2Error diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index 270636feb6..e6627c10e6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -32,7 +32,6 @@ import dagger.Reusable import java.net.HttpURLConnection import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher -import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import org.hisp.dhis.android.core.maintenance.D2ErrorCode import retrofit2.HttpException @@ -42,7 +41,7 @@ import retrofit2.Response @Suppress("TooGenericExceptionCaught") internal class UserAccountDisabledErrorCatcher @Inject constructor( private val objectMapper: ObjectMapper, - private val databaseDeletionHelper: DatabaseDeletionHelper + private val accountManager: AccountManagerImpl ) : APICallErrorCatcher { override fun mustBeStored(): Boolean { @@ -51,7 +50,7 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode? { return try { - databaseDeletionHelper.deleteActiveDatabase() + accountManager.deleteCurrentAccount() D2ErrorCode.USER_ACCOUNT_DISABLED } catch (e: Throwable) { D2ErrorCode.USER_ACCOUNT_DISABLED From cab2be39ec6287fd74d9f1aa8b9831cccf1ad58d Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 18 Mar 2022 18:52:04 +0100 Subject: [PATCH 192/253] [androsdk-402] Fix unit tests --- .../android/core/user/internal/LogInCallUnitShould.java | 5 ++--- .../user/internal/UserAccountDisabledErrorCatcherShould.kt | 7 +++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java index d7dedc2823..a0abcbe5df 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java @@ -42,7 +42,6 @@ import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher; import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor; import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; -import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper; import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableObjectStore; import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore; import org.hisp.dhis.android.core.arch.handlers.internal.Handler; @@ -140,7 +139,7 @@ public class LogInCallUnitShould extends BaseCallShould { private UserAuthenticateCallErrorCatcher apiCallErrorCatcher; @Mock - private DatabaseDeletionHelper databaseDeletionHelper; + private AccountManagerImpl accountManager; // call we are testing private Single logInSingle; @@ -194,7 +193,7 @@ private Single instantiateCall(String username, String password, String se userService, credentialsSecureStore, userIdStore, userHandler, authenticatedUserStore, systemInfoRepository, userStore, apiCallErrorCatcher, new LogInDatabaseManager(multiUserDatabaseManager, generalSettingCall), - new LogInExceptions(credentialsSecureStore), databaseDeletionHelper).logIn(username, password, serverUrl); + new LogInExceptions(credentialsSecureStore), accountManager).logIn(username, password, serverUrl); } private OngoingStubbing whenAPICall() throws D2Error { diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt index d2113c7857..8271231b89 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -32,7 +32,6 @@ import com.nhaarman.mockitokotlin2.mock import com.nhaarman.mockitokotlin2.times import com.nhaarman.mockitokotlin2.verify import okhttp3.ResponseBody -import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseDeletionHelper import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.junit.Before @@ -45,11 +44,11 @@ import retrofit2.Response class UserAccountDisabledErrorCatcherShould { private lateinit var catcher: UserAccountDisabledErrorCatcher private lateinit var response: Response - private var databaseDeletionHelper: DatabaseDeletionHelper = mock() + private var accountManager: AccountManagerImpl = mock() @Before fun setUp() { - catcher = UserAccountDisabledErrorCatcher(objectMapper(), databaseDeletionHelper) + catcher = UserAccountDisabledErrorCatcher(objectMapper(), accountManager) val responseError = "{\"httpStatus\": \"Unauthorized\",\"httpStatusCode\": 401,\"status\": \"ERROR\"," + "\"message\": \"Account disabled\"}" @@ -65,6 +64,6 @@ class UserAccountDisabledErrorCatcherShould { @Test fun delete_database() { catcher.catchError(response, response.errorBody()!!.string()) - verify(databaseDeletionHelper, times(1)).deleteActiveDatabase() + verify(accountManager, times(1)).deleteCurrentAccount() } } From 7df725308f0ed0ac9a3ac9b8557d85181aad0164 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 22 Mar 2022 13:53:29 +0100 Subject: [PATCH 193/253] [androsdk-402] Emit user is disabled before deleting db --- .../android/core/user/UserDisabledEmitter.kt | 47 +++++++++++++++++++ .../core/user/internal/AccountManagerImpl.kt | 3 ++ 2 files changed, 50 insertions(+) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt b/core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt new file mode 100644 index 0000000000..e5d6249c4e --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.user + +import dagger.Reusable +import io.reactivex.Observable +import io.reactivex.subjects.PublishSubject +import javax.inject.Inject + +@Reusable +class UserDisabledEmitter @Inject constructor() { + private val userDisabledSubject = PublishSubject.create() + + fun userDisabledObservable(): Observable { + return userDisabledSubject + } + + internal fun emit() { + userDisabledSubject.onNext(Unit) + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index eba767f704..8a5356e33d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -44,6 +44,7 @@ import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import org.hisp.dhis.android.core.user.AccountManager +import org.hisp.dhis.android.core.user.UserDisabledEmitter @Reusable internal class AccountManagerImpl @Inject constructor( @@ -52,6 +53,7 @@ internal class AccountManagerImpl @Inject constructor( private val databaseAdapterFactory: DatabaseAdapterFactory, private val credentialsSecureStore: CredentialsSecureStore, private val logOutCall: LogOutCall, + private val userDisabledEmitter: UserDisabledEmitter, private val context: Context ) : AccountManager { override fun getAccounts(): List { @@ -83,6 +85,7 @@ internal class AccountManagerImpl @Inject constructor( @Throws(D2Error::class) override fun deleteAccount(credentials: Credentials) { + userDisabledEmitter.emit() logOutCall.logOut().blockingAwait() val configuration = databasesConfigurationStore.get() val loggedAccount = DatabaseConfigurationHelper.getLoggedAccount( From bdb2b9a377ff2c9a11d224e75bca33d182a51047 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 22 Mar 2022 14:27:41 +0100 Subject: [PATCH 194/253] [androsdk-402] Add userDisabledEmitter to user module --- .../org/hisp/dhis/android/core/user/UserModule.java | 1 + .../android/core/user/internal/UserModuleImpl.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java index 844af96a67..0e44cfcdd9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java @@ -49,4 +49,5 @@ public interface UserModule { boolean blockingIsLogged(); OpenIDConnectHandler openIdHandler(); + UserDisabledEmitter userDisabledEmitter(); } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java index 4538a2110e..a13d4ea6a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java @@ -34,6 +34,7 @@ import org.hisp.dhis.android.core.user.AuthorityCollectionRepository; import org.hisp.dhis.android.core.user.User; import org.hisp.dhis.android.core.user.UserCredentialsObjectRepository; +import org.hisp.dhis.android.core.user.UserDisabledEmitter; import org.hisp.dhis.android.core.user.UserModule; import org.hisp.dhis.android.core.user.UserObjectRepository; import org.hisp.dhis.android.core.user.UserRoleCollectionRepository; @@ -63,6 +64,8 @@ public final class UserModuleImpl implements UserModule { private final OpenIDConnectHandler openIDConnectHandler; + private final UserDisabledEmitter userDisabledEmitter; + @Inject UserModuleImpl(IsUserLoggedInCallableFactory isUserLoggedInCallFactory, LogOutCall logoutCallCallFactory, @@ -73,7 +76,8 @@ public final class UserModuleImpl implements UserModule { UserCredentialsObjectRepository userCredentials, UserObjectRepository user, AccountManagerImpl accountManager, - OpenIDConnectHandlerImpl openIdHandlerImpl) { + OpenIDConnectHandlerImpl openIdHandlerImpl, + UserDisabledEmitter userDisabledEmitter) { this.isUserLoggedInCallFactory = isUserLoggedInCallFactory; this.logoutCallCallFactory = logoutCallCallFactory; this.logInCall = logInCall; @@ -84,6 +88,7 @@ public final class UserModuleImpl implements UserModule { this.user = user; this.accountManager = accountManager; this.openIDConnectHandler = openIdHandlerImpl; + this.userDisabledEmitter = userDisabledEmitter; } @Override @@ -157,4 +162,10 @@ public AccountManager accountManager() { public OpenIDConnectHandler openIdHandler() { return openIDConnectHandler; } + + @Override + @NonNull + public UserDisabledEmitter userDisabledEmitter() { + return userDisabledEmitter; + } } \ No newline at end of file From 27372c0799701ca08a537608be30666212428324 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 22 Mar 2022 14:59:53 +0100 Subject: [PATCH 195/253] [androsdk-402] Move logic to account manager --- .../dhis/android/core/user/AccountManager.kt | 3 ++ .../android/core/user/UserDisabledEmitter.kt | 47 ------------------- .../dhis/android/core/user/UserModule.java | 1 - .../core/user/internal/AccountManagerImpl.kt | 14 ++++-- .../core/user/internal/UserModuleImpl.java | 13 +---- 5 files changed, 14 insertions(+), 64 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index 5d89a61590..931d45f889 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.user +import io.reactivex.Observable import kotlin.jvm.Throws import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount @@ -45,4 +46,6 @@ interface AccountManager { @Throws(D2Error::class) fun deleteAccount(credentials: Credentials) + + fun accountDeletionObservable(): Observable } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt b/core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt deleted file mode 100644 index e5d6249c4e..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserDisabledEmitter.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.user - -import dagger.Reusable -import io.reactivex.Observable -import io.reactivex.subjects.PublishSubject -import javax.inject.Inject - -@Reusable -class UserDisabledEmitter @Inject constructor() { - private val userDisabledSubject = PublishSubject.create() - - fun userDisabledObservable(): Observable { - return userDisabledSubject - } - - internal fun emit() { - userDisabledSubject.onNext(Unit) - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java index 0e44cfcdd9..844af96a67 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java @@ -49,5 +49,4 @@ public interface UserModule { boolean blockingIsLogged(); OpenIDConnectHandler openIdHandler(); - UserDisabledEmitter userDisabledEmitter(); } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index 8a5356e33d..79b1c57f27 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -30,7 +30,8 @@ package org.hisp.dhis.android.core.user.internal import android.content.Context import dagger.Reusable -import javax.inject.Inject +import io.reactivex.Observable +import io.reactivex.subjects.PublishSubject import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.Credentials @@ -44,7 +45,7 @@ import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import org.hisp.dhis.android.core.user.AccountManager -import org.hisp.dhis.android.core.user.UserDisabledEmitter +import javax.inject.Inject @Reusable internal class AccountManagerImpl @Inject constructor( @@ -53,9 +54,10 @@ internal class AccountManagerImpl @Inject constructor( private val databaseAdapterFactory: DatabaseAdapterFactory, private val credentialsSecureStore: CredentialsSecureStore, private val logOutCall: LogOutCall, - private val userDisabledEmitter: UserDisabledEmitter, private val context: Context ) : AccountManager { + private val accountDeletionSubject = PublishSubject.create() + override fun getAccounts(): List { return databasesConfigurationStore.get()?.accounts() ?: emptyList() } @@ -85,7 +87,7 @@ internal class AccountManagerImpl @Inject constructor( @Throws(D2Error::class) override fun deleteAccount(credentials: Credentials) { - userDisabledEmitter.emit() + accountDeletionSubject.onNext(Unit) logOutCall.logOut().blockingAwait() val configuration = databasesConfigurationStore.get() val loggedAccount = DatabaseConfigurationHelper.getLoggedAccount( @@ -99,4 +101,8 @@ internal class AccountManagerImpl @Inject constructor( FileResourceDirectoryHelper.deleteFileResourceDirectory(context, loggedAccount) databaseAdapterFactory.deleteDatabase(loggedAccount) } + + override fun accountDeletionObservable(): Observable { + return accountDeletionSubject + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java index a13d4ea6a5..4538a2110e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java @@ -34,7 +34,6 @@ import org.hisp.dhis.android.core.user.AuthorityCollectionRepository; import org.hisp.dhis.android.core.user.User; import org.hisp.dhis.android.core.user.UserCredentialsObjectRepository; -import org.hisp.dhis.android.core.user.UserDisabledEmitter; import org.hisp.dhis.android.core.user.UserModule; import org.hisp.dhis.android.core.user.UserObjectRepository; import org.hisp.dhis.android.core.user.UserRoleCollectionRepository; @@ -64,8 +63,6 @@ public final class UserModuleImpl implements UserModule { private final OpenIDConnectHandler openIDConnectHandler; - private final UserDisabledEmitter userDisabledEmitter; - @Inject UserModuleImpl(IsUserLoggedInCallableFactory isUserLoggedInCallFactory, LogOutCall logoutCallCallFactory, @@ -76,8 +73,7 @@ public final class UserModuleImpl implements UserModule { UserCredentialsObjectRepository userCredentials, UserObjectRepository user, AccountManagerImpl accountManager, - OpenIDConnectHandlerImpl openIdHandlerImpl, - UserDisabledEmitter userDisabledEmitter) { + OpenIDConnectHandlerImpl openIdHandlerImpl) { this.isUserLoggedInCallFactory = isUserLoggedInCallFactory; this.logoutCallCallFactory = logoutCallCallFactory; this.logInCall = logInCall; @@ -88,7 +84,6 @@ public final class UserModuleImpl implements UserModule { this.user = user; this.accountManager = accountManager; this.openIDConnectHandler = openIdHandlerImpl; - this.userDisabledEmitter = userDisabledEmitter; } @Override @@ -162,10 +157,4 @@ public AccountManager accountManager() { public OpenIDConnectHandler openIdHandler() { return openIDConnectHandler; } - - @Override - @NonNull - public UserDisabledEmitter userDisabledEmitter() { - return userDisabledEmitter; - } } \ No newline at end of file From a70e3ee56d8b6403b8bb03faec50bb4b25e1d198 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Tue, 22 Mar 2022 15:35:38 +0100 Subject: [PATCH 196/253] [androsdk-402] Update imports --- .../hisp/dhis/android/core/user/internal/AccountManagerImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index 79b1c57f27..f8fcfd4a6a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -32,6 +32,7 @@ import android.content.Context import dagger.Reusable import io.reactivex.Observable import io.reactivex.subjects.PublishSubject +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.access.internal.DatabaseAdapterFactory import org.hisp.dhis.android.core.arch.helpers.FileResourceDirectoryHelper import org.hisp.dhis.android.core.arch.storage.internal.Credentials @@ -45,7 +46,6 @@ import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.D2ErrorComponent import org.hisp.dhis.android.core.user.AccountManager -import javax.inject.Inject @Reusable internal class AccountManagerImpl @Inject constructor( From 4316688c2b551086edef5fd3f4e98a00867e740a Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Wed, 23 Mar 2022 12:04:13 +0100 Subject: [PATCH 197/253] [androsdk-402] Make deleteAccount internal --- .../java/org/hisp/dhis/android/core/user/AccountManager.kt | 3 --- .../hisp/dhis/android/core/user/internal/AccountManagerImpl.kt | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index 931d45f889..6804c22caf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -44,8 +44,5 @@ interface AccountManager { @Throws(D2Error::class) fun deleteCurrentAccount() - @Throws(D2Error::class) - fun deleteAccount(credentials: Credentials) - fun accountDeletionObservable(): Observable } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index f8fcfd4a6a..bfcba581d6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -86,7 +86,7 @@ internal class AccountManagerImpl @Inject constructor( } @Throws(D2Error::class) - override fun deleteAccount(credentials: Credentials) { + fun deleteAccount(credentials: Credentials) { accountDeletionSubject.onNext(Unit) logOutCall.logOut().blockingAwait() val configuration = databasesConfigurationStore.get() From 5d65a0942cca46e7a21e8d0e185ed19ae7e2847f Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Wed, 23 Mar 2022 12:31:04 +0100 Subject: [PATCH 198/253] [androsdk-402] Delete import --- .../main/java/org/hisp/dhis/android/core/user/AccountManager.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index 6804c22caf..4c6e0a430e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -30,7 +30,6 @@ package org.hisp.dhis.android.core.user import io.reactivex.Observable import kotlin.jvm.Throws -import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.configuration.internal.DatabaseAccount import org.hisp.dhis.android.core.maintenance.D2Error From 807eb0ed88c47f713ec977411f0351732ef195d8 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 23 Mar 2022 14:45:54 +0100 Subject: [PATCH 199/253] [ANDROSDK-1503] Add missing programStatus properity in TEI download --- .../internal/TrackedEntityInstanceDownloadInternalCall.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index 7f03f4ab55..4bf9b8528d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -163,6 +163,7 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( limit = iterables.bundleLimit ) ) + .programStatus(bundle.programStatus()) .lastUpdatedStr(lastUpdatedManager.getLastUpdatedStr(bundle.commonParams())) .orgUnit(orgUnitUid) .uids(params.uids()) From db1cbd9120f9dc117a8c48a0a7bce2bd496fb28e Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 23 Mar 2022 15:21:12 +0100 Subject: [PATCH 200/253] [ANDROSDK-1503] Do not use programStatus if byUid and not explicitly set --- .../TrackerQueryBundleInternalFactory.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt index 7b567b8bac..4ef6c22eda 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt @@ -94,20 +94,20 @@ internal class TrackerQueryBundleInternalFactory constructor( ) { return enrollmentScopeToProgramStatus(params.programStatus()) } - if (programUid != null && programSettings != null) { - val specificSetting = programSettings.specificSettings()[programUid] - if (specificSetting?.enrollmentDownload() != null) { - return enrollmentScopeToProgramStatus(specificSetting.enrollmentDownload()) + if (params.uids().isNotEmpty()) { + // Do not apply programStatus coming from Settings app if uids are explicitly defined + return null + } + if (programUid != null) { + programSettings?.specificSettings()?.get(programUid)?.enrollmentDownload()?.let { + return enrollmentScopeToProgramStatus(it) } } if (params.programStatus() != null && params.limitByProgram() != null && params.limitByProgram()!!) { return enrollmentScopeToProgramStatus(params.programStatus()) } - if (programSettings != null) { - val globalSetting = programSettings.globalSettings() - if (globalSetting?.enrollmentDownload() != null) { - return enrollmentScopeToProgramStatus(globalSetting.enrollmentDownload()) - } + programSettings?.globalSettings()?.enrollmentDownload()?.let { + return enrollmentScopeToProgramStatus(it) } return null } From 66c5b13889bea37a23da47d0de618fc2d46b10e8 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 24 Mar 2022 10:11:26 +0100 Subject: [PATCH 201/253] fix: [ANDROSDK-1517] Handle non-existing events in the server when deleted --- .../internal/JobReportEnrollmentHandler.kt | 21 +++++++++------ .../internal/JobReportEventHandler.kt | 27 +++++++++++-------- .../internal/JobReportRelationshipHandler.kt | 5 ++++ .../internal/JobReportTrackedEntityHandler.kt | 16 +++++++---- 4 files changed, 45 insertions(+), 24 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt index fe0c84a638..fd7b9830b6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt @@ -75,14 +75,19 @@ internal class JobReportEnrollmentHandler @Inject internal constructor( } override fun storeConflict(errorReport: JobValidationError) { - val enrollment = enrollmentStore.selectByUid(errorReport.uid) - conflictStore.insert( - conflictHelper.getConflictBuilder(errorReport) - .tableReference(EnrollmentTableInfo.TABLE_INFO.name()) - .enrollment(errorReport.uid) - .trackedEntityInstance(enrollment!!.trackedEntityInstance()) - .build() - ) + enrollmentStore.selectByUid(errorReport.uid)?.let { enrollment -> + if (errorReport.errorCode == ImporterError.E1081.name && enrollment.deleted() == true) { + enrollmentStore.delete(enrollment.uid()) + } else { + conflictStore.insert( + conflictHelper.getConflictBuilder(errorReport) + .tableReference(EnrollmentTableInfo.TABLE_INFO.name()) + .enrollment(errorReport.uid) + .trackedEntityInstance(enrollment.trackedEntityInstance()) + .build() + ) + } + } } override fun getRelatedRelationships(uid: String): List { diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt index 3d22a1a075..876434b919 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt @@ -80,18 +80,23 @@ internal class JobReportEventHandler @Inject internal constructor( } override fun storeConflict(errorReport: JobValidationError) { - val event = eventStore.selectByUid(errorReport.uid) - val trackedEntityInstanceUid = event?.enrollment()?.let { - enrollmentStore.selectByUid(it)?.trackedEntityInstance() + eventStore.selectByUid(errorReport.uid)?.let { event -> + val trackedEntityInstanceUid = event.enrollment()?.let { + enrollmentStore.selectByUid(it)?.trackedEntityInstance() + } + if (errorReport.errorCode == ImporterError.E1032.name && event.deleted() == true) { + eventStore.delete(event.uid()) + } else { + conflictStore.insert( + conflictHelper.getConflictBuilder(errorReport) + .tableReference(EventTableInfo.TABLE_INFO.name()) + .trackedEntityInstance(trackedEntityInstanceUid) + .enrollment(event.enrollment()) + .event(errorReport.uid) + .build() + ) + } } - conflictStore.insert( - conflictHelper.getConflictBuilder(errorReport) - .tableReference(EventTableInfo.TABLE_INFO.name()) - .trackedEntityInstance(trackedEntityInstanceUid) - .enrollment(event?.enrollment()) - .event(errorReport.uid) - .build() - ) } override fun getRelatedRelationships(uid: String): List { diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt index 781a6f7a98..7feb8f51bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt @@ -51,6 +51,11 @@ internal class JobReportRelationshipHandler @Inject internal constructor( @Suppress("EmptyFunctionBlock") override fun storeConflict(errorReport: JobValidationError) { + val relationship by lazy { relationshipStore.selectByUid(errorReport.uid) } + + if (errorReport.errorCode == ImporterError.E4005.name && relationship?.deleted() == true) { + relationshipStore.delete(errorReport.uid) + } } override fun getRelatedRelationships(uid: String): List { diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt index 882ed1dfb4..e1b2709ee8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt @@ -58,11 +58,17 @@ internal class JobReportTrackedEntityHandler @Inject internal constructor( } override fun storeConflict(errorReport: JobValidationError) { - conflictStore.insert( - conflictHelper.getConflictBuilder(errorReport) - .tableReference(TrackedEntityInstanceTableInfo.TABLE_INFO.name()) - .trackedEntityInstance(errorReport.uid).build() - ) + trackedEntityStore.selectByUid(errorReport.uid)?.let { trackedEntity -> + if (errorReport.errorCode == ImporterError.E1063.name && trackedEntity.deleted() == true) { + trackedEntityStore.delete(trackedEntity.uid()) + } else { + conflictStore.insert( + conflictHelper.getConflictBuilder(errorReport) + .tableReference(TrackedEntityInstanceTableInfo.TABLE_INFO.name()) + .trackedEntityInstance(errorReport.uid).build() + ) + } + } } override fun getRelatedRelationships(uid: String): List { From 2d57a9f1609251d3b3f87371682fb18ca4a237d0 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 25 Mar 2022 10:19:03 +0100 Subject: [PATCH 202/253] [ANDROSDK-1520] Delete cascade tracker items --- .../children/internal/ChildrenAppender.java | 2 +- ...dWriteWithUidDataObjectRepositoryImpl.java | 12 +- ...CategoryCategoryComboChildrenAppender.java | 2 +- ...ategoryCategoryOptionChildrenAppender.java | 2 +- ...onComboCategoryOptionChildrenAppender.java | 2 +- .../CategoryOptionComboChildrenAppender.java | 2 +- .../internal/CommonPackageDIModule.java | 6 + .../common/internal/TrackerDataManager.kt | 52 ++++++ .../common/internal/TrackerDataManagerImpl.kt | 159 ++++++++++++++++++ .../DataElementLegendSetChildrenAppender.java | 2 +- .../DataInputPeriodChildrenAppender.java | 2 +- ...oryDataElementOperandChildrenAppender.java | 2 +- .../DataSetElementChildrenAppender.java | 2 +- .../SectionDataElementChildrenAppender.java | 2 +- .../SectionGreyedFieldsChildrenAppender.java | 2 +- .../EnrollmentCollectionRepository.java | 14 +- .../EnrollmentObjectRepository.java | 17 +- .../core/event/EventCollectionRepository.java | 14 +- .../core/event/EventObjectRepository.java | 17 +- ...FilterEventDataFilterChildrenAppender.java | 2 +- .../DataSetIndicatorChildrenAppender.java | 2 +- .../internal/LegendChildrenAppender.java | 2 +- .../NoteForEnrollmentChildrenAppender.java | 2 +- .../NoteForEventChildrenAppender.java | 2 +- .../OptionGroupOptionChildrenAppender.java | 2 +- ...ganisationUnitDataSetChildrenAppender.java | 2 +- ...ationUnitGroupProgramChildrenAppender.java | 2 +- ...ganisationUnitProgramChildrenAppender.java | 2 +- ...entValueTypeRenderingChildrenAppender.java | 2 +- ...ramIndicatorLegendSetChildrenAppender.java | 2 +- .../ProgramRuleActionChildrenAppender.java | 2 +- ...ogramSectionAttributeChildrenAppender.java | 2 +- ...ogramStageDataElementChildrenAppender.java | 2 +- ...ageSectionDataElementChildrenAppender.java | 2 +- ...ctionProgramIndicatorChildrenAppender.java | 2 +- ...uteValueTypeRenderingChildrenAppender.java | 2 +- ...gramTrackedEntityTypeChildrenAppender.java | 2 +- .../RelationshipCollectionRepository.java | 14 +- .../RelationshipObjectRepository.java | 27 ++- ...elationshipConstraintChildrenAppender.java | 2 +- ...va => RelationshipItemChildrenAppender.kt} | 45 +++-- ...kedEntityInstanceCollectionRepository.java | 14 +- ...TrackedEntityInstanceObjectRepository.java | 17 +- ...dEntityAttributeValueChildrenAppender.java | 2 +- ...rackedEntityDataValueChildrenAppender.java | 2 +- ...tanceFilterEvenFilterChildrenAppender.java | 2 +- ...edEntityTypeAttributeChildrenAppender.java | 2 +- .../internal/UserRoleChildrenAppender.java | 2 +- 48 files changed, 347 insertions(+), 131 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt rename core/src/main/java/org/hisp/dhis/android/core/relationship/internal/{RelationshipItemChildrenAppender.java => RelationshipItemChildrenAppender.kt} (64%) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java index 1cdede2ad1..e0960bfaa0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java @@ -38,5 +38,5 @@ protected void prepareChildren(Collection collection) { */ } - protected abstract M appendChildren(M m); + public abstract M appendChildren(M m); } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java index 0ad285333d..b6909d3cdd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java @@ -49,7 +49,7 @@ import io.reactivex.Completable; -public class ReadWriteWithUidDataObjectRepositoryImpl +public abstract class ReadWriteWithUidDataObjectRepositoryImpl > extends ReadWriteWithUidObjectRepositoryImpl implements ReadWriteObjectRepository { @@ -97,13 +97,7 @@ public void blockingDelete() throws D2Error { .errorDescription("Tried to delete non existing object") .build(); } else { - if (object.syncState() == State.TO_POST) { - store.delete(object.uid()); - } else { - store.setDeleted(object.uid()); - store.setSyncState(object.uid(), State.TO_UPDATE); - propagateState(object); - } + deleteObject(object); } } @@ -147,4 +141,6 @@ protected Unit updateObject(M m) throws D2Error { protected void propagateState(M m) { // Method is empty because is the default action. } + + protected abstract void deleteObject(M m); } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java index 240cf5c035..55bda70f41 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java @@ -52,7 +52,7 @@ private CategoryCategoryComboChildrenAppender(LinkChildStore optionCombos = store.getForCategoryCombo(categoryCombo.uid()); return builder.categoryOptionCombos(optionCombos).build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java index f252ce1d7f..57a34e13a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java @@ -60,4 +60,10 @@ GenericCallData genericCallData(DatabaseAdapter databaseAdapter, public DataStatePropagator dataStatePropagator(DataStatePropagatorImpl impl) { return impl; } + + @Provides + @Reusable + public TrackerDataManager trackerDataManager(TrackerDataManagerImpl impl) { + return impl; + } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt new file mode 100644 index 0000000000..16d31cef51 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.common.internal + +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance + +internal interface TrackerDataManager { + + fun propagateTrackedEntityUpdate(tei: TrackedEntityInstance?) + + fun propagateEnrollmentUpdate(enrollment: Enrollment?) + + fun propagateEventUpdate(event: Event?) + + fun propagateRelationshipUpdate(relationship: Relationship) + + fun deleteTrackedEntity(tei: TrackedEntityInstance?) + + fun deleteEnrollment(enrollment: Enrollment?) + + fun deleteEvent(event: Event?) + + fun deleteRelationship(relationship: Relationship?) +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt new file mode 100644 index 0000000000..f843913ad6 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.common.internal + +import dagger.Reusable +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDeletableDataObjectStore +import org.hisp.dhis.android.core.common.DeletableDataObject +import org.hisp.dhis.android.core.common.ObjectWithUidInterface +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.event.EventTableInfo +import org.hisp.dhis.android.core.event.internal.EventStore +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.RelationshipHelper +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemChildrenAppender +import org.hisp.dhis.android.core.relationship.internal.RelationshipStore +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore +import javax.inject.Inject + +@Reusable +internal class TrackerDataManagerImpl @Inject constructor( + private val trackedEntityStore: TrackedEntityInstanceStore, + private val enrollmentStore: EnrollmentStore, + private val eventStore: EventStore, + private val relationshipStore: RelationshipStore, + private val relationshipChildrenAppender: RelationshipItemChildrenAppender, + private val dataStatePropagator: DataStatePropagator +) : TrackerDataManager { + + override fun deleteTrackedEntity(tei: TrackedEntityInstance?) { + tei?.let { + deleteRelationships(tei) + deleteCascadeItems(tei) + internalDelete(tei, trackedEntityStore, this::propagateTrackedEntityUpdate) + } + } + + override fun deleteEnrollment(enrollment: Enrollment?) { + enrollment?.let { + deleteRelationships(enrollment) + deleteCascadeItems(enrollment) + internalDelete(enrollment, enrollmentStore, this::propagateEnrollmentUpdate) + } + } + + override fun deleteEvent(event: Event?) { + event?.let { + deleteRelationships(event) + internalDelete(event, eventStore, this::propagateEventUpdate) + } + } + + override fun deleteRelationship(relationship: Relationship?) { + relationship?.let { + internalDelete(relationship, relationshipStore, this::propagateRelationshipUpdate) + } + } + + private fun internalDelete( + obj: O, + store: IdentifiableDeletableDataObjectStore, + propagateState: (O) -> Any + ) where O : ObjectWithUidInterface, O : DeletableDataObject { + if (obj.syncState() === State.TO_POST) { + store.delete(obj.uid()) + } else { + store.setDeleted(obj.uid()) + store.setSyncState(obj.uid(), State.TO_UPDATE) + propagateState(obj) + } + } + + override fun propagateTrackedEntityUpdate(tei: TrackedEntityInstance?) { + dataStatePropagator.propagateTrackedEntityInstanceUpdate(tei) + } + + override fun propagateEnrollmentUpdate(enrollment: Enrollment?) { + dataStatePropagator.propagateEnrollmentUpdate(enrollment) + } + + override fun propagateEventUpdate(event: Event?) { + dataStatePropagator.propagateEventUpdate(event) + } + + override fun propagateRelationshipUpdate(relationship: Relationship) { + val withChildren = + if (relationship.from() == null || relationship.to() == null) { + relationshipChildrenAppender.appendChildren(relationship) + } else { + relationship + } + dataStatePropagator.propagateRelationshipUpdate(withChildren) + } + + private fun deleteRelationships(tei: TrackedEntityInstance) { + relationshipStore.getRelationshipsByItem(RelationshipHelper.teiItem(tei.uid())) + .forEach { deleteRelationship(it) } + } + + private fun deleteRelationships(enrollment: Enrollment) { + relationshipStore.getRelationshipsByItem(RelationshipHelper.enrollmentItem(enrollment.uid())) + .forEach { deleteRelationship(it) } + } + + private fun deleteRelationships(event: Event) { + relationshipStore.getRelationshipsByItem(RelationshipHelper.eventItem(event.uid())) + .forEach { deleteRelationship(it) } + } + + private fun deleteCascadeItems(tei: TrackedEntityInstance) { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE, tei.uid()) + .build() + + enrollmentStore.selectWhere(whereClause).forEach { + deleteEnrollment(it) + } + } + + private fun deleteCascadeItems(enrollment: Enrollment) { + val whereClause = WhereClauseBuilder() + .appendKeyStringValue(EventTableInfo.Columns.ENROLLMENT, enrollment.uid()) + .build() + + eventStore.selectWhere(whereClause).forEach { + deleteEvent(it) + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java index 5cc18a9700..af99e9cd04 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java @@ -44,7 +44,7 @@ private DataElementLegendSetChildrenAppender( } @Override - protected DataElement appendChildren(DataElement dataElement) { + public DataElement appendChildren(DataElement dataElement) { DataElement.Builder builder = dataElement.toBuilder(); builder.legendSets(linkChildStore.getChildren(dataElement)); return builder.build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java index 15f8bc4011..eab24901e6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java @@ -44,7 +44,7 @@ private DataInputPeriodChildrenAppender(SingleParentChildStore } @Override - protected Section appendChildren(Section section) { + public Section appendChildren(Section section) { Section.Builder builder = section.toBuilder(); builder.dataElements(linkChildStore.getChildren(section)); return builder.build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java index 5a6de06f18..c165cb5b31 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java @@ -51,7 +51,7 @@ private SectionGreyedFieldsChildrenAppender(LinkChildStore { private final EnrollmentStore store; - private final DataStatePropagator dataStatePropagator; + private final TrackerDataManager trackerDataManager; @Inject EnrollmentCollectionRepository( @@ -65,22 +65,22 @@ public final class EnrollmentCollectionRepository extends ReadWriteWithUidCollec final Map> childrenAppenders, final RepositoryScope scope, final Transformer transformer, - final DataStatePropagator dataStatePropagator) { + final TrackerDataManager trackerDataManager) { super(store, childrenAppenders, scope, transformer, new FilterConnectorFactory<>(scope, s -> - new EnrollmentCollectionRepository(store, childrenAppenders, s, transformer, dataStatePropagator))); + new EnrollmentCollectionRepository(store, childrenAppenders, s, transformer, trackerDataManager))); this.store = store; - this.dataStatePropagator = dataStatePropagator; + this.trackerDataManager = trackerDataManager; } @Override protected void propagateState(Enrollment enrollment) { - dataStatePropagator.propagateEnrollmentUpdate(enrollment); + trackerDataManager.propagateEnrollmentUpdate(enrollment); } @Override public EnrollmentObjectRepository uid(String uid) { RepositoryScope updatedScope = RepositoryScopeHelper.withUidFilterItem(scope, uid); - return new EnrollmentObjectRepository(store, uid, childrenAppenders, updatedScope, dataStatePropagator); + return new EnrollmentObjectRepository(store, uid, childrenAppenders, updatedScope, trackerDataManager); } public StringFilterConnector byUid() { diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java index 10752ebbb1..8731193f3f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java @@ -35,7 +35,7 @@ import org.hisp.dhis.android.core.common.Geometry; import org.hisp.dhis.android.core.common.State; import org.hisp.dhis.android.core.common.Unit; -import org.hisp.dhis.android.core.common.internal.DataStatePropagator; +import org.hisp.dhis.android.core.common.internal.TrackerDataManager; import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore; import org.hisp.dhis.android.core.maintenance.D2Error; @@ -45,16 +45,16 @@ public final class EnrollmentObjectRepository extends ReadWriteWithUidDataObjectRepositoryImpl { - private final DataStatePropagator dataStatePropagator; + private final TrackerDataManager trackerDataManager; EnrollmentObjectRepository(final EnrollmentStore store, final String uid, final Map> childrenAppenders, final RepositoryScope scope, - final DataStatePropagator dataStatePropagator) { + final TrackerDataManager trackerDataManager) { super(store, childrenAppenders, scope, - s -> new EnrollmentObjectRepository(store, uid, childrenAppenders, s, dataStatePropagator)); - this.dataStatePropagator = dataStatePropagator; + s -> new EnrollmentObjectRepository(store, uid, childrenAppenders, s, trackerDataManager)); + this.trackerDataManager = trackerDataManager; } public Unit setOrganisationUnitUid(String organisationUnitUid) throws D2Error { @@ -102,6 +102,11 @@ private Enrollment.Builder updateBuilder() { @Override protected void propagateState(Enrollment enrollment) { - dataStatePropagator.propagateEnrollmentUpdate(enrollment); + trackerDataManager.propagateEnrollmentUpdate(enrollment); + } + + @Override + protected void deleteObject(Enrollment enrollment) { + trackerDataManager.deleteEnrollment(enrollment); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java index 3574e13581..2cfd3de4af 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java @@ -43,7 +43,7 @@ import org.hisp.dhis.android.core.common.FeatureType; import org.hisp.dhis.android.core.common.IdentifiableColumns; import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.common.internal.DataStatePropagator; +import org.hisp.dhis.android.core.common.internal.TrackerDataManager; import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo; import org.hisp.dhis.android.core.event.internal.EventFields; import org.hisp.dhis.android.core.event.internal.EventPostParentCall; @@ -72,7 +72,7 @@ public final class EventCollectionRepository private final EventPostParentCall postCall; private final EventStore store; - private final DataStatePropagator dataStatePropagator; + private final TrackerDataManager trackerDataManager; private final JobQueryCall jobQueryCall; @Inject @@ -81,14 +81,14 @@ public final class EventCollectionRepository final RepositoryScope scope, final EventPostParentCall postCall, final Transformer transformer, - final DataStatePropagator dataStatePropagator, + final TrackerDataManager trackerDataManager, final JobQueryCall jobQueryCall) { super(store, childrenAppenders, scope, transformer, new FilterConnectorFactory<>(scope, s -> new EventCollectionRepository( - store, childrenAppenders, s, postCall, transformer, dataStatePropagator, jobQueryCall))); + store, childrenAppenders, s, postCall, transformer, trackerDataManager, jobQueryCall))); this.store = store; this.postCall = postCall; - this.dataStatePropagator = dataStatePropagator; + this.trackerDataManager = trackerDataManager; this.jobQueryCall = jobQueryCall; } @@ -110,13 +110,13 @@ public void blockingUpload() { @Override protected void propagateState(Event event) { - dataStatePropagator.propagateEventUpdate(event); + trackerDataManager.propagateEventUpdate(event); } @Override public EventObjectRepository uid(String uid) { RepositoryScope updatedScope = RepositoryScopeHelper.withUidFilterItem(scope, uid); - return new EventObjectRepository(store, uid, childrenAppenders, updatedScope, dataStatePropagator); + return new EventObjectRepository(store, uid, childrenAppenders, updatedScope, trackerDataManager); } public StringFilterConnector byUid() { diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java index 7322afe8f5..96083631b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java @@ -35,7 +35,7 @@ import org.hisp.dhis.android.core.common.Geometry; import org.hisp.dhis.android.core.common.State; import org.hisp.dhis.android.core.common.Unit; -import org.hisp.dhis.android.core.common.internal.DataStatePropagator; +import org.hisp.dhis.android.core.common.internal.TrackerDataManager; import org.hisp.dhis.android.core.event.internal.EventStore; import org.hisp.dhis.android.core.maintenance.D2Error; @@ -45,16 +45,16 @@ public final class EventObjectRepository extends ReadWriteWithUidDataObjectRepositoryImpl { - private final DataStatePropagator dataStatePropagator; + private final TrackerDataManager trackerDataManager; EventObjectRepository(final EventStore store, final String uid, final Map> childrenAppenders, final RepositoryScope scope, - final DataStatePropagator dataStatePropagator) { + final TrackerDataManager trackerDataManager) { super(store, childrenAppenders, scope, - s -> new EventObjectRepository(store, uid, childrenAppenders, s, dataStatePropagator)); - this.dataStatePropagator = dataStatePropagator; + s -> new EventObjectRepository(store, uid, childrenAppenders, s, trackerDataManager)); + this.trackerDataManager = trackerDataManager; } public Unit setOrganisationUnitUid(String organisationUnitUid) throws D2Error { @@ -106,6 +106,11 @@ private Event.Builder updateBuilder() { @Override protected void propagateState(Event event) { - dataStatePropagator.propagateEventUpdate(event); + trackerDataManager.propagateEventUpdate(event); + } + + @Override + protected void deleteObject(Event event) { + trackerDataManager.deleteEvent(event); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java index 951552aa76..72ff43105b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java @@ -45,7 +45,7 @@ private EventFilterEventDataFilterChildrenAppender( } @Override - protected EventFilter appendChildren(EventFilter eventFilter) { + public EventFilter appendChildren(EventFilter eventFilter) { if (eventFilter.eventQueryCriteria() != null) { EventQueryCriteria.Builder criteriaBuilder = eventFilter.eventQueryCriteria().toBuilder(); criteriaBuilder.dataFilters(childStore.getChildren(eventFilter)); diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java index 37457152aa..c8ce26d416 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java @@ -51,7 +51,7 @@ private DataSetIndicatorChildrenAppender( } @Override - protected DataSet appendChildren(DataSet dataSet) { + public DataSet appendChildren(DataSet dataSet) { DataSet.Builder builder = dataSet.toBuilder(); builder.indicators(linkChildStore.getChildren(dataSet)); return builder.build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java index 25d3f4f116..7dc241f1e4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java @@ -43,7 +43,7 @@ private LegendChildrenAppender(SingleParentChildStore childSt } @Override - protected LegendSet appendChildren(LegendSet legendSet) { + public LegendSet appendChildren(LegendSet legendSet) { LegendSet.Builder builder = legendSet.toBuilder(); builder.legends(childStore.getChildren(legendSet)); return builder.build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java index 4ad5ad9480..4a639d8356 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java @@ -43,7 +43,7 @@ private NoteForEnrollmentChildrenAppender(SingleParentChildStore childSt } @Override - protected Event appendChildren(Event event) { + public Event appendChildren(Event event) { Event.Builder builder = event.toBuilder(); builder.notes(childStore.getChildren(event)); return builder.build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java index 3ac088698b..5eb11dbb37 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java @@ -50,7 +50,7 @@ private OptionGroupOptionChildrenAppender(ObjectWithUidChildStore c } @Override - protected OptionGroup appendChildren(OptionGroup optionGroup) { + public OptionGroup appendChildren(OptionGroup optionGroup) { OptionGroup.Builder builder = optionGroup.toBuilder(); builder.options(childStore.getChildren(optionGroup)); return builder.build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java index c515d471b7..a040c3a323 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java @@ -51,7 +51,7 @@ private OrganisationUnitDataSetChildrenAppender(ObjectWithUidChildStore(scope, s -> new RelationshipCollectionRepository(store, childrenAppenders, s, - relationshipHandler, storeSelector, relationshipManager, dataStatePropagator))); + relationshipHandler, storeSelector, relationshipManager, trackerDataManager))); this.store = store; this.relationshipHandler = relationshipHandler; this.storeSelector = storeSelector; this.relationshipManager = relationshipManager; - this.dataStatePropagator = dataStatePropagator; + this.trackerDataManager = trackerDataManager; } @Override @@ -128,7 +128,7 @@ public String blockingAdd(Relationship relationship) throws D2Error { .syncState(State.TO_POST) .deleted(false) .build()); - dataStatePropagator.propagateRelationshipUpdate(relationship); + trackerDataManager.propagateRelationshipUpdate(relationship); } else { throw D2Error .builder() @@ -146,7 +146,7 @@ public String blockingAdd(Relationship relationship) throws D2Error { @Override public ReadWriteObjectRepository uid(String uid) { RepositoryScope updatedScope = RepositoryScopeHelper.withUidFilterItem(scope, uid); - return new RelationshipObjectRepository(store, uid, childrenAppenders, updatedScope, dataStatePropagator); + return new RelationshipObjectRepository(store, uid, childrenAppenders, updatedScope, trackerDataManager); } private boolean isUpdatableState(State state) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java index a61b677276..8d15e6d8b7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java @@ -29,40 +29,35 @@ package org.hisp.dhis.android.core.relationship; import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender; -import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppenderExecutor; -import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenSelection; import org.hisp.dhis.android.core.arch.repositories.object.internal.ReadWriteWithUidDataObjectRepositoryImpl; import org.hisp.dhis.android.core.arch.repositories.scope.RepositoryScope; -import org.hisp.dhis.android.core.common.internal.DataStatePropagator; +import org.hisp.dhis.android.core.common.internal.TrackerDataManager; import org.hisp.dhis.android.core.relationship.internal.RelationshipStore; -import java.util.Collections; import java.util.Map; final class RelationshipObjectRepository extends ReadWriteWithUidDataObjectRepositoryImpl { - private final DataStatePropagator dataStatePropagator; + private final TrackerDataManager trackerDataManager; RelationshipObjectRepository(final RelationshipStore store, final String uid, final Map> childrenAppenders, final RepositoryScope scope, - final DataStatePropagator dataStatePropagator) { + final TrackerDataManager trackerDataManager) { super(store, childrenAppenders, scope, - s -> new RelationshipObjectRepository(store, uid, childrenAppenders, s, dataStatePropagator)); - this.dataStatePropagator = dataStatePropagator; + s -> new RelationshipObjectRepository(store, uid, childrenAppenders, s, trackerDataManager)); + this.trackerDataManager = trackerDataManager; } @Override protected void propagateState(Relationship relationship) { - if (relationship.from() == null || relationship.to() == null) { - Relationship withChildren = ChildrenAppenderExecutor.appendInObject(relationship, childrenAppenders, - new ChildrenSelection(Collections.singleton( - RelationshipFields.ITEMS))); - dataStatePropagator.propagateRelationshipUpdate(withChildren); - } else { - dataStatePropagator.propagateRelationshipUpdate(relationship); - } + trackerDataManager.propagateRelationshipUpdate(relationship); + } + + @Override + protected void deleteObject(Relationship relationship) { + trackerDataManager.deleteRelationship(relationship); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java index 73076eb686..cbff0b035e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java @@ -52,7 +52,7 @@ public void prepareChildren(Collection collection) { } @Override - protected RelationshipType appendChildren(RelationshipType relationshipType) { + public RelationshipType appendChildren(RelationshipType relationshipType) { RelationshipType.Builder builder = relationshipType.toBuilder(); for (RelationshipConstraint constraint : this.constraints) { if (constraint.relationshipType().uid().equals(relationshipType.uid())) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt similarity index 64% rename from core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.java rename to core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt index 256fb863b5..3bd0551b1a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt @@ -25,36 +25,29 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package org.hisp.dhis.android.core.relationship.internal; +package org.hisp.dhis.android.core.relationship.internal -import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender; -import org.hisp.dhis.android.core.relationship.Relationship; -import org.hisp.dhis.android.core.relationship.RelationshipConstraintType; -import org.hisp.dhis.android.core.relationship.RelationshipItem; - -import javax.inject.Inject; - -import dagger.Reusable; +import dagger.Reusable +import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.RelationshipConstraintType +import javax.inject.Inject @Reusable -final class RelationshipItemChildrenAppender extends ChildrenAppender { - - private final RelationshipItemStore store; - - @Inject - RelationshipItemChildrenAppender(RelationshipItemStore store) { - this.store = store; - } +internal class RelationshipItemChildrenAppender @Inject constructor( + private val store: RelationshipItemStore +) : ChildrenAppender() { - @Override - protected Relationship appendChildren(Relationship relationship) { - RelationshipItem fromItem = store.getForRelationshipUidAndConstraintType( - relationship.uid(), RelationshipConstraintType.FROM); - RelationshipItem toItem = store.getForRelationshipUidAndConstraintType( - relationship.uid(), RelationshipConstraintType.TO); + override fun appendChildren(relationship: Relationship): Relationship { + val fromItem = store.getForRelationshipUidAndConstraintType( + relationship.uid()!!, RelationshipConstraintType.FROM + ) + val toItem = store.getForRelationshipUidAndConstraintType( + relationship.uid()!!, RelationshipConstraintType.TO + ) return relationship.toBuilder() - .from(fromItem) - .to(toItem) - .build(); + .from(fromItem) + .to(toItem) + .build() } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java index 680674f579..44abf47513 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java @@ -42,7 +42,7 @@ import org.hisp.dhis.android.core.arch.repositories.scope.internal.RepositoryScopeHelper; import org.hisp.dhis.android.core.common.FeatureType; import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.common.internal.DataStatePropagator; +import org.hisp.dhis.android.core.common.internal.TrackerDataManager; import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstanceTableInfo.Columns; import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceFields; @@ -67,7 +67,7 @@ public final class TrackedEntityInstanceCollectionRepository private final TrackedEntityInstancePostParentCall postCall; private final TrackedEntityInstanceStore store; - private final DataStatePropagator dataStatePropagator; + private final TrackerDataManager trackerDataManager; private final JobQueryCall jobQueryCall; @Inject @@ -76,21 +76,21 @@ public final class TrackedEntityInstanceCollectionRepository final Map> childrenAppenders, final RepositoryScope scope, final Transformer transformer, - final DataStatePropagator dataStatePropagator, + final TrackerDataManager trackerDataManager, final TrackedEntityInstancePostParentCall postCall, final JobQueryCall jobQueryCall) { super(store, childrenAppenders, scope, transformer, new FilterConnectorFactory<>(scope, s -> new TrackedEntityInstanceCollectionRepository(store, childrenAppenders, s, transformer, - dataStatePropagator, postCall, jobQueryCall))); + trackerDataManager, postCall, jobQueryCall))); this.postCall = postCall; this.store = store; - this.dataStatePropagator = dataStatePropagator; + this.trackerDataManager = trackerDataManager; this.jobQueryCall = jobQueryCall; } @Override protected void propagateState(TrackedEntityInstance trackedEntityInstance) { - dataStatePropagator.propagateTrackedEntityInstanceUpdate(trackedEntityInstance); + trackerDataManager.propagateTrackedEntityUpdate(trackedEntityInstance); } @Override @@ -112,7 +112,7 @@ public void blockingUpload() { public TrackedEntityInstanceObjectRepository uid(String uid) { RepositoryScope updatedScope = RepositoryScopeHelper.withUidFilterItem(scope, uid); return new TrackedEntityInstanceObjectRepository(store, uid, childrenAppenders, updatedScope, - dataStatePropagator); + trackerDataManager); } public StringFilterConnector byUid() { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java index e8365cfbcd..124d269944 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java @@ -35,7 +35,7 @@ import org.hisp.dhis.android.core.common.Geometry; import org.hisp.dhis.android.core.common.State; import org.hisp.dhis.android.core.common.Unit; -import org.hisp.dhis.android.core.common.internal.DataStatePropagator; +import org.hisp.dhis.android.core.common.internal.TrackerDataManager; import org.hisp.dhis.android.core.maintenance.D2Error; import org.hisp.dhis.android.core.maintenance.D2ErrorCode; import org.hisp.dhis.android.core.maintenance.D2ErrorComponent; @@ -47,16 +47,16 @@ public final class TrackedEntityInstanceObjectRepository extends ReadWriteWithUidDataObjectRepositoryImpl { - private final DataStatePropagator dataStatePropagator; + private final TrackerDataManager trackerDataManager; TrackedEntityInstanceObjectRepository(final TrackedEntityInstanceStore store, final String uid, final Map> childrenAppenders, final RepositoryScope scope, - final DataStatePropagator dataStatePropagator) { + final TrackerDataManager trackerDataManager) { super(store, childrenAppenders, scope, - s -> new TrackedEntityInstanceObjectRepository(store, uid, childrenAppenders, s, dataStatePropagator)); - this.dataStatePropagator = dataStatePropagator; + s -> new TrackedEntityInstanceObjectRepository(store, uid, childrenAppenders, s, trackerDataManager)); + this.trackerDataManager = trackerDataManager; } public Unit setOrganisationUnitUid(String organisationUnitUid) throws D2Error { @@ -91,6 +91,11 @@ private TrackedEntityInstance.Builder updateBuilder() throws D2Error { @Override protected void propagateState(TrackedEntityInstance trackedEntityInstance) { - dataStatePropagator.propagateTrackedEntityInstanceUpdate(trackedEntityInstance); + trackerDataManager.propagateTrackedEntityUpdate(trackedEntityInstance); + } + + @Override + protected void deleteObject(TrackedEntityInstance trackedEntityInstance) { + trackerDataManager.deleteTrackedEntity(trackedEntityInstance); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java index e81f560683..be19454f94 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java @@ -45,7 +45,7 @@ private TrackedEntityAttributeValueChildrenAppender( } @Override - protected TrackedEntityInstance appendChildren(TrackedEntityInstance tei) { + public TrackedEntityInstance appendChildren(TrackedEntityInstance tei) { TrackedEntityInstance.Builder builder = tei.toBuilder(); builder.trackedEntityAttributeValues(childStore.getChildren(tei)); return builder.build(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java index 30c556e34a..7e1c066133 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java @@ -44,7 +44,7 @@ private TrackedEntityDataValueChildrenAppender(SingleParentChildStore { } @Override - protected UserCredentials appendChildren(UserCredentials userCredentials) { + public UserCredentials appendChildren(UserCredentials userCredentials) { UserCredentials.Builder builder = userCredentials.toBuilder(); builder.userRoles(store.selectAll()); return builder.build(); From 9e9dcb6f81033600d480411c706f4c463835e52c Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 25 Mar 2022 11:04:46 +0100 Subject: [PATCH 203/253] [ANDROSDK-1520] Add unit test --- ...dWriteWithUidDataObjectRepositoryImpl.java | 7 +- .../common/internal/TrackerDataManagerImpl.kt | 3 +- .../RelationshipItemChildrenAppender.kt | 4 +- .../internal/TrackerDataManagerShould.kt | 110 ++++++++++++++++++ ...edEntityInstanceQueryDataSourceShould.java | 2 +- 5 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java index b6909d3cdd..8b09db083e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java @@ -53,14 +53,11 @@ public abstract class ReadWriteWithUidDataObjectRepositoryImpl > extends ReadWriteWithUidObjectRepositoryImpl implements ReadWriteObjectRepository { - private final IdentifiableDeletableDataObjectStore store; - public ReadWriteWithUidDataObjectRepositoryImpl(IdentifiableDeletableDataObjectStore store, Map> childrenAppenders, RepositoryScope scope, ObjectRepositoryFactory repositoryFactory) { super(store, childrenAppenders, scope, repositoryFactory); - this.store = store; } /** @@ -138,9 +135,7 @@ protected Unit updateObject(M m) throws D2Error { return new Unit(); } - protected void propagateState(M m) { - // Method is empty because is the default action. - } + protected abstract void propagateState(M m); protected abstract void deleteObject(M m); } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt index f843913ad6..01312ca344 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.common.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDeletableDataObjectStore import org.hisp.dhis.android.core.common.DeletableDataObject @@ -45,9 +46,9 @@ import org.hisp.dhis.android.core.relationship.internal.RelationshipItemChildren import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore -import javax.inject.Inject @Reusable +@Suppress("TooManyFunctions") internal class TrackerDataManagerImpl @Inject constructor( private val trackedEntityStore: TrackedEntityInstanceStore, private val enrollmentStore: EnrollmentStore, diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt index 3bd0551b1a..b907fecaa3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt @@ -28,10 +28,10 @@ package org.hisp.dhis.android.core.relationship.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender import org.hisp.dhis.android.core.relationship.Relationship import org.hisp.dhis.android.core.relationship.RelationshipConstraintType -import javax.inject.Inject @Reusable internal class RelationshipItemChildrenAppender @Inject constructor( @@ -50,4 +50,4 @@ internal class RelationshipItemChildrenAppender @Inject constructor( .to(toItem) .build() } -} \ No newline at end of file +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt new file mode 100644 index 0000000000..8260357aa1 --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.common.internal + +import com.nhaarman.mockitokotlin2.* +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore +import org.hisp.dhis.android.core.event.Event +import org.hisp.dhis.android.core.event.internal.EventStore +import org.hisp.dhis.android.core.relationship.Relationship +import org.hisp.dhis.android.core.relationship.internal.RelationshipItemChildrenAppender +import org.hisp.dhis.android.core.relationship.internal.RelationshipStore +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.internal.TrackedEntityInstanceStore +import org.junit.Before +import org.junit.Test + +class TrackerDataManagerShould { + + private val trackedEntityStore: TrackedEntityInstanceStore = mock() + private val enrollmentStore: EnrollmentStore = mock() + private val eventStore: EventStore = mock() + private val relationshipStore: RelationshipStore = mock() + private val relationshipChildrenAppender: RelationshipItemChildrenAppender = mock() + private val dataStatePropagator: DataStatePropagator = mock() + + private val trackedEntity: TrackedEntityInstance = mock() + private val enrollment: Enrollment = mock() + private val event: Event = mock() + private val relationship: Relationship = mock() + + private lateinit var trackerDataManager: TrackerDataManager + + @Before + fun setUp() { + whenever(trackedEntity.uid()).doReturn("tei_uid") + whenever(enrollment.uid()).doReturn("enrollment_uid") + whenever(event.uid()).doReturn("event_uid") + whenever(relationship.uid()).doReturn("rel_uid") + + whenever(enrollmentStore.selectWhere(any())).doReturn(listOf(enrollment)) + whenever(eventStore.selectWhere(any())).doReturn(listOf(event)) + whenever(relationshipStore.getRelationshipsByItem(any())).doReturn(listOf(relationship)) + + trackerDataManager = TrackerDataManagerImpl( + trackedEntityStore, enrollmentStore, eventStore, relationshipStore, + relationshipChildrenAppender, dataStatePropagator + ) + } + + @Test + fun cascade_tracked_entity_deletion_when_existing() { + whenever(trackedEntity.syncState()).doReturn(State.TO_UPDATE) + whenever(enrollment.syncState()).doReturn(State.TO_UPDATE) + whenever(event.syncState()).doReturn(State.TO_UPDATE) + whenever(relationship.syncState()).doReturn(State.TO_UPDATE) + + trackerDataManager.deleteTrackedEntity(trackedEntity) + + verify(trackedEntityStore, times(1)).setDeleted(any()) + verify(trackedEntityStore, times(1)).setSyncState(any(), any()) + verify(enrollmentStore, times(1)).setDeleted(any()) + verify(enrollmentStore, times(1)).setSyncState(any(), any()) + verify(eventStore, times(1)).setDeleted(any()) + verify(eventStore, times(1)).setSyncState(any(), any()) + verify(relationshipStore, times(3)).setDeleted(any()) + verify(relationshipStore, times(3)).setSyncState(any(), any()) + } + + @Test + fun cascade_tracked_entity_deletion_when_new() { + whenever(trackedEntity.syncState()).doReturn(State.TO_POST) + whenever(enrollment.syncState()).doReturn(State.TO_POST) + whenever(event.syncState()).doReturn(State.TO_POST) + whenever(relationship.syncState()).doReturn(State.TO_POST) + + trackerDataManager.deleteTrackedEntity(trackedEntity) + + verify(trackedEntityStore, times(1)).delete(any()) + verify(enrollmentStore, times(1)).delete(any()) + verify(eventStore, times(1)).delete(any()) + verify(relationshipStore, times(3)).delete(any()) + } +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java index 87f6f1d3e4..679c7fbc70 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java @@ -275,7 +275,7 @@ public void get_second_online_page_if_needed_in_initial_load() { private ChildrenAppender identityAppender() { return new ChildrenAppender() { @Override - protected TrackedEntityInstance appendChildren(TrackedEntityInstance m) { + public TrackedEntityInstance appendChildren(TrackedEntityInstance m) { return m; } }; From 542018305fb90532910ab9bb1818927c4aa40876 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Mon, 28 Mar 2022 14:01:15 +0200 Subject: [PATCH 204/253] [ANDROSDK-1521] Handle other errors in NTI report call --- ...erImporterTrackedEntityPostStateManager.kt | 34 +++++++++++++++++++ .../tracker/importer/internal/JobQueryCall.kt | 20 +++++++++-- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt index 86c3160813..968e89f0a7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt @@ -33,6 +33,8 @@ import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.event.internal.EventStore import org.hisp.dhis.android.core.relationship.internal.RelationshipStore +import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterObjectType +import org.hisp.dhis.android.core.tracker.importer.internal.TrackerJobObject @Reusable internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal constructor( @@ -47,6 +49,10 @@ internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal setStates(payload, null) } + fun restoreStates(objects: List) { + setStates(objects, null) + } + fun setStates(payload: NewTrackerImporterPayload, forcedState: State?) { val teiMap = mutableMapOf>() val enrollmentMap = mutableMapOf>() @@ -68,4 +74,32 @@ internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal h.persistStates(eventMap, eventStore) h.persistStates(relationshipMap, relationshipStore) } + + fun setStates(objects: List, forcedState: State?) { + val teiMap = mutableMapOf>() + val enrollmentMap = mutableMapOf>() + val eventMap = mutableMapOf>() + val relationshipMap = mutableMapOf>() + + objects.forEach { + when(it.trackerType()) { + TrackerImporterObjectType.EVENT -> eventStore.selectByUid(it.objectUid())?.let { e -> + h.addState(eventMap, e, forcedState) + } + TrackerImporterObjectType.ENROLLMENT -> enrollmentStore.selectByUid(it.objectUid())?.let { e -> + h.addState(enrollmentMap, e, forcedState) + } + TrackerImporterObjectType.TRACKED_ENTITY -> trackedEntityInstanceStore.selectByUid(it.objectUid()) + ?.let { t -> h.addState(teiMap, t, forcedState) } + TrackerImporterObjectType.RELATIONSHIP -> relationshipStore.selectByUid(it.objectUid())?.let { r -> + h.addState(relationshipMap, r, forcedState) + } + } + } + + h.persistStates(teiMap, trackedEntityInstanceStore) + h.persistStates(enrollmentMap, enrollmentStore) + h.persistStates(eventMap, eventStore) + h.persistStates(relationshipMap, relationshipStore) + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt index 5a5633dc37..c2310e6880 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt @@ -36,6 +36,9 @@ import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithoutUidStore +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.trackedentity.internal.NewTrackerImporterTrackedEntityPostStateManager internal const val ATTEMPTS_AFTER_UPLOAD = 90 internal const val ATTEMPTS_WHEN_QUERYING = 1 @@ -48,7 +51,8 @@ internal class JobQueryCall @Inject internal constructor( private val apiCallExecutor: APICallExecutor, private val trackerJobObjectStore: ObjectWithoutUidStore, private val handler: JobReportHandler, - private val fileResourceHandler: JobReportFileResourceHandler + private val fileResourceHandler: JobReportFileResourceHandler, + private val stateManager: NewTrackerImporterTrackedEntityPostStateManager ) { fun queryPendingJobs(): Observable { @@ -91,8 +95,13 @@ internal class JobQueryCall @Inject internal constructor( try { downloadAndHandle(jobId, jobObjects) true - } catch (_: Throwable) { - false + } catch (e: Throwable) { + if (e is D2Error && e.errorCode() == D2ErrorCode.JOB_REPORT_NOT_AVAILABLE) { + false + } else { + handlerError(jobId, jobObjects) + true + } } } .takeUntil { it } @@ -114,6 +123,11 @@ internal class JobQueryCall @Inject internal constructor( handler.handle(jobReport, jobObjects) } + private fun handlerError(jobId: String, jobObjects: List) { + trackerJobObjectStore.deleteWhere(byJobIdClause(jobId)) + stateManager.restoreStates(jobObjects) + } + private fun byJobIdClause(jobId: String) = WhereClauseBuilder() .appendKeyStringValue(TrackerJobObjectTableInfo.Columns.JOB_UID, jobId) .build() From 224889f3a3ab6fcee725bd9878f7ad2c704946a4 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Mon, 28 Mar 2022 14:09:13 +0200 Subject: [PATCH 205/253] [ANDROSDK-1521] Ktlint --- .../NewTrackerImporterTrackedEntityPostStateManager.kt | 7 ++++--- .../android/core/tracker/importer/internal/JobQueryCall.kt | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt index 968e89f0a7..097f2bed1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt @@ -82,15 +82,16 @@ internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal val relationshipMap = mutableMapOf>() objects.forEach { - when(it.trackerType()) { + when (it.trackerType()) { TrackerImporterObjectType.EVENT -> eventStore.selectByUid(it.objectUid())?.let { e -> h.addState(eventMap, e, forcedState) } TrackerImporterObjectType.ENROLLMENT -> enrollmentStore.selectByUid(it.objectUid())?.let { e -> h.addState(enrollmentMap, e, forcedState) } - TrackerImporterObjectType.TRACKED_ENTITY -> trackedEntityInstanceStore.selectByUid(it.objectUid()) - ?.let { t -> h.addState(teiMap, t, forcedState) } + TrackerImporterObjectType.TRACKED_ENTITY -> + trackedEntityInstanceStore.selectByUid(it.objectUid()) + ?.let { t -> h.addState(teiMap, t, forcedState) } TrackerImporterObjectType.RELATIONSHIP -> relationshipStore.selectByUid(it.objectUid())?.let { r -> h.addState(relationshipMap, r, forcedState) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt index c2310e6880..6b87fd6c67 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt @@ -89,7 +89,7 @@ internal class JobQueryCall @Inject internal constructor( attempts: Int ): Observable { val progressManager = D2ProgressManager(null) - @Suppress("MagicNumber") + @Suppress("TooGenericExceptionCaught") return Observable.interval(ATTEMPTS_INITIAL_DELAY, ATTEMPTS_INTERVAL, TimeUnit.SECONDS) .map { try { From 54df3d8faeae9cc14ca11dcbe0dff6e0656f5bfd Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Mon, 28 Mar 2022 14:39:54 +0200 Subject: [PATCH 206/253] [ANDROSDK-1521] Reset fileResource state --- .../NewTrackerImporterTrackedEntityPostStateManager.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt index 097f2bed1e..68e7146b70 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt @@ -28,10 +28,12 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable +import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import javax.inject.Inject import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.event.internal.EventStore +import org.hisp.dhis.android.core.fileresource.FileResource import org.hisp.dhis.android.core.relationship.internal.RelationshipStore import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterObjectType import org.hisp.dhis.android.core.tracker.importer.internal.TrackerJobObject @@ -42,6 +44,7 @@ internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal private val enrollmentStore: EnrollmentStore, private val eventStore: EventStore, private val relationshipStore: RelationshipStore, + private val fileResourceStore: IdentifiableDataObjectStore, private val h: StatePersistorHelper ) { @@ -80,6 +83,7 @@ internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal val enrollmentMap = mutableMapOf>() val eventMap = mutableMapOf>() val relationshipMap = mutableMapOf>() + val fileResourcesMap = mutableMapOf>() objects.forEach { when (it.trackerType()) { @@ -96,11 +100,15 @@ internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal h.addState(relationshipMap, r, forcedState) } } + it.fileResources().forEach { id -> + fileResourceStore.selectByUid(id)?.let { fr -> h.addState(fileResourcesMap, fr, forcedState ) } + } } h.persistStates(teiMap, trackedEntityInstanceStore) h.persistStates(enrollmentMap, enrollmentStore) h.persistStates(eventMap, eventStore) h.persistStates(relationshipMap, relationshipStore) + h.persistStates(fileResourcesMap, fileResourceStore) } } From 97a714067083c9b00eb8e24ff8c2681f6d4087ef Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Mon, 28 Mar 2022 14:46:55 +0200 Subject: [PATCH 207/253] [ANDROSDK-1521] Ktlint --- .../NewTrackerImporterTrackedEntityPostStateManager.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt index 68e7146b70..48dcfbd2d8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt @@ -28,8 +28,8 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable -import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import javax.inject.Inject +import org.hisp.dhis.android.core.arch.db.stores.internal.IdentifiableDataObjectStore import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.event.internal.EventStore @@ -101,7 +101,7 @@ internal class NewTrackerImporterTrackedEntityPostStateManager @Inject internal } } it.fileResources().forEach { id -> - fileResourceStore.selectByUid(id)?.let { fr -> h.addState(fileResourcesMap, fr, forcedState ) } + fileResourceStore.selectByUid(id)?.let { fr -> h.addState(fileResourcesMap, fr, forcedState) } } } From a3e45c259bc0c3707288bd0e8196ba184dad19bc Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 29 Mar 2022 15:08:55 +0200 Subject: [PATCH 208/253] [ANDROSDK-1521] Fix fileResource rename --- .../android/core/fileresource/internal/FileResourceUtil.kt | 5 ++++- .../android/core/tracker/importer/internal/JobQueryCall.kt | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt index 36b912fe74..87cfdf5f5c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt @@ -53,7 +53,10 @@ internal object FileResourceUtil { fun renameFile(file: File, newFileName: String, context: Context): File { val contentType = URLConnection.guessContentTypeFromName(file.name) val generatedName = generateFileName(MediaType.get(contentType), newFileName) - val newFile = File(context.filesDir, "sdk_resources/$generatedName") + val newFile = File( + FileResourceDirectoryHelper.getFileResourceDirectory(context), + generatedName + ) if (!file.renameTo(newFile)) { Log.d(FileResourceUtil::class.java.canonicalName, "Fail renaming " + file.name + " to " + generatedName) diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt index 6b87fd6c67..6e876a2967 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt @@ -112,6 +112,7 @@ internal class JobQueryCall @Inject internal constructor( it && isLastJob ) } + .flatMap { updateFileResourceStates(jobObjects) } } private fun downloadAndHandle(jobId: String, jobObjects: List) { From 2abc827b51d8f68f6b0d880e038aa6ad50d06bc7 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 29 Mar 2022 18:32:05 +0200 Subject: [PATCH 209/253] [ANDROSDK-1525] Add DataValueImportSummaryWebResponse --- .../DataValueImportSummaryWebResponse.java | 59 +++++++++++++++++++ ...ata_value_import_summary_web_response.json | 46 +++++++++++++++ ...DataValueImportSummaryWebResponseShould.kt | 47 +++++++++++++++ 3 files changed, 152 insertions(+) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java create mode 100644 core/src/sharedTest/resources/imports/data_value_import_summary_web_response.json create mode 100644 core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java new file mode 100644 index 0000000000..662297d0c0 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.imports.internal; + +import androidx.annotation.Nullable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; +import com.google.auto.value.AutoValue; + +@AutoValue +@JsonDeserialize(builder = AutoValue_DataValueImportSummaryWebResponse.Builder.class) +public abstract class DataValueImportSummaryWebResponse extends WebResponse { + + private static final String RESPONSE = "response"; + + @Nullable + @JsonProperty(RESPONSE) + public abstract DataValueImportSummary response(); + + public static Builder builder() { + return new AutoValue_DataValueImportSummaryWebResponse.Builder(); + } + + @AutoValue.Builder + @JsonPOJOBuilder(withPrefix = "") + public static abstract class Builder extends WebResponse.Builder { + public abstract Builder response(DataValueImportSummary response); + + public abstract DataValueImportSummaryWebResponse build(); + } +} diff --git a/core/src/sharedTest/resources/imports/data_value_import_summary_web_response.json b/core/src/sharedTest/resources/imports/data_value_import_summary_web_response.json new file mode 100644 index 0000000000..c134ed7320 --- /dev/null +++ b/core/src/sharedTest/resources/imports/data_value_import_summary_web_response.json @@ -0,0 +1,46 @@ +{ + "httpStatus": "OK", + "httpStatusCode": 200, + "status": "OK", + "message": "Import was successful.", + "response": { + "responseType": "ImportSummary", + "status": "SUCCESS", + "importOptions": { + "idSchemes": {}, + "dryRun": false, + "async": false, + "importStrategy": "CREATE_AND_UPDATE", + "mergeMode": "REPLACE", + "reportMode": "FULL", + "skipExistingCheck": false, + "sharing": false, + "skipNotifications": false, + "skipAudit": false, + "datasetAllowsPeriods": false, + "strictPeriods": false, + "strictDataElements": false, + "strictCategoryOptionCombos": false, + "strictAttributeOptionCombos": false, + "strictOrganisationUnits": false, + "requireCategoryOptionCombo": false, + "requireAttributeOptionCombo": false, + "skipPatternValidation": false, + "ignoreEmptyCollection": false, + "force": false, + "firstRowIsHeader": true, + "skipLastUpdated": false, + "mergeDataValues": false, + "skipCache": false + }, + "description": "Import process completed successfully", + "importCount": { + "imported": 0, + "updated": 10, + "ignored": 0, + "deleted": 0 + }, + "conflicts": [], + "dataSetComplete": "false" + } +} \ No newline at end of file diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt new file mode 100644 index 0000000000..efb693310c --- /dev/null +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.imports.internal + +import com.google.common.truth.Truth.assertThat +import org.hisp.dhis.android.core.common.BaseObjectShould +import org.hisp.dhis.android.core.common.ObjectShould +import org.hisp.dhis.android.core.imports.ImportStatus +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 + +@RunWith(JUnit4::class) +class DataValueImportSummaryWebResponseShould + : BaseObjectShould("imports/data_value_import_summary_web_response.json"), ObjectShould { + + @Test + override fun map_from_json_string() { + val webResponse = objectMapper.readValue(jsonStream, DataValueImportSummaryWebResponse::class.java) + assertThat(webResponse.response()!!.importStatus()).isEqualTo(ImportStatus.SUCCESS) + } +} \ No newline at end of file From 239e1e46cd0e51b3929bc75c4f9e50468e57b87a Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 29 Mar 2022 18:47:06 +0200 Subject: [PATCH 210/253] [ANDROSDK-1525] Adapt DataValuePost call --- .../datavalue/internal/DataValuePostCall.java | 104 ------------------ .../datavalue/internal/DataValuePostCall.kt | 94 ++++++++++++++++ ...aValueService.java => DataValueService.kt} | 49 +++++---- 3 files changed, 121 insertions(+), 126 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt rename core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/{DataValueService.java => DataValueService.kt} (62%) diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.java deleted file mode 100644 index a12b6842a7..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.datavalue.internal; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor; -import org.hisp.dhis.android.core.arch.call.D2Progress; -import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager; -import org.hisp.dhis.android.core.arch.helpers.internal.DataStateHelper; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.datavalue.DataValue; -import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary; -import org.hisp.dhis.android.core.maintenance.D2Error; - -import java.util.Collection; -import java.util.List; - -import javax.inject.Inject; - -import dagger.Reusable; -import io.reactivex.Observable; - -@Reusable -public final class DataValuePostCall { - - private final DataValueService dataValueService; - private final DataValueImportHandler dataValueImportHandler; - private final APICallExecutor apiCallExecutor; - private final DataValueStore dataValueStore; - - @Inject - DataValuePostCall(@NonNull DataValueService dataValueService, - @NonNull DataValueImportHandler dataValueImportHandler, - @NonNull APICallExecutor apiCallExecutor, - @NonNull DataValueStore dataValueStore) { - - this.dataValueService = dataValueService; - this.dataValueImportHandler = dataValueImportHandler; - this.apiCallExecutor = apiCallExecutor; - this.dataValueStore = dataValueStore; - } - - public Observable uploadDataValues(List dataValues) { - return Observable.defer(() -> { - if (dataValues.isEmpty()) { - return Observable.empty(); - } else { - D2ProgressManager progressManager = new D2ProgressManager(1); - - return Observable.create(emitter -> { - markObjectsAs(dataValues, State.UPLOADING); - - try { - DataValueSet dataValueSet = new DataValueSet(dataValues); - DataValueImportSummary dataValueImportSummary = apiCallExecutor.executeObjectCall( - dataValueService.postDataValues(dataValueSet)); - - dataValueImportHandler.handleImportSummary(dataValueSet, dataValueImportSummary); - } catch (D2Error e) { - markObjectsAs(dataValues, DataStateHelper.errorIfOnline(e)); - throw e; - } - - emitter.onNext(progressManager.increaseProgress(DataValue.class, true)); - emitter.onComplete(); - }); - } - }); - } - - private void markObjectsAs(Collection dataValues, @Nullable State forcedState) { - for (DataValue dataValue : dataValues) { - dataValueStore.setState(dataValue, DataStateHelper.forcedOrOwn(dataValue, forcedState)); - } - } -} diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt new file mode 100644 index 0000000000..ec77a2e953 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.datavalue.internal + +import dagger.Reusable +import io.reactivex.Observable +import io.reactivex.ObservableEmitter +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor +import org.hisp.dhis.android.core.arch.call.D2Progress +import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager +import org.hisp.dhis.android.core.arch.helpers.internal.DataStateHelper.errorIfOnline +import org.hisp.dhis.android.core.arch.helpers.internal.DataStateHelper.forcedOrOwn +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.datavalue.DataValue +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.systeminfo.DHISVersion +import org.hisp.dhis.android.core.systeminfo.DHISVersionManager +import javax.inject.Inject + +@Reusable +internal class DataValuePostCall @Inject constructor( + private val dataValueService: DataValueService, + private val dataValueImportHandler: DataValueImportHandler, + private val apiCallExecutor: APICallExecutor, + private val dataValueStore: DataValueStore, + private val versionManager: DHISVersionManager +) { + fun uploadDataValues(dataValues: List): Observable { + return Observable.defer { + if (dataValues.isEmpty()) { + return@defer Observable.empty() + } else { + val progressManager = D2ProgressManager(1) + return@defer Observable.create { emitter: ObservableEmitter -> + markObjectsAs(dataValues, State.UPLOADING) + try { + val dataValueSet = DataValueSet(dataValues) + val dataValueImportSummary = executePostCall(dataValueSet) + dataValueImportHandler.handleImportSummary(dataValueSet, dataValueImportSummary) + } catch (e: D2Error) { + markObjectsAs(dataValues, errorIfOnline(e)) + throw e + } + emitter.onNext(progressManager.increaseProgress(DataValue::class.java, true)) + emitter.onComplete() + } + } + } + } + + private fun executePostCall(dataValueSet: DataValueSet): DataValueImportSummary? { + return if (versionManager.isGreaterOrEqualThan(DHISVersion.V2_38)) { + apiCallExecutor.executeObjectCall( + dataValueService.postDataValuesWebResponse(dataValueSet) + ).response() + } else { + apiCallExecutor.executeObjectCall( + dataValueService.postDataValues(dataValueSet) + ) + } + } + + private fun markObjectsAs(dataValues: Collection, forcedState: State?) { + for (dataValue in dataValues) { + dataValueStore.setState(dataValue, forcedOrOwn(dataValue!!, forcedState)) + } + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt similarity index 62% rename from core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.java rename to core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt index bb2b7ad932..a3c56cc4fc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt @@ -25,32 +25,37 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.datavalue.internal -package org.hisp.dhis.android.core.datavalue.internal; +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.api.fields.internal.Fields +import retrofit2.http.GET +import org.hisp.dhis.android.core.arch.api.filters.internal.Which +import org.hisp.dhis.android.core.datavalue.DataValue +import retrofit2.http.POST +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResponse +import retrofit2.Call +import retrofit2.http.Body +import retrofit2.http.Query -import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; -import org.hisp.dhis.android.core.arch.api.filters.internal.Which; -import org.hisp.dhis.android.core.datavalue.DataValue; -import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary; +internal interface DataValueService { -import io.reactivex.Single; -import retrofit2.Call; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.POST; -import retrofit2.http.Query; - -interface DataValueService { @GET("dataValueSets") - Single getDataValues(@Query("fields") @Which Fields fields, - @Query("lastUpdated") String lastUpdated, - @Query("dataSet") String dataSetUids, - @Query("period") String periodIds, - @Query("orgUnit") String orgUnitUids, - @Query("children") Boolean children, - @Query("paging") Boolean paging, - @Query("includeDeleted") Boolean includeDeleted); + fun getDataValues( + @Query("fields") @Which fields: Fields?, + @Query("lastUpdated") lastUpdated: String?, + @Query("dataSet") dataSetUids: String?, + @Query("period") periodIds: String?, + @Query("orgUnit") orgUnitUids: String?, + @Query("children") children: Boolean?, + @Query("paging") paging: Boolean?, + @Query("includeDeleted") includeDeleted: Boolean? + ): Single + + @POST("dataValueSets") + fun postDataValues(@Body dataValueSet: DataValueSet): Call @POST("dataValueSets") - Call postDataValues(@Body DataValueSet dataValueSet); + fun postDataValuesWebResponse(@Body dataValueSet: DataValueSet): Call } \ No newline at end of file From 265acb8d17dd54d10b31e8a4dad2244d7e87dbaf Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 29 Mar 2022 19:14:19 +0200 Subject: [PATCH 211/253] [ANDROSDK-1525] Adapt DataSetCompleteRegistration call --- .../DataSetCompleteRegistrationPostCall.java | 166 ------------------ .../DataSetCompleteRegistrationPostCall.kt | 160 +++++++++++++++++ ... => DataSetCompleteRegistrationService.kt} | 70 ++++---- 3 files changed, 196 insertions(+), 200 deletions(-) delete mode 100644 core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.java create mode 100644 core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt rename core/src/main/java/org/hisp/dhis/android/core/dataset/internal/{DataSetCompleteRegistrationService.java => DataSetCompleteRegistrationService.kt} (56%) diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.java deleted file mode 100644 index 4172f2e32a..0000000000 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2004-2021, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.hisp.dhis.android.core.dataset.internal; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor; -import org.hisp.dhis.android.core.arch.call.D2Progress; -import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager; -import org.hisp.dhis.android.core.arch.helpers.UidsHelper; -import org.hisp.dhis.android.core.arch.helpers.internal.DataStateHelper; -import org.hisp.dhis.android.core.category.CategoryOptionCombo; -import org.hisp.dhis.android.core.category.CategoryOptionComboCollectionRepository; -import org.hisp.dhis.android.core.common.State; -import org.hisp.dhis.android.core.dataset.DataSetCompleteRegistration; -import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary; -import org.hisp.dhis.android.core.maintenance.D2Error; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import javax.inject.Inject; - -import dagger.Reusable; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; - -import static org.hisp.dhis.android.core.arch.helpers.CollectionsHelper.semicolonSeparatedCollectionValues; - -@Reusable -public final class DataSetCompleteRegistrationPostCall { - - private final DataSetCompleteRegistrationService dataSetCompleteRegistrationService; - private final DataSetCompleteRegistrationImportHandler dataSetCompleteRegistrationImportHandler; - private final APICallExecutor apiCallExecutor; - private final CategoryOptionComboCollectionRepository categoryOptionComboCollectionRepository; - private final DataSetCompleteRegistrationStore dataSetCompleteRegistrationStore; - - @Inject - DataSetCompleteRegistrationPostCall( - @NonNull DataSetCompleteRegistrationService dataSetCompleteRegistrationService, - @NonNull DataSetCompleteRegistrationImportHandler dataSetCompleteRegistrationImportHandler, - @NonNull APICallExecutor apiCallExecutor, - @NonNull CategoryOptionComboCollectionRepository categoryOptionCollectionRepository, - @NonNull DataSetCompleteRegistrationStore dataSetCompleteRegistrationStore) { - - this.dataSetCompleteRegistrationService = dataSetCompleteRegistrationService; - this.dataSetCompleteRegistrationImportHandler = dataSetCompleteRegistrationImportHandler; - this.apiCallExecutor = apiCallExecutor; - this.categoryOptionComboCollectionRepository = categoryOptionCollectionRepository; - this.dataSetCompleteRegistrationStore = dataSetCompleteRegistrationStore; - } - - public Observable uploadDataSetCompleteRegistrations( - List dataSetCompleteRegistrations) { - return Observable.defer(() -> { - if (dataSetCompleteRegistrations.isEmpty()) { - return Observable.empty(); - } else { - List toPostDataSetCompleteRegistrations = new ArrayList<>(); - List toDeleteDataSetCompleteRegistrations = new ArrayList<>(); - - for (DataSetCompleteRegistration dscr: dataSetCompleteRegistrations) { - if (dscr.deleted()) { - toDeleteDataSetCompleteRegistrations.add(dscr); - } else { - toPostDataSetCompleteRegistrations.add(dscr); - } - } - - D2ProgressManager progressManager = new D2ProgressManager(1); - - return Observable.create(emitter -> - uploadInternal(progressManager, emitter, - toPostDataSetCompleteRegistrations, - toDeleteDataSetCompleteRegistrations)); - } - }); - } - - private void uploadInternal(D2ProgressManager progressManager, - ObservableEmitter emitter, - List toPostDataSetCompleteRegistrations, - List toDeleteDataSetCompleteRegistrations) throws D2Error { - DataValueImportSummary dataValueImportSummary = DataValueImportSummary.EMPTY; - - DataSetCompleteRegistrationPayload dataSetCompleteRegistrationPayload - = new DataSetCompleteRegistrationPayload(toPostDataSetCompleteRegistrations); - if (!toPostDataSetCompleteRegistrations.isEmpty()) { - markObjectsAs(toPostDataSetCompleteRegistrations, State.UPLOADING); - try { - dataValueImportSummary = apiCallExecutor.executeObjectCall( - dataSetCompleteRegistrationService.postDataSetCompleteRegistrations( - dataSetCompleteRegistrationPayload)); - } catch (D2Error e) { - markObjectsAs(toPostDataSetCompleteRegistrations, DataStateHelper.errorIfOnline(e)); - throw e; - } - } - - List deletedDataSetCompleteRegistrations = new ArrayList<>(); - List withErrorDataSetCompleteRegistrations = new ArrayList<>(); - for (DataSetCompleteRegistration dataSetCompleteRegistration : toDeleteDataSetCompleteRegistrations) { - try { - CategoryOptionCombo coc = categoryOptionComboCollectionRepository - .withCategoryOptions() - .uid(dataSetCompleteRegistration.attributeOptionCombo()) - .blockingGet(); - markObjectsAs(toDeleteDataSetCompleteRegistrations, State.UPLOADING); - apiCallExecutor.executeObjectCallWithEmptyResponse( - dataSetCompleteRegistrationService.deleteDataSetCompleteRegistration( - dataSetCompleteRegistration.dataSet(), - dataSetCompleteRegistration.period(), - dataSetCompleteRegistration.organisationUnit(), - coc.categoryCombo().uid(), - semicolonSeparatedCollectionValues(UidsHelper.getUids(coc.categoryOptions())), - false)); - deletedDataSetCompleteRegistrations.add(dataSetCompleteRegistration); - } catch (D2Error d2Error) { - withErrorDataSetCompleteRegistrations.add(dataSetCompleteRegistration); - } - } - - dataSetCompleteRegistrationImportHandler.handleImportSummary( - dataSetCompleteRegistrationPayload, dataValueImportSummary, deletedDataSetCompleteRegistrations, - withErrorDataSetCompleteRegistrations); - - emitter.onNext(progressManager.increaseProgress(DataSetCompleteRegistration.class, true)); - emitter.onComplete(); - } - - private void markObjectsAs(Collection dataSetCompleteRegistrations, - @Nullable State forcedState) { - for (DataSetCompleteRegistration dscr : dataSetCompleteRegistrations) { - dataSetCompleteRegistrationStore.setState(dscr, DataStateHelper.forcedOrOwn(dscr, forcedState)); - } - } -} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt new file mode 100644 index 0000000000..cb1e78eae7 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2004-2021, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.dataset.internal + +import dagger.Reusable +import io.reactivex.Observable +import io.reactivex.ObservableEmitter +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor +import org.hisp.dhis.android.core.arch.call.D2Progress +import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager +import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper +import org.hisp.dhis.android.core.arch.helpers.UidsHelper.getUids +import org.hisp.dhis.android.core.arch.helpers.internal.DataStateHelper.errorIfOnline +import org.hisp.dhis.android.core.arch.helpers.internal.DataStateHelper.forcedOrOwn +import org.hisp.dhis.android.core.category.CategoryOptionComboCollectionRepository +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.dataset.DataSetCompleteRegistration +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary +import org.hisp.dhis.android.core.maintenance.D2Error +import org.hisp.dhis.android.core.systeminfo.DHISVersion +import org.hisp.dhis.android.core.systeminfo.DHISVersionManager +import javax.inject.Inject + +@Reusable +internal class DataSetCompleteRegistrationPostCall @Inject constructor( + private val dataSetCompleteRegistrationService: DataSetCompleteRegistrationService, + private val dataSetCompleteRegistrationImportHandler: DataSetCompleteRegistrationImportHandler, + private val apiCallExecutor: APICallExecutor, + private val categoryOptionComboCollectionRepository: CategoryOptionComboCollectionRepository, + private val dataSetCompleteRegistrationStore: DataSetCompleteRegistrationStore, + private val versionManager: DHISVersionManager +) { + fun uploadDataSetCompleteRegistrations( + dataSetCompleteRegistrations: List + ): Observable { + return Observable.defer { + if (dataSetCompleteRegistrations.isEmpty()) { + return@defer Observable.empty() + } else { + val toPostDataSetCompleteRegistrations: MutableList = ArrayList() + val toDeleteDataSetCompleteRegistrations: MutableList = ArrayList() + for (dscr in dataSetCompleteRegistrations) { + if (dscr.deleted()!!) { + toDeleteDataSetCompleteRegistrations.add(dscr) + } else { + toPostDataSetCompleteRegistrations.add(dscr) + } + } + val progressManager = D2ProgressManager(1) + return@defer Observable.create { emitter: ObservableEmitter -> + uploadInternal( + progressManager, + emitter, + toPostDataSetCompleteRegistrations, + toDeleteDataSetCompleteRegistrations + ) + } + } + } + } + + @Throws(D2Error::class) + private fun uploadInternal( + progressManager: D2ProgressManager, + emitter: ObservableEmitter, + toPostDataSetCompleteRegistrations: List, + toDeleteDataSetCompleteRegistrations: List + ) { + val payload = DataSetCompleteRegistrationPayload(toPostDataSetCompleteRegistrations) + val dataValueImportSummary: DataValueImportSummary = + if (toPostDataSetCompleteRegistrations.isEmpty()) { + DataValueImportSummary.EMPTY + } else { + markObjectsAs(toPostDataSetCompleteRegistrations, State.UPLOADING) + try { + postCompleteRegistrations(payload)!! + } catch (e: D2Error) { + markObjectsAs(toPostDataSetCompleteRegistrations, errorIfOnline(e)) + throw e + } + } + + val deletedDataSetCompleteRegistrations: MutableList = ArrayList() + val withErrorDataSetCompleteRegistrations: MutableList = ArrayList() + for (dataSetCompleteRegistration in toDeleteDataSetCompleteRegistrations) { + try { + val coc = categoryOptionComboCollectionRepository + .withCategoryOptions() + .uid(dataSetCompleteRegistration.attributeOptionCombo()) + .blockingGet() + markObjectsAs(toDeleteDataSetCompleteRegistrations, State.UPLOADING) + apiCallExecutor.executeObjectCallWithEmptyResponse( + dataSetCompleteRegistrationService.deleteDataSetCompleteRegistration( + dataSetCompleteRegistration.dataSet(), + dataSetCompleteRegistration.period(), + dataSetCompleteRegistration.organisationUnit(), + coc.categoryCombo()!!.uid(), + CollectionsHelper.semicolonSeparatedCollectionValues(getUids(coc.categoryOptions()!!)), + false + ) + ) + deletedDataSetCompleteRegistrations.add(dataSetCompleteRegistration) + } catch (d2Error: D2Error) { + withErrorDataSetCompleteRegistrations.add(dataSetCompleteRegistration) + } + } + dataSetCompleteRegistrationImportHandler.handleImportSummary( + payload, dataValueImportSummary, deletedDataSetCompleteRegistrations, + withErrorDataSetCompleteRegistrations + ) + emitter.onNext(progressManager.increaseProgress(DataSetCompleteRegistration::class.java, true)) + emitter.onComplete() + } + + private fun postCompleteRegistrations(payload: DataSetCompleteRegistrationPayload): DataValueImportSummary? { + return if (versionManager.isGreaterOrEqualThan(DHISVersion.V2_38)) { + apiCallExecutor.executeObjectCall( + dataSetCompleteRegistrationService.postDataSetCompleteRegistrationsWebResponse(payload) + ).response() + } else { + apiCallExecutor.executeObjectCall( + dataSetCompleteRegistrationService.postDataSetCompleteRegistrations(payload) + ) + } + } + + private fun markObjectsAs( + dataSetCompleteRegistrations: Collection, + forcedState: State? + ) { + for (dscr in dataSetCompleteRegistrations) { + dataSetCompleteRegistrationStore.setState(dscr, forcedOrOwn(dscr, forcedState)) + } + } +} \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt similarity index 56% rename from core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.java rename to core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt index df66e1711d..b06348f62a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt @@ -25,46 +25,48 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.dataset.internal -package org.hisp.dhis.android.core.dataset.internal; +import io.reactivex.Single +import org.hisp.dhis.android.core.arch.api.fields.internal.Fields +import org.hisp.dhis.android.core.arch.api.filters.internal.Which +import org.hisp.dhis.android.core.common.Unit +import org.hisp.dhis.android.core.dataset.DataSetCompleteRegistration +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResponse +import retrofit2.Call +import retrofit2.http.* -import org.hisp.dhis.android.core.arch.api.fields.internal.Fields; -import org.hisp.dhis.android.core.arch.api.filters.internal.Which; -import org.hisp.dhis.android.core.common.Unit; -import org.hisp.dhis.android.core.dataset.DataSetCompleteRegistration; -import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary; - -import io.reactivex.Single; -import retrofit2.Call; -import retrofit2.http.Body; -import retrofit2.http.DELETE; -import retrofit2.http.GET; -import retrofit2.http.POST; -import retrofit2.http.Query; - -interface DataSetCompleteRegistrationService { +internal interface DataSetCompleteRegistrationService { @GET("completeDataSetRegistrations") - Single getDataSetCompleteRegistrations( - @Query("fields") @Which Fields fields, - @Query("lastUpdated") String lastUpdated, - @Query("dataSet") String dataSetUids, - @Query("period") String periodIds, - @Query("orgUnit") String organisationUnitIds, - @Query("children") Boolean children, - @Query("paging") Boolean paging - ); + fun getDataSetCompleteRegistrations( + @Query("fields") @Which fields: Fields, + @Query("lastUpdated") lastUpdated: String?, + @Query("dataSet") dataSetUids: String?, + @Query("period") periodIds: String?, + @Query("orgUnit") organisationUnitIds: String?, + @Query("children") children: Boolean?, + @Query("paging") paging: Boolean? + ): Single + + @POST("completeDataSetRegistrations") + fun postDataSetCompleteRegistrations( + @Body dataSetCompleteRegistrationPayload: DataSetCompleteRegistrationPayload + ): Call @POST("completeDataSetRegistrations") - Call postDataSetCompleteRegistrations( - @Body DataSetCompleteRegistrationPayload dataSetCompleteRegistrationPayload); + fun postDataSetCompleteRegistrationsWebResponse( + @Body dataSetCompleteRegistrationPayload: DataSetCompleteRegistrationPayload + ): Call @DELETE("completeDataSetRegistrations") - Call deleteDataSetCompleteRegistration( - @Query("ds") String dataSet, - @Query("pe") String periodId, - @Query("ou") String orgUnit, - @Query("cc") String categoryComboUid, - @Query("cp") String categoryOptionUids, - @Query("multiOu") Boolean multiOrganisationUnit); + fun deleteDataSetCompleteRegistration( + @Query("ds") dataSet: String?, + @Query("pe") periodId: String?, + @Query("ou") orgUnit: String?, + @Query("cc") categoryComboUid: String?, + @Query("cp") categoryOptionUids: String?, + @Query("multiOu") multiOrganisationUnit: Boolean? + ): Call } \ No newline at end of file From 9df7d4e67f36f8b9ce6fa9c4fb6306f9e7a95045 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 29 Mar 2022 19:20:58 +0200 Subject: [PATCH 212/253] [ANDROSDK-1525] Ktlint --- .../DataSetCompleteRegistrationPostCall.kt | 4 +-- .../DataSetCompleteRegistrationService.kt | 25 ++++++++++--------- .../datavalue/internal/DataValuePostCall.kt | 4 +-- .../datavalue/internal/DataValueService.kt | 7 +++--- ...DataValueImportSummaryWebResponseShould.kt | 6 ++--- 5 files changed, 24 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt index cb1e78eae7..7ce82ca3de 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.dataset.internal import dagger.Reusable import io.reactivex.Observable import io.reactivex.ObservableEmitter +import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager @@ -44,7 +45,6 @@ import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.systeminfo.DHISVersion import org.hisp.dhis.android.core.systeminfo.DHISVersionManager -import javax.inject.Inject @Reusable internal class DataSetCompleteRegistrationPostCall @Inject constructor( @@ -157,4 +157,4 @@ internal class DataSetCompleteRegistrationPostCall @Inject constructor( dataSetCompleteRegistrationStore.setState(dscr, forcedOrOwn(dscr, forcedState)) } } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt index b06348f62a..ecfead0036 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt @@ -37,17 +37,18 @@ import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResp import retrofit2.Call import retrofit2.http.* +@Suppress("LongParameterList") internal interface DataSetCompleteRegistrationService { @GET("completeDataSetRegistrations") fun getDataSetCompleteRegistrations( @Query("fields") @Which fields: Fields, @Query("lastUpdated") lastUpdated: String?, - @Query("dataSet") dataSetUids: String?, - @Query("period") periodIds: String?, - @Query("orgUnit") organisationUnitIds: String?, - @Query("children") children: Boolean?, - @Query("paging") paging: Boolean? + @Query("dataSet") dataSetUids: String, + @Query("period") periodIds: String, + @Query("orgUnit") organisationUnitIds: String, + @Query("children") children: Boolean, + @Query("paging") paging: Boolean ): Single @POST("completeDataSetRegistrations") @@ -62,11 +63,11 @@ internal interface DataSetCompleteRegistrationService { @DELETE("completeDataSetRegistrations") fun deleteDataSetCompleteRegistration( - @Query("ds") dataSet: String?, - @Query("pe") periodId: String?, - @Query("ou") orgUnit: String?, - @Query("cc") categoryComboUid: String?, - @Query("cp") categoryOptionUids: String?, - @Query("multiOu") multiOrganisationUnit: Boolean? + @Query("ds") dataSet: String, + @Query("pe") periodId: String, + @Query("ou") orgUnit: String, + @Query("cc") categoryComboUid: String, + @Query("cp") categoryOptionUids: String, + @Query("multiOu") multiOrganisationUnit: Boolean ): Call -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt index ec77a2e953..93b5bc3fc4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.datavalue.internal import dagger.Reusable import io.reactivex.Observable import io.reactivex.ObservableEmitter +import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.call.D2Progress import org.hisp.dhis.android.core.arch.call.internal.D2ProgressManager @@ -41,7 +42,6 @@ import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.systeminfo.DHISVersion import org.hisp.dhis.android.core.systeminfo.DHISVersionManager -import javax.inject.Inject @Reusable internal class DataValuePostCall @Inject constructor( @@ -91,4 +91,4 @@ internal class DataValuePostCall @Inject constructor( dataValueStore.setState(dataValue, forcedOrOwn(dataValue!!, forcedState)) } } -} \ No newline at end of file +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt index a3c56cc4fc..1efa0ace7a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt @@ -29,16 +29,17 @@ package org.hisp.dhis.android.core.datavalue.internal import io.reactivex.Single import org.hisp.dhis.android.core.arch.api.fields.internal.Fields -import retrofit2.http.GET import org.hisp.dhis.android.core.arch.api.filters.internal.Which import org.hisp.dhis.android.core.datavalue.DataValue -import retrofit2.http.POST import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResponse import retrofit2.Call import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.POST import retrofit2.http.Query +@Suppress("LongParameterList") internal interface DataValueService { @GET("dataValueSets") @@ -58,4 +59,4 @@ internal interface DataValueService { @POST("dataValueSets") fun postDataValuesWebResponse(@Body dataValueSet: DataValueSet): Call -} \ No newline at end of file +} diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt index efb693310c..30d808058f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt @@ -36,12 +36,12 @@ import org.junit.runner.RunWith import org.junit.runners.JUnit4 @RunWith(JUnit4::class) -class DataValueImportSummaryWebResponseShould - : BaseObjectShould("imports/data_value_import_summary_web_response.json"), ObjectShould { +class DataValueImportSummaryWebResponseShould : + BaseObjectShould("imports/data_value_import_summary_web_response.json"), ObjectShould { @Test override fun map_from_json_string() { val webResponse = objectMapper.readValue(jsonStream, DataValueImportSummaryWebResponse::class.java) assertThat(webResponse.response()!!.importStatus()).isEqualTo(ImportStatus.SUCCESS) } -} \ No newline at end of file +} From 22f5be22ee842d097f357338fa5c4f19d50863ca Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 30 Mar 2022 08:39:03 +0200 Subject: [PATCH 213/253] fix: [ANDROSDK-1525-2] Include errorClass in dataset sync --- .../internal/DataSetCompleteRegistrationPostCall.kt | 8 ++++++-- .../android/core/datavalue/internal/DataValuePostCall.kt | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt index 7ce82ca3de..c5c2f22943 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt @@ -42,9 +42,11 @@ import org.hisp.dhis.android.core.category.CategoryOptionComboCollectionReposito import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.dataset.DataSetCompleteRegistration import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResponse import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.systeminfo.DHISVersion import org.hisp.dhis.android.core.systeminfo.DHISVersionManager +import java.net.HttpURLConnection @Reusable internal class DataSetCompleteRegistrationPostCall @Inject constructor( @@ -139,8 +141,10 @@ internal class DataSetCompleteRegistrationPostCall @Inject constructor( private fun postCompleteRegistrations(payload: DataSetCompleteRegistrationPayload): DataValueImportSummary? { return if (versionManager.isGreaterOrEqualThan(DHISVersion.V2_38)) { - apiCallExecutor.executeObjectCall( - dataSetCompleteRegistrationService.postDataSetCompleteRegistrationsWebResponse(payload) + apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( + dataSetCompleteRegistrationService.postDataSetCompleteRegistrationsWebResponse(payload), + listOf(HttpURLConnection.HTTP_CONFLICT), + DataValueImportSummaryWebResponse::class.java ).response() } else { apiCallExecutor.executeObjectCall( diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt index 93b5bc3fc4..dd67553844 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt @@ -39,9 +39,11 @@ import org.hisp.dhis.android.core.arch.helpers.internal.DataStateHelper.forcedOr import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.datavalue.DataValue import org.hisp.dhis.android.core.imports.internal.DataValueImportSummary +import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResponse import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.systeminfo.DHISVersion import org.hisp.dhis.android.core.systeminfo.DHISVersionManager +import java.net.HttpURLConnection @Reusable internal class DataValuePostCall @Inject constructor( @@ -76,8 +78,10 @@ internal class DataValuePostCall @Inject constructor( private fun executePostCall(dataValueSet: DataValueSet): DataValueImportSummary? { return if (versionManager.isGreaterOrEqualThan(DHISVersion.V2_38)) { - apiCallExecutor.executeObjectCall( - dataValueService.postDataValuesWebResponse(dataValueSet) + apiCallExecutor.executeObjectCallWithAcceptedErrorCodes( + dataValueService.postDataValuesWebResponse(dataValueSet), + listOf(HttpURLConnection.HTTP_CONFLICT), + DataValueImportSummaryWebResponse::class.java ).response() } else { apiCallExecutor.executeObjectCall( From e638d255f0ca2f26e36eea6b012f95bcc8f38329 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Wed, 30 Mar 2022 15:19:54 +0200 Subject: [PATCH 214/253] Rename .java to .kt --- ...eCallErrorCatcher.java => UserAuthenticateCallErrorCatcher.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename core/src/main/java/org/hisp/dhis/android/core/user/internal/{UserAuthenticateCallErrorCatcher.java => UserAuthenticateCallErrorCatcher.kt} (100%) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt similarity index 100% rename from core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.java rename to core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt From 1304b7c6696099a71df1e982fb1f2b75434baef9 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Wed, 30 Mar 2022 15:19:54 +0200 Subject: [PATCH 215/253] Fix wrong D2Error return --- .../api/executors/internal/APIErrorMapper.kt | 6 +- .../UserAccountDisabledErrorCatcher.kt | 3 +- .../UserAuthenticateCallErrorCatcher.kt | 102 ++++++++---------- 3 files changed, 49 insertions(+), 62 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt index d408aab657..721e45d493 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt @@ -166,6 +166,10 @@ internal class APIErrorMapper @Inject constructor() { null } - return errorBody ?: "No error message" + return errorBody ?: noErrorMessage + } + + companion object { + internal const val noErrorMessage: String = "No error message" } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index e6627c10e6..127210383b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -32,6 +32,7 @@ import dagger.Reusable import java.net.HttpURLConnection import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher +import org.hisp.dhis.android.core.arch.api.executors.internal.APIErrorMapper import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import org.hisp.dhis.android.core.maintenance.D2ErrorCode import retrofit2.HttpException @@ -69,7 +70,7 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( fun catchError(throwable: Throwable): D2ErrorCode? { val response = (throwable as HttpException).response()!! - val errorBody = response.errorBody()?.string() ?: "No error" + val errorBody = APIErrorMapper().getErrorBody(response) return catchError(response, errorBody) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt index 125e9e7da7..bd5d4d2bcd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt @@ -25,79 +25,61 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +package org.hisp.dhis.android.core.user.internal -package org.hisp.dhis.android.core.user.internal; - -import android.util.Log; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher; -import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse; -import org.hisp.dhis.android.core.maintenance.D2ErrorCode; - -import java.io.IOException; -import java.net.HttpURLConnection; - -import javax.inject.Inject; - -import dagger.Reusable; -import retrofit2.Response; +import android.util.Log +import com.fasterxml.jackson.databind.ObjectMapper +import dagger.Reusable +import java.lang.Exception +import java.net.HttpURLConnection +import javax.inject.Inject +import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatcher +import org.hisp.dhis.android.core.arch.api.executors.internal.APIErrorMapper +import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse +import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import retrofit2.Response @Reusable -class UserAuthenticateCallErrorCatcher implements APICallErrorCatcher { - - private final ObjectMapper objectMapper; - - @Inject - UserAuthenticateCallErrorCatcher(ObjectMapper objectMapper) { - this.objectMapper = objectMapper; - } - - @Override - public Boolean mustBeStored() { - return true; +internal class UserAuthenticateCallErrorCatcher @Inject constructor(private val objectMapper: ObjectMapper) : + APICallErrorCatcher { + override fun mustBeStored(): Boolean { + return true } - @Override - public D2ErrorCode catchError(Response response, String errorBody) { - - String errorBodyStr = null; - if (response.errorBody() != null) { - try { - errorBodyStr = response.errorBody().string(); - } catch (IOException e) { - return D2ErrorCode.NO_DHIS2_SERVER; + @Suppress("TooGenericExceptionCaught") + override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode { + return try { + if (errorBody == APIErrorMapper.noErrorMessage) { + D2ErrorCode.NO_DHIS2_SERVER } - } - - try { - HttpMessageResponse errorResponse = objectMapper.readValue(errorBodyStr, HttpMessageResponse.class); - boolean isUnauthorized = response.code() == HttpURLConnection.HTTP_UNAUTHORIZED; + val errorResponse = objectMapper.readValue(errorBody, HttpMessageResponse::class.java) + val isUnauthorized = response.code() == HttpURLConnection.HTTP_UNAUTHORIZED if (isUnauthorized && errorResponse.message().contains("Account locked")) { - return D2ErrorCode.USER_ACCOUNT_LOCKED; + D2ErrorCode.USER_ACCOUNT_LOCKED } else if (isUnauthorized) { - return D2ErrorCode.BAD_CREDENTIALS; - } else if (hasInvalidCharacters(response.code(), errorBodyStr)) { - return D2ErrorCode.INVALID_CHARACTERS; + D2ErrorCode.BAD_CREDENTIALS + } else if (hasInvalidCharacters(response.code(), errorBody)) { + D2ErrorCode.INVALID_CHARACTERS } else { - return D2ErrorCode.NO_DHIS2_SERVER; + D2ErrorCode.NO_DHIS2_SERVER } - } catch (Exception e) { - if (hasInvalidCharacters(response.code(), errorBodyStr)) { - return D2ErrorCode.INVALID_CHARACTERS; + } catch (e: Exception) { + if (hasInvalidCharacters(response.code(), errorBody)) { + D2ErrorCode.INVALID_CHARACTERS + } else { + Log.e(UserAuthenticateCallErrorCatcher::class.java.simpleName, e.javaClass.simpleName, e) + D2ErrorCode.NO_DHIS2_SERVER } - Log.e(UserAuthenticateCallErrorCatcher.class.getSimpleName(), e.getClass().getSimpleName(), e); - return D2ErrorCode.NO_DHIS2_SERVER; } } - private boolean hasInvalidCharacters(int code, String errorBodyStr) { - try { - boolean isBadRequest = code == HttpURLConnection.HTTP_BAD_REQUEST; - return isBadRequest && errorBodyStr.contains("Invalid character"); - } catch (Exception e) { - return false; + @Suppress("TooGenericExceptionCaught") + private fun hasInvalidCharacters(code: Int, errorBodyStr: String): Boolean { + return try { + val isBadRequest = code == HttpURLConnection.HTTP_BAD_REQUEST + isBadRequest && errorBodyStr.contains("Invalid character") + } catch (e: Exception) { + false } } -} \ No newline at end of file +} From f577e8d63a8afe3f9ebfe91ab4fc1a305c2d22ce Mon Sep 17 00:00:00 2001 From: jaimeToca Date: Wed, 30 Mar 2022 16:09:03 +0200 Subject: [PATCH 216/253] update SDK with fix --- .../org/hisp/dhis/android/core/D2Manager.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index f4ccef38d5..49cad23624 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -36,6 +36,7 @@ import org.hisp.dhis.android.core.arch.api.ssl.internal.SSLContextInitializer import org.hisp.dhis.android.core.arch.d2.internal.D2DIComponent import org.hisp.dhis.android.core.arch.storage.internal.AndroidInsecureStore import org.hisp.dhis.android.core.arch.storage.internal.AndroidSecureStore +import org.hisp.dhis.android.core.arch.storage.internal.Credentials import org.hisp.dhis.android.core.arch.storage.internal.InsecureStore import org.hisp.dhis.android.core.arch.storage.internal.SecureStore @@ -52,6 +53,7 @@ object D2Manager { private var testingServerUrl: String? = null private var testingDatabaseName: String? = null private var testingUsername: String? = null + private lateinit var d2DIComponent : D2DIComponent /** * Returns the D2 instance, given that it has already been initialized using the @@ -87,7 +89,7 @@ object D2Manager { val insecureStore = testingInsecureStore ?: AndroidInsecureStore(context) val d2Configuration = validateAndSetDefaultValues(d2Config) - val d2DIComponent = D2DIComponent.create(d2Configuration, secureStore, insecureStore) + d2DIComponent = D2DIComponent.create(d2Configuration, secureStore, insecureStore) if (isTestMode) { enableNotClosedObjectsDetection() @@ -103,6 +105,7 @@ object D2Manager { val credentials = d2DIComponent.credentialsSecureStore().get() if (wantToImportDBForExternalTesting()) { + // d2DIComponent.credentialsSecureStore().set(Credentials("Android", testingServerUrl!!,"Android123!", null)) multiUserDatabaseManager.loadDbForTesting( testingServerUrl, testingDatabaseName, @@ -163,6 +166,19 @@ object D2Manager { testingUsername = username } + @VisibleForTesting + fun removeCredentials(){ + d2DIComponent.credentialsSecureStore().remove() + } + + @VisibleForTesting + fun setCredentials(username: String, password: String){ + if (testingServerUrl.isNullOrEmpty()){ + throw NoSuchFieldException("No testing Server Url") + } + d2DIComponent.credentialsSecureStore().set(Credentials(username, testingServerUrl!!,password, null)) + } + private fun wantToImportDBForExternalTesting(): Boolean { return testingDatabaseName != null && testingUsername != null } From b4ed4b7195e5286c9f3f4129ed125ae4edaaeb5c Mon Sep 17 00:00:00 2001 From: jaimeToca Date: Wed, 30 Mar 2022 16:11:21 +0200 Subject: [PATCH 217/253] Remove comment --- core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index 49cad23624..0d7662b534 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -105,7 +105,6 @@ object D2Manager { val credentials = d2DIComponent.credentialsSecureStore().get() if (wantToImportDBForExternalTesting()) { - // d2DIComponent.credentialsSecureStore().set(Credentials("Android", testingServerUrl!!,"Android123!", null)) multiUserDatabaseManager.loadDbForTesting( testingServerUrl, testingDatabaseName, From 4a08be831f897dbbc255a152e99b6b049e8f78ab Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 30 Mar 2022 16:12:36 +0200 Subject: [PATCH 218/253] [ANDROSDK-1525-2] Ktlint --- .../dataset/internal/DataSetCompleteRegistrationPostCall.kt | 2 +- .../dhis/android/core/datavalue/internal/DataValuePostCall.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt index c5c2f22943..19e5e03ad7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.dataset.internal import dagger.Reusable import io.reactivex.Observable import io.reactivex.ObservableEmitter +import java.net.HttpURLConnection import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.call.D2Progress @@ -46,7 +47,6 @@ import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResp import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.systeminfo.DHISVersion import org.hisp.dhis.android.core.systeminfo.DHISVersionManager -import java.net.HttpURLConnection @Reusable internal class DataSetCompleteRegistrationPostCall @Inject constructor( diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt index dd67553844..21610de266 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt @@ -30,6 +30,7 @@ package org.hisp.dhis.android.core.datavalue.internal import dagger.Reusable import io.reactivex.Observable import io.reactivex.ObservableEmitter +import java.net.HttpURLConnection import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.APICallExecutor import org.hisp.dhis.android.core.arch.call.D2Progress @@ -43,7 +44,6 @@ import org.hisp.dhis.android.core.imports.internal.DataValueImportSummaryWebResp import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.systeminfo.DHISVersion import org.hisp.dhis.android.core.systeminfo.DHISVersionManager -import java.net.HttpURLConnection @Reusable internal class DataValuePostCall @Inject constructor( From 95db9f670400341d9e800369b02e29f2e13e85b4 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Wed, 30 Mar 2022 16:12:41 +0200 Subject: [PATCH 219/253] [androsdk-1524] Fix catchError method not returning no dhis2 server --- .../UserAuthenticateCallErrorCatcher.kt | 21 ++++++++++--------- .../internal/LogInCallErrorCatcherShould.java | 11 +++++----- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt index bd5d4d2bcd..b96230b14c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt @@ -51,17 +51,18 @@ internal class UserAuthenticateCallErrorCatcher @Inject constructor(private val return try { if (errorBody == APIErrorMapper.noErrorMessage) { D2ErrorCode.NO_DHIS2_SERVER - } - val errorResponse = objectMapper.readValue(errorBody, HttpMessageResponse::class.java) - val isUnauthorized = response.code() == HttpURLConnection.HTTP_UNAUTHORIZED - if (isUnauthorized && errorResponse.message().contains("Account locked")) { - D2ErrorCode.USER_ACCOUNT_LOCKED - } else if (isUnauthorized) { - D2ErrorCode.BAD_CREDENTIALS - } else if (hasInvalidCharacters(response.code(), errorBody)) { - D2ErrorCode.INVALID_CHARACTERS } else { - D2ErrorCode.NO_DHIS2_SERVER + val errorResponse = objectMapper.readValue(errorBody, HttpMessageResponse::class.java) + val isUnauthorized = response.code() == HttpURLConnection.HTTP_UNAUTHORIZED + if (isUnauthorized && errorResponse.message().contains("Account locked")) { + D2ErrorCode.USER_ACCOUNT_LOCKED + } else if (isUnauthorized) { + D2ErrorCode.BAD_CREDENTIALS + } else if (hasInvalidCharacters(response.code(), errorBody)) { + D2ErrorCode.INVALID_CHARACTERS + } else { + D2ErrorCode.NO_DHIS2_SERVER + } } } catch (e: Exception) { if (hasInvalidCharacters(response.code(), errorBody)) { diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java index e936a2b3b6..78ba7c8e67 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.user.internal; +import org.hisp.dhis.android.core.arch.api.executors.internal.APIErrorMapper; import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory; import org.hisp.dhis.android.core.maintenance.D2ErrorCode; import org.junit.Before; @@ -54,7 +55,7 @@ public void setUp() { public void return_bad_credentials_error_for_expected_error_response() { String responseError = "{\"httpStatus\":\"Unauthorized\",\"httpStatusCode\":401,\"status\":\"ERROR\",\"message\":\"Unauthorized\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - String errorBody = response.errorBody().toString(); + String errorBody = new APIErrorMapper().getErrorBody(response); assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.BAD_CREDENTIALS); } @@ -62,7 +63,7 @@ public void return_bad_credentials_error_for_expected_error_response() { public void return_bad_credentials_error_for_other_messages() { String responseError = "{\"httpStatus\":\"Unauthorized\",\"httpStatusCode\":401,\"status\":\"ERROR\",\"message\":\"Something new\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - String errorBody = response.errorBody().toString(); + String errorBody = new APIErrorMapper().getErrorBody(response); assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.BAD_CREDENTIALS); } @@ -70,7 +71,7 @@ public void return_bad_credentials_error_for_other_messages() { public void return_account_locked() { String responseError = "{\"httpStatus\":\"Unauthorized\",\"httpStatusCode\":401,\"status\":\"ERROR\",\"message\":\"Account locked\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - String errorBody = response.errorBody().toString(); + String errorBody = new APIErrorMapper().getErrorBody(response); assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.USER_ACCOUNT_LOCKED); } @@ -78,7 +79,7 @@ public void return_account_locked() { public void return_no_dhis_server_for_another_json() { String responseError = "{\"other\":\"JSON\"}"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - String errorBody = response.errorBody().toString(); + String errorBody = new APIErrorMapper().getErrorBody(response); assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.NO_DHIS2_SERVER); } @@ -86,7 +87,7 @@ public void return_no_dhis_server_for_another_json() { public void return_no_dhis_server_for_non_json() { String responseError = "ERROR"; Response response = Response.error(401, ResponseBody.create(null, responseError)); - String errorBody = response.errorBody().toString(); + String errorBody = new APIErrorMapper().getErrorBody(response); assertThat(catcher.catchError(response, errorBody)).isEqualTo(D2ErrorCode.NO_DHIS2_SERVER); } } From bd27fe82273ba5b08d91b169341de38e91ad13bc Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 30 Mar 2022 16:29:17 +0200 Subject: [PATCH 220/253] [ANDROSDK-1526] Add missing enums for ValueType --- .../org/hisp/dhis/android/core/common/ValueType.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt b/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt index 1ee28d76ad..25ca2d4a4d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt @@ -34,6 +34,8 @@ enum class ValueType(val validator: ValueTypeValidator<*>) { TEXT(TextValidator), LONG_TEXT(LongTextValidator), LETTER(LetterValidator), + PHONE_NUMBER(PhoneNumberValidator), + EMAIL(EmailValidator), BOOLEAN(BooleanValidator), TRUE_ONLY(TrueOnlyValidator), DATE(DateValidator), @@ -46,16 +48,16 @@ enum class ValueType(val validator: ValueTypeValidator<*>) { INTEGER_POSITIVE(IntegerPositiveValidator), INTEGER_NEGATIVE(IntegerNegativeValidator), INTEGER_ZERO_OR_POSITIVE(IntegerZeroOrPositiveValidator), - FILE_RESOURCE(UidValidator), - COORDINATE(CoordinateValidator), - PHONE_NUMBER(PhoneNumberValidator), - EMAIL(EmailValidator), + TRACKER_ASSOCIATE(UidValidator), USERNAME(TextValidator), + COORDINATE(CoordinateValidator), ORGANISATION_UNIT(UidValidator), - TRACKER_ASSOCIATE(UidValidator), + REFERENCE(TextValidator), AGE(DateValidator), URL(TextValidator), - IMAGE(UidValidator); + FILE_RESOURCE(UidValidator), + IMAGE(UidValidator), + GEOJSON(TextValidator); val isInteger: Boolean get() = INTEGER_TYPES.contains(this) From 7aaf04f2040612ade3903bb22a23c16c4453b904 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 30 Mar 2022 16:30:32 +0200 Subject: [PATCH 221/253] [ANDROSDK-1526] Add missing enums for FeatureType --- .../java/org/hisp/dhis/android/core/common/FeatureType.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java b/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java index 50c5ca4bb5..8aa4c6152e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java @@ -33,7 +33,8 @@ public enum FeatureType { POINT("POINT", "Point"), POLYGON("POLYGON", "Polygon"), MULTI_POLYGON("MULTI_POLYGON", "MultiPolygon"), - NONE("NONE", "None"); + NONE("NONE", "None"), + SYMBOL("SYMBOL", "Symbol"); private final String featureType; private final String geometryType; From 94bc23b21e7ad9b028b7bc4c15b9e5656c1902bd Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 30 Mar 2022 16:33:46 +0200 Subject: [PATCH 222/253] [ANDROSDK-1526] Add missing enums for VisualizationType --- .../hisp/dhis/android/core/visualization/VisualizationType.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt index c91c0e9bc7..c374a1ab3e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt @@ -34,6 +34,7 @@ enum class VisualizationType { STACKED_BAR, LINE, AREA, + STACKED_AREA, PIE, RADAR, GAUGE, From 3e8656d65a15602f44abc2099c569d3c52ec614e Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 30 Mar 2022 16:46:40 +0200 Subject: [PATCH 223/253] [ANDROSDK-1526] Add missing enums for ValueTypeRenderingType --- .../core/common/ValueTypeRenderingType.java | 3 ++- .../core/dataapproval/DataApprovalState.java | 14 +++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java index d1fa00b960..4ce7b9ebff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java @@ -45,5 +45,6 @@ public enum ValueTypeRenderingType { LINEAR_SCALE, AUTOCOMPLETE, QR_CODE, - BAR_CODE + BAR_CODE, + GS1_DATAMATRIX } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java index 351734c558..54c71b3619 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java @@ -29,7 +29,15 @@ package org.hisp.dhis.android.core.dataapproval; public enum DataApprovalState { - UNAPPROVABLE, UNAPPROVED_WAITING, UNAPPROVED_ELSEWHERE, UNAPPROVED_READY, UNAPPROVED_ABOVE, - APPROVED_HERE, APPROVED_ELSEWHERE, APPROVED_ABOVE, - ACCEPTED_HERE, ACCEPTED_ELSEWHERE + UNAPPROVABLE, + UNAPPROVED_ABOVE, + UNAPPROVED_WAITING, + UNAPPROVED_READY, + APPROVED_ABOVE, + APPROVED_HERE, + ACCEPTED_HERE, + + UNAPPROVED_ELSEWHERE, + APPROVED_ELSEWHERE, + ACCEPTED_ELSEWHERE } From 4b898119677d923bda5d117863fcaa25d5486f42 Mon Sep 17 00:00:00 2001 From: ericampire Date: Tue, 29 Mar 2022 16:01:29 +0200 Subject: [PATCH 224/253] [ANDROSDK-1523] Database Migration --- core/src/main/assets/migrations/124.sql | 3 +++ core/src/main/assets/snapshots/{123.sql => 124.sql} | 2 +- .../core/arch/db/access/internal/BaseDatabaseOpenHelper.java | 2 +- .../core/category/CategoryOptionOrganisationUnitLink.java | 4 ++++ 4 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 core/src/main/assets/migrations/124.sql rename core/src/main/assets/snapshots/{123.sql => 124.sql} (99%) diff --git a/core/src/main/assets/migrations/124.sql b/core/src/main/assets/migrations/124.sql new file mode 100644 index 0000000000..2bc0839eca --- /dev/null +++ b/core/src/main/assets/migrations/124.sql @@ -0,0 +1,3 @@ +# Add restriction (ANDROSDK-1523); + +ALTER TABLE CategoryOptionOrganisationUnitLink ADD COLUMN restriction TEXT NOT NULL; \ No newline at end of file diff --git a/core/src/main/assets/snapshots/123.sql b/core/src/main/assets/snapshots/124.sql similarity index 99% rename from core/src/main/assets/snapshots/123.sql rename to core/src/main/assets/snapshots/124.sql index b99aa5f016..aa17f22225 100644 --- a/core/src/main/assets/snapshots/123.sql +++ b/core/src/main/assets/snapshots/124.sql @@ -97,7 +97,7 @@ CREATE TABLE UserSettings (_id INTEGER PRIMARY KEY AUTOINCREMENT, keyUiLocale TE CREATE TABLE AggregatedDataSync (_id INTEGER PRIMARY KEY AUTOINCREMENT, dataSet TEXT NOT NULL UNIQUE, periodType TEXT NOT NULL, pastPeriods INTEGER NOT NULL, futurePeriods INTEGER NOT NULL, dataElementsHash INTEGER NOT NULL, organisationUnitsHash INTEGER NOT NULL, lastUpdated TEXT NOT NULL, FOREIGN KEY (dataSet) REFERENCES DataSet (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE TrackedEntityInstanceSync (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT, organisationUnitIdsHash INTEGER, downloadLimit INTEGER NOT NULL, lastUpdated TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (program, organisationUnitIdsHash)); CREATE TABLE EventSync (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT, organisationUnitIdsHash INTEGER, downloadLimit INTEGER NOT NULL, lastUpdated TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (program, organisationUnitIdsHash)); -CREATE TABLE CategoryOptionOrganisationUnitLink (_id INTEGER PRIMARY KEY AUTOINCREMENT, categoryOption TEXT NOT NULL, organisationUnit TEXT NOT NULL, FOREIGN KEY (categoryOption) REFERENCES CategoryOption (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (organisationUnit) REFERENCES OrganisationUnit (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (categoryOption, organisationUnit)); +CREATE TABLE CategoryOptionOrganisationUnitLink (_id INTEGER PRIMARY KEY AUTOINCREMENT, categoryOption TEXT NOT NULL, organisationUnit TEXT NOT NULL, restriction TEXT NOT NULL, FOREIGN KEY (categoryOption) REFERENCES CategoryOption (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (organisationUnit) REFERENCES OrganisationUnit (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (categoryOption, organisationUnit)); CREATE TABLE TrackedEntityInstanceFilter (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT NOT NULL UNIQUE, code TEXT, name TEXT, displayName TEXT, created TEXT, lastUpdated TEXT, color TEXT, icon TEXT, program TEXT NOT NULL, description TEXT, sortOrder INTEGER, enrollmentStatus TEXT, followUp INTEGER, periodFrom INTEGER, periodTo INTEGER, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE TrackedEntityInstanceEventFilter (_id INTEGER PRIMARY KEY AUTOINCREMENT, trackedEntityInstanceFilter TEXT NOT NULL, programStage TEXT, eventStatus TEXT, periodFrom INTEGER, periodTo INTEGER, assignedUserMode TEXT, FOREIGN KEY (trackedEntityInstanceFilter) REFERENCES TrackedEntityInstanceFilter (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE EventFilter (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT NOT NULL UNIQUE, code TEXT, name TEXT, displayName TEXT, created TEXT, lastUpdated TEXT, program TEXT NOT NULL, programStage TEXT, description TEXT, followUp INTEGER, organisationUnit TEXT, ouMode TEXT, assignedUserMode TEXT, orderProperty TEXT, displayColumnOrder TEXT, events TEXT, eventStatus TEXT, eventDate TEXT, dueDate TEXT, lastUpdatedDate TEXT, completedDate TEXT, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (programStage) REFERENCES ProgramStage (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (organisationUnit) REFERENCES OrganisationUnit (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java index 6968f4bb77..3b1fe1065b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java @@ -36,7 +36,7 @@ class BaseDatabaseOpenHelper { - static final int VERSION = 123; + static final int VERSION = 124; private final AssetManager assetManager; private final int targetVersion; diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java index e0cbc461b8..b4db618e36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java @@ -46,6 +46,8 @@ public abstract class CategoryOptionOrganisationUnitLink implements CoreObject { @NonNull public abstract String organisationUnit(); + public abstract String restriction(); + public static Builder builder() { return new $$AutoValue_CategoryOptionOrganisationUnitLink.Builder(); } @@ -64,6 +66,8 @@ public static abstract class Builder extends BaseObject.Builder { public abstract Builder organisationUnit(String organisationUnit); + public abstract Builder restriction(String restriction); + public abstract CategoryOptionOrganisationUnitLink build(); } } \ No newline at end of file From abbc11e0b1c4d2403f9bf120d46a34ac292454d3 Mon Sep 17 00:00:00 2001 From: ericampire Date: Thu, 31 Mar 2022 11:48:16 +0200 Subject: [PATCH 225/253] [ANDROSDK-1523] CategoryOption - OrgUnit: differentiate empty list and no restrictions --- core/src/main/assets/migrations/124.sql | 5 +- core/src/main/assets/snapshots/124.sql | 2 +- .../CategoryOptionOrganisationUnitLink.java | 5 +- ...ryOptionOrganisationUnitLinkTableInfo.java | 3 +- ...oryOptionOrganisationUnitEntityDIModule.kt | 3 +- ...CategoryOptionOrganisationUnitLinkStore.kt | 2 + .../CategoryOptionOrganisationUnitsCall.kt | 76 +++++++++++++++---- 7 files changed, 74 insertions(+), 22 deletions(-) diff --git a/core/src/main/assets/migrations/124.sql b/core/src/main/assets/migrations/124.sql index 2bc0839eca..6516415b30 100644 --- a/core/src/main/assets/migrations/124.sql +++ b/core/src/main/assets/migrations/124.sql @@ -1,3 +1,6 @@ # Add restriction (ANDROSDK-1523); -ALTER TABLE CategoryOptionOrganisationUnitLink ADD COLUMN restriction TEXT NOT NULL; \ No newline at end of file +ALTER TABLE CategoryOptionOrganisationUnitLink RENAME TO CategoryOptionOrganisationUnitLink_Old; +CREATE TABLE CategoryOptionOrganisationUnitLink (_id INTEGER PRIMARY KEY AUTOINCREMENT, categoryOption TEXT NOT NULL, organisationUnit TEXT, restriction TEXT, FOREIGN KEY (categoryOption) REFERENCES CategoryOption (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (organisationUnit) REFERENCES OrganisationUnit (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (categoryOption, organisationUnit)); +INSERT INTO CategoryOptionOrganisationUnitLink (_id, organisationUnit, categoryOption) SELECT _id, organisationUnit, categoryOption FROM CategoryOptionOrganisationUnitLink_Old; +DROP TABLE IF EXISTS CategoryOptionOrganisationUnitLink_Old; \ No newline at end of file diff --git a/core/src/main/assets/snapshots/124.sql b/core/src/main/assets/snapshots/124.sql index aa17f22225..fb9e1a6cc4 100644 --- a/core/src/main/assets/snapshots/124.sql +++ b/core/src/main/assets/snapshots/124.sql @@ -97,7 +97,7 @@ CREATE TABLE UserSettings (_id INTEGER PRIMARY KEY AUTOINCREMENT, keyUiLocale TE CREATE TABLE AggregatedDataSync (_id INTEGER PRIMARY KEY AUTOINCREMENT, dataSet TEXT NOT NULL UNIQUE, periodType TEXT NOT NULL, pastPeriods INTEGER NOT NULL, futurePeriods INTEGER NOT NULL, dataElementsHash INTEGER NOT NULL, organisationUnitsHash INTEGER NOT NULL, lastUpdated TEXT NOT NULL, FOREIGN KEY (dataSet) REFERENCES DataSet (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE TrackedEntityInstanceSync (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT, organisationUnitIdsHash INTEGER, downloadLimit INTEGER NOT NULL, lastUpdated TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (program, organisationUnitIdsHash)); CREATE TABLE EventSync (_id INTEGER PRIMARY KEY AUTOINCREMENT, program TEXT, organisationUnitIdsHash INTEGER, downloadLimit INTEGER NOT NULL, lastUpdated TEXT NOT NULL, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (program, organisationUnitIdsHash)); -CREATE TABLE CategoryOptionOrganisationUnitLink (_id INTEGER PRIMARY KEY AUTOINCREMENT, categoryOption TEXT NOT NULL, organisationUnit TEXT NOT NULL, restriction TEXT NOT NULL, FOREIGN KEY (categoryOption) REFERENCES CategoryOption (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (organisationUnit) REFERENCES OrganisationUnit (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (categoryOption, organisationUnit)); +CREATE TABLE CategoryOptionOrganisationUnitLink (_id INTEGER PRIMARY KEY AUTOINCREMENT, categoryOption TEXT NOT NULL, organisationUnit TEXT, restriction TEXT, FOREIGN KEY (categoryOption) REFERENCES CategoryOption (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (organisationUnit) REFERENCES OrganisationUnit (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, UNIQUE (categoryOption, organisationUnit)); CREATE TABLE TrackedEntityInstanceFilter (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT NOT NULL UNIQUE, code TEXT, name TEXT, displayName TEXT, created TEXT, lastUpdated TEXT, color TEXT, icon TEXT, program TEXT NOT NULL, description TEXT, sortOrder INTEGER, enrollmentStatus TEXT, followUp INTEGER, periodFrom INTEGER, periodTo INTEGER, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE TrackedEntityInstanceEventFilter (_id INTEGER PRIMARY KEY AUTOINCREMENT, trackedEntityInstanceFilter TEXT NOT NULL, programStage TEXT, eventStatus TEXT, periodFrom INTEGER, periodTo INTEGER, assignedUserMode TEXT, FOREIGN KEY (trackedEntityInstanceFilter) REFERENCES TrackedEntityInstanceFilter (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); CREATE TABLE EventFilter (_id INTEGER PRIMARY KEY AUTOINCREMENT, uid TEXT NOT NULL UNIQUE, code TEXT, name TEXT, displayName TEXT, created TEXT, lastUpdated TEXT, program TEXT NOT NULL, programStage TEXT, description TEXT, followUp INTEGER, organisationUnit TEXT, ouMode TEXT, assignedUserMode TEXT, orderProperty TEXT, displayColumnOrder TEXT, events TEXT, eventStatus TEXT, eventDate TEXT, dueDate TEXT, lastUpdatedDate TEXT, completedDate TEXT, FOREIGN KEY (program) REFERENCES Program (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (programStage) REFERENCES ProgramStage (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, FOREIGN KEY (organisationUnit) REFERENCES OrganisationUnit (uid) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED); diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java index b4db618e36..8f05ed1dfb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java @@ -31,6 +31,7 @@ import android.database.Cursor; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.google.auto.value.AutoValue; @@ -43,7 +44,7 @@ public abstract class CategoryOptionOrganisationUnitLink implements CoreObject { @NonNull public abstract String categoryOption(); - @NonNull + @Nullable public abstract String organisationUnit(); public abstract String restriction(); @@ -64,7 +65,7 @@ public static abstract class Builder extends BaseObject.Builder { public abstract Builder categoryOption(String categoryOption); - public abstract Builder organisationUnit(String organisationUnit); + public abstract Builder organisationUnit(@Nullable String organisationUnit); public abstract Builder restriction(String restriction); diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java index 888365d5c7..82e4a9686a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java @@ -54,11 +54,12 @@ public static class Columns extends CoreColumns { public static final String CATEGORY_OPTION = "categoryOption"; public static final String ORGANISATION_UNIT = "organisationUnit"; + public static final String RESTRICTION = "restriction"; @Override public String[] all() { return CollectionsHelper.appendInNewArray(super.all(), - CATEGORY_OPTION, ORGANISATION_UNIT); + CATEGORY_OPTION, ORGANISATION_UNIT, RESTRICTION); } @Override diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt index 941da5f97c..fc38f1e464 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt @@ -35,7 +35,6 @@ import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandler import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandlerImpl import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLink -import org.hisp.dhis.android.core.common.ObjectWithUid @Module internal class CategoryOptionOrganisationUnitEntityDIModule { @@ -49,7 +48,7 @@ internal class CategoryOptionOrganisationUnitEntityDIModule { @Provides @Reusable fun handler(store: LinkStore): - LinkHandler { + LinkHandler { return LinkHandlerImpl(store) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt index 682ba1f579..bc18407750 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt @@ -35,10 +35,12 @@ import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLink import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLinkTableInfo +@Suppress("MagicNumber") internal object CategoryOptionOrganisationUnitLinkStore { private val BINDER = StatementBinder { o: CategoryOptionOrganisationUnitLink, w: StatementWrapper -> w.bind(1, o.categoryOption()) w.bind(2, o.organisationUnit()) + w.bind(3, o.restriction()) } fun create(databaseAdapter: DatabaseAdapter): LinkStore { diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt index 6386b646d9..8cd2467245 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt @@ -34,13 +34,12 @@ import org.hisp.dhis.android.core.arch.api.executors.internal.APIDownloader import org.hisp.dhis.android.core.arch.handlers.internal.LinkHandler import org.hisp.dhis.android.core.arch.helpers.internal.UrlLengthHelper import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLink -import org.hisp.dhis.android.core.common.ObjectWithUid import org.hisp.dhis.android.core.systeminfo.DHISVersion import org.hisp.dhis.android.core.systeminfo.DHISVersionManager @Reusable internal class CategoryOptionOrganisationUnitsCall @Inject constructor( - private val handler: LinkHandler, + private val handler: LinkHandler, private val service: CategoryOptionService, private val dhisVersionManager: DHISVersionManager, private val apiDownloader: APIDownloader @@ -53,10 +52,13 @@ internal class CategoryOptionOrganisationUnitsCall @Inject constructor( fun download(uids: Set): Single>> { return if (dhisVersionManager.isGreaterOrEqualThan(DHISVersion.V2_37)) { apiDownloader.downloadPartitionedMap( - uids, - UrlLengthHelper.getHowManyUidsFitInURL(QUERY_WITHOUT_UIDS_LENGTH), - { map: Map> -> map.forEach { handleEntry(it) } }, - { partitionUids: Set -> + uids = uids, + pageSize = UrlLengthHelper.getHowManyUidsFitInURL(QUERY_WITHOUT_UIDS_LENGTH), + handler = { map: Map> -> + val data = getUpdatedEntries(uids, map) + data.forEach { handleEntry(it) } + }, + pageDownloader = { partitionUids: Set -> service.getCategoryOptionOrgUnits(partitionUids.joinToString(",")) } ) @@ -65,15 +67,59 @@ internal class CategoryOptionOrganisationUnitsCall @Inject constructor( } } - private fun handleEntry(entry: Map.Entry>) { - handler.handleMany( - entry.key, - entry.value.filterNotNull().map { ObjectWithUid.create(it) } - ) { o -> - CategoryOptionOrganisationUnitLink.builder() - .organisationUnit(o.uid()) - .categoryOption(entry.key) - .build() + private fun getUpdatedEntries( + uids: Set, + data: Map> + ): Map> { + + val updatedEntries = mutableMapOf>() + for (uid in uids) { + if (!data.keys.contains(uid)) { + updatedEntries[uid] = listOf(CategoryOptionRestriction.NotAccessibleToUser()) + } else { + updatedEntries[uid] = data[uid]!!.map { + if (it == null) { + CategoryOptionRestriction.NotRestricted() + } else { + CategoryOptionRestriction.Restricted(it) + } + } + } } + return updatedEntries + } + + private fun handleEntry(entry: Map.Entry>) { + handler.handleMany( + masterUid = entry.key, + slaves = entry.value, + transformer = { o -> + val orgUnit = when (o) { + is CategoryOptionRestriction.NotAccessibleToUser -> null + is CategoryOptionRestriction.NotRestricted -> null + is CategoryOptionRestriction.Restricted -> o.uid + } + CategoryOptionOrganisationUnitLink.builder() + .organisationUnit(orgUnit) + .categoryOption(entry.key) + .restriction(o.label) + .build() + } + ) + } + + sealed class CategoryOptionRestriction(open val label: String) { + data class Restricted( + val uid: String, + override val label: String = "RESTRICTED" + ) : CategoryOptionRestriction(label) + + class NotRestricted( + override val label: String = "NOT_RESTRICTED" + ) : CategoryOptionRestriction(label) + + class NotAccessibleToUser( + override val label: String = "NOT_ACCESSIBLE_TO_USER" + ) : CategoryOptionRestriction(label) } } From 4e5b72790f2a0eeeee7446ca0f5606b6a357a11a Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 31 Mar 2022 12:39:08 +0200 Subject: [PATCH 226/253] [ANDROSDK-1527] Add explicit sortOrder property in TEI download --- .../internal/TrackedEntityInstanceService.kt | 1 + .../TrackedEntityInstancesEndpointCallFactory.kt | 12 ++++++++++++ .../TrackedEntityInstanceQueryScopeOrderByItem.java | 6 +++--- .../TrackedEntityInstanceQueryScopeOrderColumn.java | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt index d5e1d6bedb..56cbd9f988 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt @@ -83,6 +83,7 @@ internal interface TrackedEntityInstanceService { @Query(PROGRAM_STATUS) programStatus: String?, @Query(PROGRAM_START_DATE) programStartDate: String?, @Query(FIELDS) @Which fields: Fields, + @Query(ORDER) order: String?, @Query(PAGING) paging: Boolean, @Query(PAGE) page: Int, @Query(PAGE_SIZE) pageSize: Int, diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt index 5fdf1bc422..37e72f960e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt @@ -32,7 +32,10 @@ import io.reactivex.Single import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.payload.internal.Payload import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper +import org.hisp.dhis.android.core.arch.repositories.scope.RepositoryScope import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryScopeOrderByItem +import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryScopeOrderColumn import retrofit2.Call @Reusable @@ -49,6 +52,7 @@ internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( getProgramStatus(query), getProgramStartDate(query), TrackedEntityInstanceFields.allFields, + defaultSortOrder.toAPIString(), true, query.page(), query.pageSize(), @@ -88,4 +92,12 @@ internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( true ) } + + companion object { + private val defaultSortOrder: TrackedEntityInstanceQueryScopeOrderByItem = + TrackedEntityInstanceQueryScopeOrderByItem.builder() + .column(TrackedEntityInstanceQueryScopeOrderColumn.CREATED) + .direction(RepositoryScope.OrderByDirection.DESC) + .build() + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java index 071a6b516f..5f03e3bb8d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java @@ -39,16 +39,16 @@ public abstract class TrackedEntityInstanceQueryScopeOrderByItem { public abstract RepositoryScope.OrderByDirection direction(); - String toAPIString() { + public String toAPIString() { return column().hasApiName() ? column().apiName() + ":" + direction().getApi() : null; } - static Builder builder() { + public static Builder builder() { return new AutoValue_TrackedEntityInstanceQueryScopeOrderByItem.Builder(); } @AutoValue.Builder - abstract static class Builder { + public abstract static class Builder { public abstract Builder column(TrackedEntityInstanceQueryScopeOrderColumn column); diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java index 86402cb8a4..804f1071b6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java @@ -33,7 +33,7 @@ import com.google.auto.value.AutoValue; @AutoValue -abstract class TrackedEntityInstanceQueryScopeOrderColumn { +public abstract class TrackedEntityInstanceQueryScopeOrderColumn { enum Type { CREATED, LAST_UPDATED, ATTRIBUTE, ORGUNIT_NAME, From 899b02ec45a5fc16626c3189dc14db2956c15c6d Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 31 Mar 2022 13:41:45 +0200 Subject: [PATCH 227/253] [ANDROSDK-1527] Add explicit sortOrder property in TEI search --- .../TrackedEntityInstancesEndpointCallFactory.kt | 12 +----------- .../search/TrackedEntityInstanceQueryOnlineHelper.kt | 8 ++++++-- .../TrackedEntityInstanceQueryRepositoryScope.java | 5 +++++ .../TrackedEntityInstanceQueryScopeOrderByItem.java | 9 +++++++-- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt index 37e72f960e..e416c92fbd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt @@ -32,10 +32,8 @@ import io.reactivex.Single import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.payload.internal.Payload import org.hisp.dhis.android.core.arch.helpers.CollectionsHelper -import org.hisp.dhis.android.core.arch.repositories.scope.RepositoryScope import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryScopeOrderByItem -import org.hisp.dhis.android.core.trackedentity.search.TrackedEntityInstanceQueryScopeOrderColumn import retrofit2.Call @Reusable @@ -52,7 +50,7 @@ internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( getProgramStatus(query), getProgramStartDate(query), TrackedEntityInstanceFields.allFields, - defaultSortOrder.toAPIString(), + TrackedEntityInstanceQueryScopeOrderByItem.DEFAULT_TRACKER_ORDER.toAPIString(), true, query.page(), query.pageSize(), @@ -92,12 +90,4 @@ internal class TrackedEntityInstancesEndpointCallFactory @Inject constructor( true ) } - - companion object { - private val defaultSortOrder: TrackedEntityInstanceQueryScopeOrderByItem = - TrackedEntityInstanceQueryScopeOrderByItem.builder() - .column(TrackedEntityInstanceQueryScopeOrderColumn.CREATED) - .direction(RepositoryScope.OrderByDirection.DESC) - .build() - } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt index 16cbf3ef59..b9a969f6dd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt @@ -119,7 +119,11 @@ internal class TrackedEntityInstanceQueryOnlineHelper @Inject constructor( return itemList } - private fun toAPIOrderFormat(orders: List): String { - return orders.mapNotNull { it.toAPIString() }.joinToString(",") + private fun toAPIOrderFormat(orders: List): String? { + return if (orders.isNotEmpty()) { + orders.mapNotNull { it.toAPIString() }.joinToString(",") + } else { + null + } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java index c1ef25da6b..e643b72724 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java @@ -152,12 +152,17 @@ abstract static class Builder { // Auxiliary fields to access values abstract List states(); + abstract List order(); public TrackedEntityInstanceQueryRepositoryScope build() { if (states() != null) { mode(RepositoryMode.OFFLINE_ONLY); } + if (order() == null || order().isEmpty()) { + order(Collections.singletonList(TrackedEntityInstanceQueryScopeOrderByItem.DEFAULT_TRACKER_ORDER)); + } + return autoBuild(); } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java index 5f03e3bb8d..41672b9a5c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java @@ -35,6 +35,11 @@ @AutoValue public abstract class TrackedEntityInstanceQueryScopeOrderByItem { + public static TrackedEntityInstanceQueryScopeOrderByItem DEFAULT_TRACKER_ORDER = builder() + .column(TrackedEntityInstanceQueryScopeOrderColumn.CREATED) + .direction(RepositoryScope.OrderByDirection.DESC) + .build(); + public abstract TrackedEntityInstanceQueryScopeOrderColumn column(); public abstract RepositoryScope.OrderByDirection direction(); @@ -43,12 +48,12 @@ public String toAPIString() { return column().hasApiName() ? column().apiName() + ":" + direction().getApi() : null; } - public static Builder builder() { + static Builder builder() { return new AutoValue_TrackedEntityInstanceQueryScopeOrderByItem.Builder(); } @AutoValue.Builder - public abstract static class Builder { + abstract static class Builder { public abstract Builder column(TrackedEntityInstanceQueryScopeOrderColumn column); From 215c53ecddc892be345961fa5dcd5ba55741f3ce Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 31 Mar 2022 13:55:14 +0200 Subject: [PATCH 228/253] [SET-CREDENTIALS-TESTING] Ktlint --- .../main/java/org/hisp/dhis/android/core/D2Manager.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index 0d7662b534..aa4288f891 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -53,7 +53,7 @@ object D2Manager { private var testingServerUrl: String? = null private var testingDatabaseName: String? = null private var testingUsername: String? = null - private lateinit var d2DIComponent : D2DIComponent + private lateinit var d2DIComponent: D2DIComponent /** * Returns the D2 instance, given that it has already been initialized using the @@ -166,16 +166,16 @@ object D2Manager { } @VisibleForTesting - fun removeCredentials(){ + fun removeCredentials() { d2DIComponent.credentialsSecureStore().remove() } @VisibleForTesting - fun setCredentials(username: String, password: String){ - if (testingServerUrl.isNullOrEmpty()){ + fun setCredentials(username: String, password: String) { + if (testingServerUrl.isNullOrEmpty()) { throw NoSuchFieldException("No testing Server Url") } - d2DIComponent.credentialsSecureStore().set(Credentials(username, testingServerUrl!!,password, null)) + d2DIComponent.credentialsSecureStore().set(Credentials(username, testingServerUrl!!, password, null)) } private fun wantToImportDBForExternalTesting(): Boolean { From 1cda27e64b9334cd4ddc1fba9c139223cdb0173e Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 31 Mar 2022 17:32:30 +0200 Subject: [PATCH 229/253] [ANDROSDK-1528] Add method to clean links using data in DB --- .../dhis/android/core/arch/cleaners/internal/LinkCleaner.kt | 1 + .../android/core/arch/cleaners/internal/LinkCleanerImpl.kt | 6 ++++++ .../core/dataset/internal/DataSetEntityDIModule.java | 4 +++- .../core/program/internal/ProgramEntityDIModule.java | 5 +++-- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt index fb240ceef2..46697e0bd9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt @@ -31,4 +31,5 @@ import org.hisp.dhis.android.core.common.ObjectWithUidInterface internal interface LinkCleaner

{ fun deleteNotPresent(objects: Collection

?): Boolean + fun deleteNotPresentInDb(): Boolean } diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt index a67231a473..10262a3e94 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt @@ -28,12 +28,14 @@ package org.hisp.dhis.android.core.arch.cleaners.internal import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter +import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectStore import org.hisp.dhis.android.core.arch.helpers.UidsHelper.commaSeparatedUidsWithSingleQuotationMarks import org.hisp.dhis.android.core.common.ObjectWithUidInterface internal class LinkCleanerImpl

( private val tableName: String, private val applicableColumn: String, + private val parentStore: ObjectStore

, private val databaseAdapter: DatabaseAdapter ) : LinkCleaner

{ @@ -45,4 +47,8 @@ internal class LinkCleanerImpl

( val clause = "$applicableColumn NOT IN ($objectUids);" return databaseAdapter.delete(tableName, clause, null) > 0 } + + override fun deleteNotPresentInDb(): Boolean { + return deleteNotPresent(parentStore.selectAll()) + } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java index 3a3e728ee0..ac5e270a7c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java @@ -82,9 +82,11 @@ public CollectionCleaner collectionCleaner(DatabaseAdapter databaseAdap @Provides @Reusable - public LinkCleaner linkCleaner(DatabaseAdapter databaseAdapter) { + public LinkCleaner linkCleaner(IdentifiableObjectStore dataSetStore, + DatabaseAdapter databaseAdapter) { return new LinkCleanerImpl<>(DataSetOrganisationUnitLinkTableInfo.TABLE_INFO.name(), DataSetOrganisationUnitLinkTableInfo.Columns.DATA_SET, + dataSetStore, databaseAdapter); } diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java index 71559afe89..c709336fee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java @@ -83,9 +83,10 @@ public CollectionCleaner collectionCleaner(DatabaseAdapter databaseAdap @Provides @Reusable - public LinkCleaner linkCleaner(DatabaseAdapter databaseAdapter) { + public LinkCleaner linkCleaner(ProgramStoreInterface programStore, + DatabaseAdapter databaseAdapter) { return new LinkCleanerImpl<>(OrganisationUnitProgramLinkTableInfo.TABLE_INFO.name(), - OrganisationUnitProgramLinkTableInfo.Columns.PROGRAM, databaseAdapter); + OrganisationUnitProgramLinkTableInfo.Columns.PROGRAM, programStore, databaseAdapter); } @Provides From 3d33b44765c125636706be7d9c6d421ee21a3434 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 31 Mar 2022 17:39:57 +0200 Subject: [PATCH 230/253] [ANDROSDK-1528] Clean missing links after on-demand orgunit refresh --- .../OrganisationUnitModuleDownloader.kt | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt index a603956932..4176c531c4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt @@ -32,8 +32,10 @@ import io.reactivex.Completable import io.reactivex.Single import javax.inject.Inject import org.hisp.dhis.android.core.arch.api.executors.internal.RxAPICallExecutor +import org.hisp.dhis.android.core.arch.cleaners.internal.LinkCleaner +import org.hisp.dhis.android.core.dataset.DataSet import org.hisp.dhis.android.core.organisationunit.OrganisationUnit -import org.hisp.dhis.android.core.organisationunit.OrganisationUnitLevel +import org.hisp.dhis.android.core.program.Program import org.hisp.dhis.android.core.user.User import org.hisp.dhis.android.core.user.internal.UserCall @@ -42,19 +44,29 @@ internal class OrganisationUnitModuleDownloader @Inject constructor( private val organisationUnitCall: OrganisationUnitCall, private val userCall: UserCall, private val organisationUnitLevelEndpointCall: OrganisationUnitLevelEndpointCall, - private val rxCallExecutor: RxAPICallExecutor + private val rxCallExecutor: RxAPICallExecutor, + private val dataSetLinkCleaner: LinkCleaner, + private val programLinkCleaner: LinkCleaner ) { fun downloadMetadata(user: User?): Single> { return organisationUnitLevelEndpointCall.download() - .flatMap { level: List -> organisationUnitCall.download(user) } + .flatMap { organisationUnitCall.download(user) } } fun refreshOrganisationUnits(): Completable { return rxCallExecutor.wrapCompletableTransactionally( Single .fromCallable { userCall.call() } - .flatMapCompletable { user -> downloadMetadata(user).ignoreElement() }, + .flatMap { user -> downloadMetadata(user) } + .flatMapCompletable { cleanLinksFromDB() }, cleanForeignKeys = true ) } + + private fun cleanLinksFromDB(): Completable { + return Completable.fromCallable { + dataSetLinkCleaner.deleteNotPresentInDb() + programLinkCleaner.deleteNotPresentInDb() + } + } } From 8a65598eb1bc37109b822eadcee006f566bd8ecd Mon Sep 17 00:00:00 2001 From: ericampire Date: Thu, 31 Mar 2022 18:31:46 +0200 Subject: [PATCH 231/253] [ANDROSDK-1523] Set CategoryOptionOrganisationUnitLinkSamples Test --- ...anisationUnitLinkStoreIntegrationShould.kt | 63 +++++++++++++++++++ ...tegoryOptionOrganisationUnitLinkSamples.kt | 42 +++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStoreIntegrationShould.kt create mode 100644 core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionOrganisationUnitLinkSamples.kt diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStoreIntegrationShould.kt new file mode 100644 index 0000000000..34a4859e0d --- /dev/null +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStoreIntegrationShould.kt @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.category.internal + +import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLink +import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLinkTableInfo +import org.hisp.dhis.android.core.data.category.CategoryOptionOrganisationUnitLinkSamples +import org.hisp.dhis.android.core.data.database.LinkStoreAbstractIntegrationShould +import org.hisp.dhis.android.core.utils.integration.mock.TestDatabaseAdapterFactory +import org.hisp.dhis.android.core.utils.runner.D2JunitRunner +import org.junit.runner.RunWith + +@RunWith(D2JunitRunner::class) +class CategoryOptionOrganisationUnitLinkStoreIntegrationShould : + LinkStoreAbstractIntegrationShould( + CategoryOptionOrganisationUnitLinkStore.create(TestDatabaseAdapterFactory.get()), + CategoryOptionOrganisationUnitLinkTableInfo.TABLE_INFO, + TestDatabaseAdapterFactory.get() + ) { + + override fun buildObjectWithOtherMasterUid(): CategoryOptionOrganisationUnitLink { + return buildObject().toBuilder() + .categoryOption("new_category_option") + .build() + } + + override fun addMasterUid(): String { + return CategoryOptionOrganisationUnitLinkSamples + .getCategoryOptionOrganisationUnitLink() + .categoryOption() + } + + override fun buildObject(): CategoryOptionOrganisationUnitLink { + return CategoryOptionOrganisationUnitLinkSamples + .getCategoryOptionOrganisationUnitLink() + } +} diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionOrganisationUnitLinkSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionOrganisationUnitLinkSamples.kt new file mode 100644 index 0000000000..77e5bf1b08 --- /dev/null +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionOrganisationUnitLinkSamples.kt @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.data.category + +import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLink + +internal object CategoryOptionOrganisationUnitLinkSamples { + fun getCategoryOptionOrganisationUnitLink(): CategoryOptionOrganisationUnitLink { + return CategoryOptionOrganisationUnitLink.builder() + .id(1L) + .categoryOption("categoryOption") + .organisationUnit("organisationUnit") + .restriction("restriction") + .build() + } +} From 5d8975fb9ac3b2305c517c14e94d5bd516bf6b1e Mon Sep 17 00:00:00 2001 From: ericampire Date: Thu, 31 Mar 2022 18:33:12 +0200 Subject: [PATCH 232/253] [ANDROSDK-1523] Adapt CategoryOptionOrganisationUnitChildrenAppender to support Restrictions --- ...yOptionOrganisationUnitChildrenAppender.kt | 42 ++++++++++--------- .../CategoryOptionOrganisationUnitsCall.kt | 12 ++++-- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt index e57d080d92..13ca0fb5d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt @@ -28,38 +28,42 @@ package org.hisp.dhis.android.core.category.internal import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter -import org.hisp.dhis.android.core.arch.db.stores.internal.ObjectWithUidChildStore -import org.hisp.dhis.android.core.arch.db.stores.internal.StoreFactory -import org.hisp.dhis.android.core.arch.db.stores.projections.internal.LinkTableChildProjection +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.arch.db.stores.internal.LinkStore import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender import org.hisp.dhis.android.core.category.CategoryOption +import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLink import org.hisp.dhis.android.core.category.CategoryOptionOrganisationUnitLinkTableInfo -import org.hisp.dhis.android.core.organisationunit.OrganisationUnitTableInfo +import org.hisp.dhis.android.core.category.internal.CategoryOptionOrganisationUnitsCall.CategoryOptionRestriction.Companion.NOT_ACCESSIBLE_TO_USER +import org.hisp.dhis.android.core.category.internal.CategoryOptionOrganisationUnitsCall.CategoryOptionRestriction.Companion.NOT_RESTRICTED +import org.hisp.dhis.android.core.common.ObjectWithUid -internal class CategoryOptionOrganisationUnitChildrenAppender -private constructor(private val childStore: ObjectWithUidChildStore) : - ChildrenAppender() { +internal class CategoryOptionOrganisationUnitChildrenAppender private constructor( + private val childStore: LinkStore +) : ChildrenAppender() { override fun appendChildren(categoryOption: CategoryOption): CategoryOption { val builder = categoryOption.toBuilder() - builder.organisationUnits(childStore.getChildren(categoryOption)) + val whereClause = WhereClauseBuilder().apply { + appendKeyStringValue( + CategoryOptionOrganisationUnitLinkTableInfo.Columns.CATEGORY_OPTION, categoryOption.uid() + ) + }.build() + val links = childStore.selectWhere(whereClause) + val organisationUnit = when { + links.all { it.restriction() == NOT_RESTRICTED } -> emptyList() + links.all { it.restriction() == NOT_ACCESSIBLE_TO_USER } -> null + else -> links.map { ObjectWithUid.create(it.organisationUnit()) } + } + + builder.organisationUnits(organisationUnit) return builder.build() } companion object { - private val CHILD_PROJECTION = LinkTableChildProjection( - OrganisationUnitTableInfo.TABLE_INFO, - CategoryOptionOrganisationUnitLinkTableInfo.Columns.CATEGORY_OPTION, - CategoryOptionOrganisationUnitLinkTableInfo.Columns.ORGANISATION_UNIT - ) - fun create(databaseAdapter: DatabaseAdapter): ChildrenAppender { return CategoryOptionOrganisationUnitChildrenAppender( - StoreFactory.objectWithUidChildStore( - databaseAdapter, - CategoryOptionOrganisationUnitLinkTableInfo.TABLE_INFO, - CHILD_PROJECTION - ) + CategoryOptionOrganisationUnitLinkStore.create(databaseAdapter) ) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt index 8cd2467245..ca3ec937a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt @@ -111,15 +111,21 @@ internal class CategoryOptionOrganisationUnitsCall @Inject constructor( sealed class CategoryOptionRestriction(open val label: String) { data class Restricted( val uid: String, - override val label: String = "RESTRICTED" + override val label: String = RESTRICTED ) : CategoryOptionRestriction(label) class NotRestricted( - override val label: String = "NOT_RESTRICTED" + override val label: String = NOT_RESTRICTED ) : CategoryOptionRestriction(label) class NotAccessibleToUser( - override val label: String = "NOT_ACCESSIBLE_TO_USER" + override val label: String = NOT_ACCESSIBLE_TO_USER ) : CategoryOptionRestriction(label) + + companion object { + const val NOT_RESTRICTED = "NOT_RESTRICTED" + const val RESTRICTED = "RESTRICTED" + const val NOT_ACCESSIBLE_TO_USER = "NOT_ACCESSIBLE_TO_USER" + } } } From bae5f2e33b01ff3d90eb81593a6e6294dba5f61f Mon Sep 17 00:00:00 2001 From: ericampire Date: Thu, 31 Mar 2022 18:33:15 +0200 Subject: [PATCH 233/253] [ANDROSDK-1523] Adapt CategoryOptionOrganisationUnitChildrenAppender to support Restrictions --- ...ectionRepositoryMockIntegrationShould.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java index ea94bcc637..c9b5c8aab1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java @@ -138,4 +138,24 @@ public void include_organisation_units_as_children() { assertThat(categoryOption.organisationUnits().size()).isEqualTo(1); assertThat(categoryOption.organisationUnits().get(0).uid()).isEqualTo("DiszpKrYNg8"); } + + @Test + public void include_organisation_units_as_children_no_restrictions() { + CategoryOption categoryOption = d2.categoryModule().categoryOptions() + .withOrganisationUnits() + .uid("TXGfLxZlInA") + .blockingGet(); + + assertThat(categoryOption.organisationUnits()).isEmpty(); + } + + @Test + public void include_organisation_units_as_children_restrictions_out_of_scope() { + CategoryOption categoryOption = d2.categoryModule().categoryOptions() + .withOrganisationUnits() + .uid("apsOixVZlf1") + .blockingGet(); + + assertThat(categoryOption.organisationUnits()).isNull(); + } } \ No newline at end of file From ad045ae44e6313b0446ae010771e065ea69a6bee Mon Sep 17 00:00:00 2001 From: ericampire Date: Fri, 1 Apr 2022 11:35:24 +0200 Subject: [PATCH 234/253] [ANDROSDK-1523] The Orgs Unit must be null if we are on version less than 2.37 --- ...OptionComboCollectionRepositoryMockIntegrationShould.java | 4 ++-- .../CategoryOptionOrganisationUnitChildrenAppender.kt | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java index c9b5c8aab1..c3b9c53596 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java @@ -146,7 +146,7 @@ public void include_organisation_units_as_children_no_restrictions() { .uid("TXGfLxZlInA") .blockingGet(); - assertThat(categoryOption.organisationUnits()).isEmpty(); + assertThat(categoryOption.organisationUnits()).isNull(); } @Test @@ -156,6 +156,6 @@ public void include_organisation_units_as_children_restrictions_out_of_scope() { .uid("apsOixVZlf1") .blockingGet(); - assertThat(categoryOption.organisationUnits()).isNull(); + assertThat(categoryOption.organisationUnits()).isEmpty(); } } \ No newline at end of file diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt index 13ca0fb5d0..9eb3006233 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt @@ -51,8 +51,9 @@ internal class CategoryOptionOrganisationUnitChildrenAppender private constructo }.build() val links = childStore.selectWhere(whereClause) val organisationUnit = when { - links.all { it.restriction() == NOT_RESTRICTED } -> emptyList() - links.all { it.restriction() == NOT_ACCESSIBLE_TO_USER } -> null + links.isEmpty() -> null + links.all { it.restriction() == NOT_RESTRICTED } -> null + links.all { it.restriction() == NOT_ACCESSIBLE_TO_USER } -> emptyList() else -> links.map { ObjectWithUid.create(it.organisationUnit()) } } From 883ba8d5a217d798941d77c6c38e83709fd94fca Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Fri, 1 Apr 2022 12:07:33 +0200 Subject: [PATCH 235/253] doc: [ANDROSDK-1522] Update License 2022 --- .../dhis/android/core/AndroidTestUtils.java | 2 +- .../core/BaseIntegrationTestWithDatabase.java | 2 +- .../android/core/BaseRealIntegrationTest.java | 2 +- .../android/core/D2DIComponentAccessor.kt | 2 +- .../org/hisp/dhis/android/core/D2Factory.java | 2 +- ...EventWithLimitCallMockIntegrationShould.kt | 2 +- .../core/LogInCallRealIntegrationShould.java | 2 +- .../MetadataCallRealIntegrationShould.java | 2 +- .../core/MockIntegrationTestObjects.java | 2 +- .../core/MultiUserMockIntegrationShould.kt | 2 +- .../core/MultiUserRealIntegrationShould.java | 2 +- .../core/TeisCallRealIntegrationShould.java | 2 +- ...isualizationRepositoryIntegrationShould.kt | 2 +- .../BaseEvaluatorIntegrationShould.kt | 2 +- .../evaluator/BaseEvaluatorSamples.kt | 2 +- ...ataElementSQLEvaluatorIntegrationShould.kt | 2 +- ...IndicatorEvaluatorIntegrationBaseShould.kt | 2 +- .../IndicatorEvaluatorIntegrationShould.kt | 2 +- .../IndicatorSQLEvaluatorIntegrationShould.kt | 2 +- ...gramIndicatorEvaluatorIntegrationShould.kt | 2 +- .../EventLineListIntegrationShould.kt | 2 +- .../eventlinelist/EventLineListSamples.kt | 2 +- .../arch/db/access/SqliteCheckerUtility.java | 2 +- ...tabaseAdapterFactoryIntegrationShould.java | 2 +- ...DatabaseFromMigrationsIntegrationShould.kt | 2 +- ...FromDatabaseAssetsMockIntegrationShould.kt | 2 +- .../access/internal/TestDatabaseImporter.kt | 2 +- ...ositoryOneMethodMockIntegrationShould.java | 2 +- ...FiltersOperatorsMockIntegrationShould.java | 2 +- ...ollectionFiltersMockIntegrationShould.java | 2 +- ...ollectionFiltersMockIntegrationShould.java | 2 +- .../collection/PagingMockIntegrationShould.kt | 2 +- ...ectionRepositoryImplIntegrationShould.java | 2 +- ...ectionRepositoryImplIntegrationShould.java | 2 +- .../collection/RelationshipTypeAsserts.java | 2 +- ...tialsSecureStorageMockIntegrationShould.kt | 2 +- .../AttributeStoreIntegrationShould.java | 2 +- ...ributeValueLinkStoreIntegrationShould.java | 2 +- ...ributeValueLinkStoreIntegrationShould.java | 2 +- ...ributeValueLinkStoreIntegrationShould.java | 2 +- ...tegoryComboLinkStoreIntegrationShould.java | 2 +- ...egoryOptionLinkStoreIntegrationShould.java | 2 +- ...omboEndpointCallRealIntegrationShould.java | 2 +- ...yComboUidsSeekerMockIntegrationShould.java | 2 +- ...goryEndpointCallRealIntegrationShould.java | 2 +- .../internal/CategoryEndpointCallShould.java | 2 +- ...egoryOptionLinkStoreIntegrationShould.java | 2 +- .../internal/CreateCategoryComboUtils.java | 2 +- ...ntifiableObjectStoreIntegrationShould.java | 2 +- .../common/ObjectStoreIntegrationShould.java | 2 +- .../dhis/android/core/common/StoreMocks.java | 2 +- ...DeviceRenderingStoreIntegrationShould.java | 2 +- .../DataStatePropagatorIntegrationShould.kt | 2 +- .../ConfigurationStoreIntegrationShould.java | 2 +- ...ConfigurationMigrationIntegrationShould.kt | 2 +- .../ConstantStoreIntegrationShould.java | 2 +- .../core/data/database/CursorAssert.java | 2 +- .../core/data/database/DatabaseAssert.kt | 2 +- .../core/data/database/DbTestUtils.java | 2 +- ...aObjectStoreAbstractIntegrationShould.java | 2 +- ...eObjectStoreAbstractIntegrationShould.java | 2 +- .../LinkStoreAbstractIntegrationShould.java | 2 +- .../ObjectStoreAbstractIntegrationShould.java | 2 +- ...houtUidStoreAbstractIntegrationShould.java | 2 +- .../migrations/DataBaseMigrationShould.java | 2 +- .../core/data/server/RealServerMother.java | 2 +- .../dataelement/CreateDataElementUtils.java | 2 +- ...mentEndpointCallRealIntegrationShould.java | 2 +- ...aElementOperandStoreIntegrationShould.java | 2 +- .../DataElementStoreIntegrationShould.java | 2 +- ...InputPeriodLinkStoreIntegrationShould.java | 2 +- ...RegistrationCallRealIntegrationShould.java | 2 +- ...strationPostCallRealIntegrationShould.java | 2 +- ...mentOperandLinkStoreIntegrationShould.java | 2 +- ...DataElementLinkStoreIntegrationShould.java | 2 +- ...aSetEndpointCallRealIntegrationShould.java | 2 +- ...isationUnitLinkStoreIntegrationShould.java | 2 +- .../DataSetStoreIntegrationShould.java | 2 +- ...DataElementLinkStoreIntegrationShould.java | 2 +- ...reyedFieldsLinkStoreIntegrationShould.java | 2 +- ...tionIndicatorLinkStoreIntegrationShould.kt | 2 +- .../SectionStoreIntegrationShould.java | 2 +- .../LocalDataStoreStoreIntegrationShould.kt | 2 +- ...DataValueConflictStoreIntegrationShould.kt | 2 +- ...alueEndpointCallRealIntegrationShould.java | 2 +- .../DataValuePostCallMockIntegrationShould.kt | 28 ++++++++++++ ...ataValuePostCallRealIntegrationShould.java | 2 +- .../debug/flipper/debug/FlipperManager.kt | 2 +- ...gregatedDataCallMockIntegrationShould.java | 2 +- ...gregatedDataCallRealIntegrationShould.java | 2 +- ...regatedDataSyncStoreIntegrationShould.java | 2 +- .../enrollment/CreateEnrollmentUtils.java | 2 +- .../EnrollmentStoreIntegrationShould.java | 2 +- .../android/core/event/CreateEventUtils.java | 2 +- .../event/internal/EventAPI29RealShould.java | 2 +- .../event/internal/EventAPI30RealShould.java | 2 +- .../event/internal/EventAPIRealShould.java | 2 +- .../core/event/internal/EventCallFactory.kt | 2 +- ...EventDataFilterStoreIntegrationShould.java | 2 +- .../EventDownloadRealIntegrationShould.java | 2 +- .../EventEndpointCallMockIntegrationShould.kt | 2 +- ...ventEndpointCallRealIntegrationShould.java | 2 +- .../EventFilterStoreIntegrationShould.java | 2 +- .../EventPostCallRealIntegrationShould.java | 2 +- ...PayloadGeneratorMockIntegrationShould.java | 2 +- .../internal/EventStoreIntegrationShould.java | 2 +- .../EventSyncStoreIntegrationShould.java | 2 +- .../core/event/internal/EventUtils.java | 2 +- ...FileResourceCallRealIntegrationShould.java | 2 +- .../FileResourceStoreIntegrationShould.kt | 2 +- ...rImportConflictStoreIntegrationShould.java | 2 +- ...etIndicatorLinkStoreIntegrationShould.java | 2 +- .../IndicatorStoreIntegrationShould.java | 2 +- ...mentLegendSetLinkStoreIntegrationShould.kt | 2 +- ...atorLegendSetLinkStoreIntegrationShould.kt | 2 +- ...orLegendSetLinkStoreIntegrationShould.java | 2 +- .../LegendSetStoreIntegrationShould.java | 2 +- .../LegendStoreIntegrationShould.java | 2 +- .../D2ErrorStoreIntegrationShould.java | 2 +- .../internal/ForeignKeyCleanerShould.java | 2 +- ...ignKeyViolationStoreIntegrationShould.java | 2 +- .../NotePostCallRealIntegrationShould.java | 2 +- .../internal/NoteStoreIntegrationShould.java | 2 +- .../android/core/option/OptionCallShould.java | 2 +- .../core/option/OptionSetCallShould.java | 2 +- ...GroupOptionLinkStoreIntegrationShould.java | 2 +- .../OptionGroupStoreIntegrationShould.java | 2 +- ...nisationUnitCallMockIntegrationShould.java | 2 +- ...sationUnitGroupStoreIntegrationShould.java | 2 +- ...sationUnitLevelStoreIntegrationShould.java | 2 +- ...onUnitGroupLinkStoreIntegrationShould.java | 2 +- ...UnitProgramLinkStoreIntegrationShould.java | 2 +- ...rganisationUnitStoreIntegrationShould.java | 2 +- .../period/PeriodMockIntegrationShould.java | 2 +- .../PeriodParserMockIntegrationShould.java | 2 +- .../PeriodStoreIntegrationShould.java | 2 +- .../core/program/CreateProgramStageUtils.java | 2 +- ...icsPeriodBoundaryStoreIntegrationShould.kt | 2 +- ...gramEndpointCallMockIntegrationShould.java | 2 +- ...gramEndpointCallRealIntegrationShould.java | 2 +- ...rogramIndicatorStoreIntegrationShould.java | 2 +- ...ogramRuleActionStoreIntegrationShould.java | 2 +- .../ProgramRuleStoreIntegrationShould.java | 2 +- ...ramRuleVariableStoreIntegrationShould.java | 2 +- ...onAttributeLinkStoreIntegrationShould.java | 2 +- .../ProgramSectionStoreIntegrationShould.kt | 2 +- ...tageDataElementStoreIntegrationShould.java | 2 +- ...DataElementLinkStoreIntegrationShould.java | 2 +- ...ogramStageSectionStoreIntegrationShould.kt | 2 +- .../ProgramStageStoreIntegrationShould.java | 2 +- .../ProgramStoreIntegrationShould.java | 2 +- ...EntityAttributeStoreIntegrationShould.java | 2 +- .../BaseTrackerDataIntegrationHelper.kt | 2 +- ...ProgramIndicatorEngineIntegrationShould.kt | 2 +- ...amIndicatorSQLExecutorIntegrationShould.kt | 2 +- .../CreateRelationshipTypeUtils.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...nshipConstraintStoreIntegrationShould.java | 2 +- ...elationshipItemStoreIntegrationShould.java | 2 +- .../RelationshipStoreIntegrationShould.java | 2 +- .../ResourceStoreIntegrationShould.java | 2 +- .../SettingsModuleMockIntegrationShould.java | 2 +- ...DhisVisualizationStoreIntegrationShould.kt | 2 +- ...yticsTeiAttributeStoreIntegrationShould.kt | 2 +- ...icsTeiDataElementStoreIntegrationShould.kt | 2 +- ...yticsTeiIndicatorStoreIntegrationShould.kt | 2 +- ...alyticsTeiSettingStoreIntegrationShould.kt | 2 +- ...iWHONutritionDataStoreIntegrationShould.kt | 2 +- .../DataSetSettingStoreIntegrationShould.java | 2 +- .../FilterSettingStoreIntegrationShould.kt | 2 +- .../GeneralSettingsStoreIntegrationShould.kt | 2 +- ...figurationSettingStoreIntegrationShould.kt | 2 +- .../ProgramSettingStoreIntegrationShould.java | 2 +- ...onizationSettingsStoreIntegrationShould.kt | 2 +- .../SystemSettingStoreIntegrationShould.java | 2 +- .../UserSettingsStoreIntegrationShould.java | 2 +- .../SMSConfigStoreIntegrationShould.kt | 2 +- .../SMSMetadataIdStoreIntegrationShould.kt | 2 +- ...OngoingSubmissionStoreIntegrationShould.kt | 2 +- ...SVersionsManagerRealIntegrationShould.java | 2 +- .../SystemInfoCallMockIntegrationShould.java | 2 +- .../SystemInfoDatabaseMappingShould.java | 2 +- ...SystemInfoModuleMockIntegrationShould.java | 2 +- .../SystemInfoStoreIntegrationShould.java | 2 +- .../CreateTrackedEntityAttributeUtils.java | 2 +- .../CreateTrackedEntityInstanceUtils.java | 2 +- .../CreateTrackedEntityUtils.java | 2 +- ...rvedValueManagerRealIntegrationShould.java | 2 +- ...tityInstanceCallRealIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- .../api/BreakTheGlassAPIShould.java | 2 +- .../api/TrackedEntityInstanceAPI29Should.java | 2 +- .../api/TrackedEntityInstanceAPI30Should.java | 2 +- .../api/TrackedEntityInstanceAPIShould.java | 2 +- .../api/TrackedEntityInstanceUtils.java | 2 +- .../BasePayloadGeneratorMockIntegration.kt | 2 +- ...erPayloadGeneratorMockIntegrationShould.kt | 2 +- ...vedValueSettingStoreIntegrationShould.java | 2 +- ...alueEndpointCallRealIntegrationShould.java | 2 +- ...teReservedValueStoreIntegrationShould.java | 2 +- ...EntityAttributeStoreIntegrationShould.java | 2 +- ...yAttributeValueStoreIntegrationShould.java | 2 +- ...EntityDataValueStoreIntegrationShould.java | 2 +- ...EntityInstanceCallMockIntegrationShould.kt | 2 +- ...anceEventFilterStoreIntegrationShould.java | 2 +- ...yInstanceFilterStoreIntegrationShould.java | 2 +- ...InstancePostCallRealIntegrationShould.java | 2 +- ...dEntityInstanceStoreIntegrationShould.java | 2 +- ...ityInstanceSyncStoreIntegrationShould.java | 2 +- ...tyTypeAttributeStoreIntegrationShould.java | 2 +- ...ackedEntityTypeStoreIntegrationShould.java | 2 +- .../ProgramTempOwnerStoreIntegrationShould.kt | 2 +- ...ceLocalQueryHelperMockIntegrationShould.kt | 2 +- ...ceQueryAndDownloadRealIntegrationShould.kt | 2 +- ...nstanceQueryCallRealIntegrationShould.java | 2 +- ...llectionRepositoryMockIntegrationShould.kt | 2 +- .../TrackerJobObjectStoreIntegrationShould.kt | 2 +- ...ginErrorHandlingRealIntegrationShould.java | 2 +- .../OpenIdConnectRealIntegrationShould.kt | 2 +- .../user/UserDisabledMockIntegrationShould.kt | 28 ++++++++++++ .../UserDisabledRxAPIMockIntegrationShould.kt | 28 ++++++++++++ .../user/UserModuleMockIntegrationShould.java | 2 +- ...thenticatedUserStoreIntegrationShould.java | 2 +- .../AuthorityStoreIntegrationShould.java | 2 +- .../LogInCallMockIntegrationShould.java | 2 +- .../LogoutCallRealIntegrationShould.java | 2 +- ...teWithEncryptionMockIntegrationShould.java | 2 +- .../internal/UserCallMockIntegrationShould.kt | 2 +- ...isationUnitLinkStoreIntegrationShould.java | 2 +- .../UserRoleStoreIntegrationShould.java | 2 +- .../android/core/utils/DatabaseRemover.java | 2 +- .../mock/BaseMockIntegrationTest.java | 2 +- ...aseMockIntegrationTestEmptyDispatcher.java | 2 +- ...BaseMockIntegrationTestEmptyEnqueable.java | 2 +- ...BaseMockIntegrationTestFullDispatcher.java | 2 +- ...nTestLocalAnalyticsSuperLargeDispatcher.kt | 2 +- ...MockIntegrationTestMetadataDispatcher.java | 2 +- ...eMockIntegrationTestMetadataEnqueable.java | 2 +- .../MockIntegrationTestDatabaseContent.java | 2 +- .../MockIntegrationTestObjectsFactory.java | 2 +- .../mock/TestDatabaseAdapterFactory.java | 2 +- .../core/utils/runner/D2JunitRunner.java | 2 +- .../utils/runner/D2JunitTestListener.java | 2 +- .../ValidationRuleStoreIntegrationShould.java | 2 +- ...mProgramAttributeStoreIntegrationShould.kt | 2 +- ...rogramDataElementStoreIntegrationShould.kt | 2 +- ...DataDimensionItemStoreIntegrationShould.kt | 2 +- ...goryDimensionLinkStoreIntegrationShould.kt | 2 +- .../VisualizationEndpointCallShould.kt | 2 +- .../VisualizationStoreIntegrationShould.kt | 2 +- .../wipe/WipeDBCallMockIntegrationShould.kt | 2 +- .../wipe/WipeDBCallRealIntegrationShould.java | 2 +- .../LocalAnalyticsDataGenerator.kt | 2 +- .../LocalAnalyticsDatabaseFiller.kt | 2 +- .../LocalAnalyticsMetadataGenerator.kt | 2 +- .../dbgeneration/LocalAnalyticsParams.kt | 2 +- ...lyticsDatabaseSizeMockIntegrationShould.kt | 2 +- ...SuperLargeDatabaseMockIntegrationShould.kt | 2 +- ...nalyticsAggregatedMockIntegrationShould.kt | 2 +- .../tests/BaseLocalAnalyticsTest.kt | 2 +- ...alAnalyticsTrackerMockIntegrationShould.kt | 2 +- ...regatedDefaultDataMockIntegrationShould.kt | 2 +- ...ggregatedLargeDataMockIntegrationShould.kt | 2 +- ...atedSuperLargeDataMockIntegrationShould.kt | 2 +- ...ticsTrackerDefaultMockIntegrationShould.kt | 2 +- ...lyticsTrackerLargeMockIntegrationShould.kt | 2 +- ...sTrackerSuperLargeMockIntegrationShould.kt | 2 +- .../arch/helpers/FileResizerHelperShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- .../CategoryModuleMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...OptionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- .../DataSetModuleMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- .../MaintenanceMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ngObjectRepositoryMockIntegrationShould.kt | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- .../sms/SmsModuleMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...aseTrackerConflictMockIntegrationShould.kt | 2 +- .../importer/E1000MockIntegrationShould.kt | 2 +- .../importer/E1006MockIntegrationShould.kt | 2 +- .../importer/E1007MockIntegrationShould.kt | 2 +- .../importer/E1008MockIntegrationShould.kt | 2 +- .../importer/E1009MockIntegrationShould.kt | 2 +- .../importer/E1063MockIntegrationShould.kt | 2 +- .../importer/E1064MockIntegrationShould.kt | 2 +- .../importer/E1069MockIntegrationShould.kt | 2 +- .../importer/E1081MockIntegrationShould.kt | 2 +- .../importer/E1084MockIntegrationShould.kt | 2 +- .../importer/E1100MockIntegrationShould.kt | 2 +- .../importer/E1103MockIntegrationShould.kt | 2 +- ...ckerConflictHelperMockIntegrationShould.kt | 2 +- .../AccountManagerMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...ObjectRepositoryMockIntegrationShould.java | 2 +- ...onRuleRepositoryMockIntegrationShould.java | 2 +- ...ectionRepositoryMockIntegrationShould.java | 2 +- .../java/org/hisp/dhis/android/core/D2.java | 2 +- .../dhis/android/core/D2Configuration.java | 2 +- .../android/core/D2ConfigurationValidator.kt | 2 +- .../org/hisp/dhis/android/core/D2Manager.kt | 2 +- .../android/core/NotClosedObjectsDetector.kt | 2 +- .../core/analytics/AnalyticsException.kt | 2 +- .../core/analytics/AnalyticsLegendStrategy.kt | 28 ++++++++++++ .../android/core/analytics/AnalyticsModule.kt | 2 +- .../core/analytics/AnalyticsModuleImpl.kt | 2 +- .../analytics/AnalyticsPackageDIModule.kt | 2 +- .../android/core/analytics/LegendEvaluator.kt | 28 ++++++++++++ .../aggregated/AggregatedEntityDIModule.kt | 2 +- .../analytics/aggregated/AnalyticsModel.kt | 2 +- .../aggregated/AnalyticsRepository.kt | 2 +- .../AnalyticsVisualizationsRepository.kt | 2 +- .../aggregated/DimensionalResponse.kt | 2 +- .../aggregated/GridAnalyticsResponse.kt | 2 +- .../AnalyticsOrganisationUnitHelper.kt | 2 +- .../internal/AnalyticsRepositoryImpl.kt | 2 +- .../internal/AnalyticsRepositoryParams.kt | 2 +- .../aggregated/internal/AnalyticsService.kt | 2 +- .../AnalyticsServiceDimensionHelper.kt | 2 +- .../AnalyticsServiceEvaluationItem.kt | 2 +- .../AnalyticsServiceEvaluatorHelper.kt | 2 +- .../AnalyticsServiceMetadataHelper.kt | 2 +- .../AnalyticsVisualizationsRepositoryImpl.kt | 2 +- ...AnalyticsVisualizationsRepositoryParams.kt | 2 +- .../AnalyticsVisualizationsService.kt | 2 +- ...icsVisualizationsServiceDimensionHelper.kt | 2 +- .../internal/evaluator/AnalyticsEvaluator.kt | 2 +- .../evaluator/AnalyticsEvaluatorHelper.kt | 2 +- .../evaluator/DataElementSQLEvaluator.kt | 2 +- .../internal/evaluator/IndicatorEvaluator.kt | 2 +- .../evaluator/IndicatorEvaluatorHelper.kt | 2 +- .../evaluator/IndicatorSQLEvaluator.kt | 2 +- .../evaluator/ProgramIndicatorEvaluator.kt | 2 +- .../ProgramIndicatorEvaluatorHelper.kt | 2 +- .../evaluator/ProgramIndicatorSQLEvaluator.kt | 2 +- .../indicatorengine/IndicatorContext.kt | 2 +- .../indicatorengine/IndicatorEngine.kt | 2 +- .../indicatorengine/IndicatorParserUtils.kt | 2 +- .../indicatorengine/IndicatorSQLEngine.kt | 2 +- .../dataitem/DataElementItem.kt | 2 +- .../dataitem/ProgramIndicatorItem.kt | 2 +- .../aggregated/mock/AggregatedSamples.kt | 2 +- .../mock/DimensionalResponseSamples.kt | 2 +- .../mock/GridAnalyticsResponseSamples.kt | 2 +- .../mock/MockAnalyticsRepository.kt | 2 +- .../MockAnalyticsVisualizationsRepository.kt | 2 +- .../analytics/linelist/EventLineListParams.kt | 2 +- .../linelist/EventLineListRepository.kt | 2 +- .../linelist/EventLineListRepositoryImpl.kt | 2 +- .../linelist/EventLineListService.kt | 2 +- .../linelist/EventLineListServiceImpl.kt | 2 +- .../linelist/LineListEntityDIModule.kt | 2 +- .../analytics/linelist/LineListResponse.kt | 2 +- .../internal/CookieAuthenticatorHelper.kt | 2 +- .../internal/OpenIDConnectAuthenticator.kt | 2 +- .../internal/ParentAuthenticator.kt | 2 +- .../PasswordAndCookieAuthenticator.kt | 2 +- .../internal/UserIdAuthenticatorHelper.kt | 2 +- .../executors/internal/APICallErrorCatcher.kt | 2 +- .../executors/internal/APICallExecutor.java | 2 +- .../internal/APICallExecutorImpl.java | 2 +- .../api/executors/internal/APIDownloader.kt | 2 +- .../executors/internal/APIDownloaderImpl.kt | 2 +- .../api/executors/internal/APIErrorMapper.kt | 2 +- .../internal/APIExecutorsDIModule.java | 2 +- .../executors/internal/RxAPICallExecutor.kt | 2 +- .../internal/RxAPICallExecutorImpl.kt | 2 +- .../core/arch/api/fields/internal/Field.java | 2 +- .../core/arch/api/fields/internal/Fields.java | 2 +- .../api/fields/internal/FieldsConverter.java | 2 +- .../internal/FieldsConverterFactory.java | 2 +- .../arch/api/fields/internal/NestedField.java | 2 +- .../arch/api/fields/internal/Property.java | 2 +- .../arch/api/filters/internal/Filter.java | 2 +- .../api/filters/internal/FilterConverter.java | 2 +- .../internal/FilterConverterFactory.java | 2 +- .../arch/api/filters/internal/InFilter.java | 2 +- .../filters/internal/SingleValueFilter.java | 2 +- .../core/arch/api/filters/internal/Where.java | 2 +- .../core/arch/api/filters/internal/Which.java | 2 +- .../arch/api/internal/APIClientDIModule.java | 2 +- .../internal/DynamicServerURLInterceptor.kt | 2 +- .../api/internal/OkHttpClientFactory.java | 2 +- .../internal/PreventURLDecodeInterceptor.java | 2 +- .../arch/api/internal/RetrofitFactory.java | 2 +- .../ServerURLVersionRedirectionInterceptor.kt | 2 +- .../arch/api/internal/ServerURLWrapper.kt | 2 +- .../arch/api/internal/TLSSocketFactory.java | 2 +- .../api/paging/internal/ApiPagingEngine.kt | 2 +- .../core/arch/api/paging/internal/Paging.java | 2 +- .../core/arch/api/payload/internal/Pager.java | 2 +- .../arch/api/payload/internal/Payload.java | 2 +- .../ssl/internal/SSLContextInitializer.java | 2 +- .../core/arch/cache/internal/D2Cache.kt | 2 +- .../arch/cache/internal/ExpirableCache.kt | 2 +- .../android/core/arch/call/D2Progress.java | 2 +- .../executors/internal/D2CallExecutor.java | 2 +- .../call/factories/internal/ListCall.java | 2 +- .../factories/internal/ListCallFactory.java | 2 +- .../internal/ListCallFactoryImpl.java | 2 +- .../call/factories/internal/ObjectCall.kt | 2 +- .../arch/call/factories/internal/QueryCall.kt | 2 +- .../factories/internal/QueryCallFactory.java | 2 +- .../internal/QueryCallFactoryImpl.java | 2 +- .../arch/call/factories/internal/UidsCall.kt | 2 +- .../factories/internal/UidsCallFactory.java | 2 +- .../internal/UidsCallFactoryImpl.java | 2 +- .../call/fetchers/internal/CallFetcher.java | 2 +- ...NoResourceWithErrorCatcherCallFetcher.java | 2 +- .../PayloadNoResourceCallFetcher.java | 2 +- .../internal/UidsNoResourceCallFetcher.java | 2 +- .../call/internal/CompletableProvider.java | 2 +- .../arch/call/internal/D2ProgressManager.java | 2 +- .../core/arch/call/internal/EndpointCall.java | 2 +- .../arch/call/internal/GenericCallData.java | 2 +- .../arch/call/internal/SingleProvider.java | 2 +- .../processors/internal/CallProcessor.java | 2 +- ...nsactionalNoResourceSyncCallProcessor.java | 2 +- ...ransactionalResourceSyncCallProcessor.java | 2 +- .../arch/call/queries/internal/BaseQuery.java | 2 +- .../call/queries/internal/EmptyQuery.java | 2 +- .../arch/call/queries/internal/UidsQuery.java | 2 +- .../cleaners/internal/CollectionCleaner.kt | 2 +- .../internal/CollectionCleanerImpl.kt | 2 +- .../internal/DataOrphanCleanerImpl.kt | 2 +- .../arch/cleaners/internal/LinkCleaner.kt | 2 +- .../arch/cleaners/internal/LinkCleanerImpl.kt | 2 +- .../arch/cleaners/internal/OrphanCleaner.kt | 2 +- .../cleaners/internal/OrphanCleanerImpl.kt | 2 +- .../cleaners/internal/ParentOrphanCleaner.kt | 2 +- .../cleaners/internal/SubCollectionCleaner.kt | 2 +- .../internal/SubCollectionCleanerImpl.kt | 2 +- .../arch/d2/internal/AppContextDIModule.java | 2 +- .../core/arch/d2/internal/D2DIComponent.java | 2 +- .../arch/d2/internal/D2InternalModules.java | 2 +- .../core/arch/d2/internal/D2Modules.java | 2 +- .../dateformat/internal/SafeDateFormat.java | 2 +- .../core/arch/db/access/DatabaseAdapter.java | 2 +- .../arch/db/access/DatabaseImportExport.kt | 2 +- .../core/arch/db/access/Transaction.java | 2 +- .../internal/BaseDatabaseOpenHelper.java | 2 +- .../internal/DatabaseAdapterFactory.java | 2 +- .../db/access/internal/DatabaseDIModule.java | 2 +- .../db/access/internal/DatabaseExport.java | 2 +- .../internal/DatabaseImportExportImpl.kt | 2 +- .../db/access/internal/DatabaseMigration.kt | 2 +- .../internal/DatabaseMigrationExecutor.kt | 2 +- .../internal/DatabaseMigrationParser.kt | 2 +- .../internal/EncryptedDatabaseAdapter.java | 2 +- .../internal/EncryptedDatabaseOpenHelper.java | 2 +- .../internal/EncryptedStatementWrapper.java | 2 +- .../internal/ParentDatabaseAdapter.java | 2 +- .../db/access/internal/TransactionImpl.java | 2 +- .../internal/UnencryptedDatabaseAdapter.java | 2 +- .../UnencryptedDatabaseOpenHelper.java | 2 +- .../internal/UnencryptedStatementWrapper.java | 2 +- .../custom/internal/AccessColumnAdapter.java | 2 +- ...yticsTeiWHONutritionGenderColumnAdapter.kt | 2 +- ...ordinatesFromFeatureTypeColumnAdapter.java | 2 +- .../internal/DateFilterPeriodColumnAdapter.kt | 2 +- .../custom/internal/DbDateColumnAdapter.java | 2 +- .../internal/DbFormTypeColumnAdapter.java | 2 +- .../internal/DbGeometryColumnAdapter.kt | 2 +- .../internal/DbGeometryTypeColumnAdapter.java | 2 +- ...amRuleVariableSourceTypeColumnAdapter.java | 2 +- .../internal/DbProgramTypeColumnAdapter.java | 2 +- .../internal/DbValueTypeColumnAdapter.java | 2 +- .../internal/DefaultAccessColumnAdapter.java | 2 +- .../EventQueryCriteriaColumnAdapter.kt | 2 +- .../internal/FilterPeriodColumnAdapter.kt | 2 +- .../internal/IntegerArrayColumnAdapter.java | 2 +- .../internal/IntegerListColumnAdapter.kt | 2 +- .../IsColumnNotNullColumnAdapter.java | 2 +- .../internal/JSONObjectColumnAdapter.kt | 2 +- .../internal/JSONObjectListColumnAdapter.kt | 2 +- .../internal/JSONObjectSetColumnAdapter.kt | 2 +- ...ValidationRuleExpressionColumnAdapter.java | 2 +- ...NewTrackerImporterUserInfoColumnAdapter.kt | 2 +- .../internal/ObjectStyleColumnAdapter.java | 2 +- .../ObjectWithUidListColumnAdapter.kt | 2 +- ...lationshipItemEnrollmentColumnAdapter.java | 2 +- .../RelationshipItemEventColumnAdapter.java | 2 +- ...temTrackedEntityInstanceColumnAdapter.java | 2 +- .../internal/RelativePeriodsColumnAdapter.kt | 2 +- ...ValidationRuleExpressionColumnAdapter.java | 2 +- .../internal/SectionRenderingColumnAdapter.kt | 2 +- .../internal/StringArrayColumnAdapter.java | 2 +- .../internal/StringListColumnAdapter.kt | 2 +- .../custom/internal/StringSetColumnAdapter.kt | 2 +- ...ValidationRuleExpressionColumnAdapter.java | 2 +- .../internal/AccessLevelColumnAdapter.java | 2 +- .../AggregationTypeColumnAdapter.java | 2 +- ...csDhisVisualizationScopeColumnAdapter.java | 2 +- ...nalyticsPeriodBoundaryTypeColumnAdapter.kt | 2 +- .../internal/AnalyticsTypeColumnAdapter.kt | 2 +- .../AssignedUserModeColumnAdapter.java | 2 +- .../internal/ChartTypeColumnAdapter.java | 2 +- .../internal/D2ErrorCodeColumnAdapter.java | 2 +- .../D2ErrorComponentColumnAdapter.java | 2 +- .../DataApprovalStateColumnAdapter.java | 2 +- .../DataDimensionItemTypeColumnAdapter.kt | 2 +- .../internal/DataSyncPeriodColumnAdapter.java | 2 +- .../DigitGroupSeparatorColumnAdapter.kt | 2 +- .../internal/DisplayDensityColumnAdapter.kt | 2 +- .../internal/DownloadPeriodColumnAdapter.java | 2 +- .../EnrollmentScopeColumnAdapter.java | 2 +- .../EnrollmentStatusColumnAdapter.java | 2 +- .../enums/internal/EnumColumnAdapter.java | 2 +- .../internal/EventStatusColumnAdapter.java | 2 +- .../internal/FeatureTypeColumnAdapter.java | 2 +- .../HideEmptyItemStrategyColumnAdapter.kt | 2 +- .../internal/ImportStatusColumnAdapter.java | 2 +- .../internal/LimitScopeColumnAdapter.java | 2 +- .../MetadataSyncPeriodColumnAdapter.java | 2 +- .../MissingValueStrategyColumnAdapter.java | 2 +- .../enums/internal/NoteTypeColumnAdapter.java | 2 +- .../OrganisationUnitModeColumnAdapter.kt | 2 +- .../internal/PeriodTypeColumnAdapter.java | 2 +- .../ProgramRuleActionTypeColumnAdapter.java | 2 +- ...lationshipConstraintTypeColumnAdapter.java | 2 +- .../RelationshipEntityTypeColumnAdapter.java | 2 +- .../internal/ResourceTypeColumnAdapter.java | 2 +- .../internal/SMSMetadataTypeColumnAdapter.kt | 2 +- .../SMSOngoingSubmissionColumnAdapter.kt | 2 +- .../enums/internal/StateColumnAdapter.java | 2 +- .../SystemSettingKeyColumnAdapter.java | 2 +- .../TrackerImporterObjectTypeColumnAdapter.kt | 2 +- .../TrackerImporterVersionColumnAdapter.kt | 2 +- ...ValidationRuleImportanceColumnAdapter.java | 2 +- .../ValidationRuleOperatorColumnAdapter.java | 2 +- .../ValueTypeRenderingTypeColumnAdapter.java | 2 +- .../VisualizationTypeColumnAdapter.kt | 2 +- .../WHONutritionChartTypeColumnAdapter.java | 2 +- .../WHONutritionComponentColumnAdapter.java | 2 +- ...mProgramAttributeWithUidColumnAdapter.java | 2 +- ...rogramDataElementWithUidColumnAdapter.java | 2 +- .../DataElementWithUidColumnAdapter.java | 2 +- .../IdentifiableObjectColumnAdapter.java | 2 +- .../internal/ObjectWithUidColumnAdapter.java | 2 +- ...kedEntityInstanceWithUidColumnAdapter.java | 2 +- ...TrackedEntityTypeWithUidColumnAdapter.java | 2 +- .../DataSetSyncSettingsColumnAdapter.java | 2 +- ...lyticsPeriodBoundaryListColumnAdapter.java | 2 +- .../IgnoreAnalyticsTeiDataColumnAdapter.java | 2 +- ...eAnalyticsTeiWHODataItemColumnAdapter.java | 2 +- ...yticsTeiWHONutritionDataColumnAdapter.java | 2 +- .../IgnoreAttributeValuesListAdapter.java | 2 +- .../internal/IgnoreBooleanColumnAdapter.java | 2 +- ...oreCategoryDimensionListColumnAdapter.java | 2 +- .../IgnoreCategoryListColumnAdapter.java | 2 +- ...eCategoryOptionComboListColumnAdapter.java | 2 +- ...IgnoreCategoryOptionListColumnAdapter.java | 2 +- .../ignore/internal/IgnoreColumnAdapter.java | 2 +- .../IgnoreCoordinatesColumnAdapter.java | 2 +- ...oreDataDimensionItemListColumnAdapter.java | 2 +- .../IgnoreDataElementListColumnAdapter.java | 2 +- ...reDataElementOperandListColumnAdapter.java | 2 +- ...gnoreDataInputPeriodListColumnAdapter.java | 2 +- .../IgnoreDataSetElementListAdapter.java | 2 +- .../IgnoreDataSyncPeriodColumnAdapter.java | 2 +- .../IgnoreEnrollmentListColumnAdapter.java | 2 +- ...gnoreEventDataFilterListColumnAdapter.java | 2 +- .../IgnoreEventListColumnAdapter.java | 2 +- .../internal/IgnoreExceptionAdapter.java | 2 +- .../IgnoreFeatureTypeColumnAdapter.java | 2 +- .../internal/IgnoreIndicatorListAdapter.java | 2 +- .../IgnoreLegendListColumnAdapter.java | 2 +- .../IgnoreLegendSetListColumnAdapter.java | 2 +- ...IgnoreMetadataSyncPeriodColumnAdapter.java | 2 +- ...oreNewRelationshipItemEnrollmentAdapter.kt | 2 +- .../IgnoreNewRelationshipItemEventAdapter.kt | 2 +- ...NewRelationshipItemTrackedEntityAdapter.kt | 2 +- ...ackedEntityDataValueListColumnAdapter.java | 2 +- ...erImporterEnrollmentListColumnAdapter.java | 2 +- ...TrackerImporterEventListColumnAdapter.java | 2 +- ...wTrackerImporterNoteListColumnAdapter.java | 2 +- ...rackerImporterRelationshipItemAdapter.java | 2 +- ...EntityAttributeValueListColumnAdapter.java | 2 +- .../internal/IgnoreNoteListColumnAdapter.java | 2 +- .../IgnoreObjectWithUidColumnAdapter.java | 2 +- .../IgnoreObjectWithUidListColumnAdapter.java | 2 +- ...gnoreOrganisationUnitGroupListAdapter.java | 2 +- .../IgnoreOrganisationUnitListAdapter.java | 2 +- .../IgnoreProgramIndicatorListAdapter.java | 2 +- ...noreProgramIndicatorListColumnAdapter.java | 2 +- .../IgnoreProgramRuleActionListAdapter.java | 2 +- .../IgnoreProgramRuleListColumnAdapter.java | 2 +- ...eProgramRuleVariableListColumnAdapter.java | 2 +- ...IgnoreProgramSectionListColumnAdapter.java | 2 +- ...gramStageDataElementListColumnAdapter.java | 2 +- .../IgnoreProgramStageListColumnAdapter.java | 2 +- ...eProgramStageSectionListColumnAdapter.java | 2 +- ...ackedEntityAttributeListColumnAdapter.java | 2 +- .../IgnoreRelationshipConstraintAdapter.java | 2 +- .../IgnoreRelationshipItemAdapter.java | 2 +- .../IgnoreRelationshipListColumnAdapter.java | 2 +- .../internal/IgnoreSectionListAdapter.java | 2 +- .../internal/IgnoreStateColumnAdapter.java | 2 +- .../internal/IgnoreStringColumnAdapter.java | 2 +- ...ackedEntityAttributeListColumnAdapter.java | 2 +- ...EntityAttributeValueListColumnAdapter.java | 2 +- ...ackedEntityDataValueListColumnAdapter.java | 2 +- ...yInstanceEventFilterListColumnAdapter.java | 2 +- ...dEntityTypeAttributeListColumnAdapter.java | 2 +- .../IgnoreUserCredentialsAdapter.java | 2 +- .../IgnoreUserRoleListColumnAdapter.java | 2 +- .../IgnoreValueTypeRenderingAdapter.java | 2 +- .../ProgramSyncSettingsColumnAdapter.java | 2 +- .../db/cursors/internal/CursorExecutor.kt | 2 +- .../db/cursors/internal/CursorExecutorImpl.kt | 2 +- .../internal/MultipleTableQueryBuilder.java | 2 +- .../internal/OrderByClauseBuilder.java | 2 +- .../internal/ReadOnlySQLStatementBuilder.java | 2 +- .../internal/SQLStatementBuilder.java | 2 +- .../internal/SQLStatementBuilderImpl.java | 2 +- .../internal/WhereClauseBuilder.java | 2 +- .../db/sqlorder/internal/SQLOrderType.java | 2 +- .../internal/IdentifiableStatementBinder.java | 2 +- .../IdentifiableWithStyleStatementBinder.java | 2 +- .../internal/NameableStatementBinder.java | 2 +- .../NameableWithStyleStatementBinder.java | 2 +- .../binders/internal/StatementBinder.java | 2 +- .../binders/internal/StatementWrapper.java | 2 +- .../internal/WhereStatementBinder.java | 2 +- .../internal/DeletableStoreWithState.kt | 2 +- .../internal/IdentifiableDataObjectStore.kt | 2 +- .../IdentifiableDataObjectStoreImpl.kt | 2 +- .../IdentifiableDeletableDataObjectStore.kt | 2 +- ...dentifiableDeletableDataObjectStoreImpl.kt | 2 +- .../internal/IdentifiableObjectStore.kt | 2 +- .../internal/IdentifiableObjectStoreImpl.kt | 2 +- .../arch/db/stores/internal/LinkChildStore.kt | 2 +- .../db/stores/internal/LinkChildStoreImpl.kt | 2 +- .../core/arch/db/stores/internal/LinkStore.kt | 2 +- .../arch/db/stores/internal/LinkStoreImpl.kt | 2 +- .../arch/db/stores/internal/ObjectStore.kt | 2 +- .../db/stores/internal/ObjectStoreImpl.kt | 2 +- .../internal/ObjectWithUidChildStore.kt | 2 +- .../internal/ObjectWithUidChildStoreImpl.kt | 2 +- .../stores/internal/ObjectWithoutUidStore.kt | 2 +- .../internal/ObjectWithoutUidStoreImpl.kt | 2 +- .../arch/db/stores/internal/ReadableStore.kt | 2 +- .../db/stores/internal/ReadableStoreImpl.kt | 2 +- .../stores/internal/SingleParentChildStore.kt | 2 +- .../internal/SingleParentChildStoreImpl.kt | 2 +- .../arch/db/stores/internal/StoreFactory.kt | 2 +- .../arch/db/stores/internal/StoreUtils.kt | 2 +- .../arch/db/stores/internal/StoreWithState.kt | 2 +- .../internal/LinkTableChildProjection.java | 2 +- .../internal/SingleParentChildProjection.java | 2 +- .../core/arch/db/tableinfos/TableInfo.java | 2 +- .../internal/IdentifiableEntityDIModule.java | 2 +- .../internal/IdentifiableStoreProvider.java | 2 +- .../ObjectWithoutUidEntityDIModule.java | 2 +- .../ObjectWithoutUidStoreProvider.java | 2 +- .../core/arch/fields/internal/FieldsHelper.kt | 2 +- .../android/core/arch/file/IFileReader.java | 2 +- .../core/arch/file/ResourcesFileReader.java | 2 +- .../internal/DictionaryTableHandler.kt | 2 +- .../arch/handlers/internal/HandleAction.kt | 2 +- .../core/arch/handlers/internal/Handler.kt | 2 +- .../arch/handlers/internal/HandlerBaseImpl.kt | 2 +- .../internal/HandlerWithTransformer.kt | 2 +- .../internal/IdentifiableDataHandler.kt | 2 +- .../internal/IdentifiableDataHandlerImpl.kt | 2 +- .../internal/IdentifiableHandlerImpl.kt | 2 +- ...fiableWithoutDeleteInterfaceHandlerImpl.kt | 2 +- .../arch/handlers/internal/LinkHandler.kt | 2 +- .../arch/handlers/internal/LinkHandlerImpl.kt | 2 +- .../internal/ObjectWithoutUidHandlerImpl.kt | 2 +- .../handlers/internal/OrderedLinkHandler.kt | 2 +- .../internal/OrderedLinkHandlerImpl.kt | 2 +- .../arch/handlers/internal/Transformer.kt | 2 +- .../core/arch/helpers/AccessHelper.java | 2 +- .../core/arch/helpers/CollectionsHelper.java | 2 +- .../core/arch/helpers/CoordinateHelper.java | 2 +- .../android/core/arch/helpers/DateUtils.kt | 2 +- .../core/arch/helpers/FileResizerHelper.java | 2 +- .../helpers/FileResourceDirectoryHelper.kt | 2 +- .../core/arch/helpers/GeometryHelper.java | 2 +- .../dhis/android/core/arch/helpers/Result.kt | 2 +- .../core/arch/helpers/UidGenerator.java | 2 +- .../core/arch/helpers/UidGeneratorImpl.java | 2 +- .../android/core/arch/helpers/UidsHelper.kt | 2 +- .../android/core/arch/helpers/UserHelper.java | 2 +- .../arch/helpers/internal/BooleanWrapper.java | 2 +- .../arch/helpers/internal/DataStateHelper.kt | 2 +- .../core/arch/helpers/internal/EnumHelper.kt | 2 +- .../internal/FunctionalCollectionHelper.java | 2 +- .../internal/MultiDimensionalPartitioner.kt | 2 +- .../arch/helpers/internal/UrlLengthHelper.kt | 2 +- .../AnalyticsTEIAttributeDeserializer.kt | 2 +- .../AnalyticsTEIDataElementDeserializer.kt | 2 +- .../AnalyticsTEIIndicatorDeserializer.kt | 2 +- .../internal/DateMultiFormatDeserializer.kt | 2 +- .../internal/GeometryTypeDeserializer.java | 2 +- .../json/internal/GeometryTypeSerializer.java | 2 +- .../internal/JSONSerializationDIModule.java | 2 +- .../internal/JsonElementStringConverter.java | 2 +- .../arch/json/internal/ObjectMapperFactory.kt | 2 +- .../internal/StringJsonElementSerializer.java | 2 +- .../MetadataModuleByUidDownloader.java | 2 +- .../internal/MetadataModuleDownloader.java | 2 +- .../internal/TypedModuleDownloader.java | 2 +- .../internal/UntypedModuleDownloader.java | 2 +- .../internal/WithProgressDownloader.java | 2 +- .../children/internal/ChildrenAppender.java | 2 +- .../internal/ChildrenAppenderExecutor.java | 2 +- .../children/internal/ChildrenSelection.java | 2 +- .../collection/BaseRepository.java | 2 +- .../CollectionRepositoryUpload.java | 2 +- .../ReadOnlyCollectionRepository.java | 2 +- ...dOnlyIdentifiableCollectionRepository.java | 2 +- .../ReadOnlyNameableCollectionRepository.java | 2 +- .../ReadOnlyWithDownloadObjectRepository.java | 2 +- .../ReadOnlyWithUidCollectionRepository.java | 2 +- ...eadOnlyWithUploadCollectionRepository.java | 2 +- .../ReadWriteCollectionRepository.java | 2 +- .../ReadWriteWithUidCollectionRepository.java | 2 +- ...WithUploadWithUidCollectionRepository.java | 2 +- ...adOnlyWithUidCollectionRepositoryImpl.java | 2 +- .../internal/BaseRepositoryFactory.java | 2 +- .../internal/BaseRepositoryImpl.java | 2 +- .../ReadOnlyCollectionRepositoryImpl.java | 2 +- ...yIdentifiableCollectionRepositoryImpl.java | 2 +- ...dOnlyNameableCollectionRepositoryImpl.java | 2 +- ...adOnlyWithUidCollectionRepositoryImpl.java | 2 +- ...dWriteWithUidCollectionRepositoryImpl.java | 2 +- .../internal/ScopedRepositoryFactory.java | 2 +- .../di/internal/RepositoriesDIModule.java | 2 +- .../internal/AbstractFilterConnector.java | 2 +- .../internal/BaseAbstractFilterConnector.java | 2 +- .../internal/BaseStringFilterConnector.java | 2 +- .../internal/BaseSubQueryFilterConnector.java | 2 +- .../filters/internal/BoolFilterConnector.java | 2 +- .../internal/BooleanFilterConnector.java | 2 +- .../filters/internal/DateFilterConnector.kt | 2 +- .../internal/DateTimeFilterConnector.kt | 2 +- .../internal/DeletedFilterConnector.java | 2 +- .../internal/DoubleFilterConnector.java | 2 +- .../filters/internal/EnumFilterConnector.java | 2 +- .../filters/internal/EqFilterConnector.java | 2 +- .../internal/EqLikeItemFilterConnector.java | 2 +- .../internal/FilterConnectorFactory.java | 2 +- .../filters/internal/IdentifiableFilters.java | 2 +- .../internal/IntegerFilterConnector.java | 2 +- .../filters/internal/ListFilterConnector.java | 2 +- .../filters/internal/LongFilterConnector.java | 2 +- .../filters/internal/NameableFilters.java | 2 +- .../OrganisationUnitFilterConnector.java | 2 +- .../internal/PeriodFilterConnector.java | 2 +- .../internal/PeriodsFilterConnector.java | 2 +- .../ScopedFilterConnectorFactory.java | 2 +- .../ScopedRepositoryFilterFactory.java | 2 +- .../internal/SimpleDateFilterConnector.kt | 2 +- .../internal/StringFilterConnector.java | 2 +- .../internal/SubQueryFilterConnector.java | 2 +- .../UnwrappedEqInFilterConnector.java | 2 +- .../ValueSubQueryFilterConnector.java | 2 +- .../object/ReadOnlyObjectRepository.java | 2 +- .../ReadOnlyOneObjectRepositoryFinalImpl.java | 2 +- .../object/ReadWriteObjectRepository.java | 2 +- .../ReadWriteValueObjectRepository.java | 2 +- .../internal/ObjectRepositoryFactory.java | 2 +- ...lyAnyObjectWithDownloadRepositoryImpl.java | 2 +- ...FirstObjectWithDownloadRepositoryImpl.java | 2 +- .../ReadOnlyObjectRepositoryImpl.java | 2 +- .../ReadOnlyOneObjectRepositoryImpl.java | 2 +- ...dWriteWithUidDataObjectRepositoryImpl.java | 2 +- .../ReadWriteWithUidObjectRepositoryImpl.java | 2 +- ...eadWriteWithValueObjectRepositoryImpl.java | 2 +- .../paging/internal/RepositoryDataSource.java | 2 +- .../internal/RepositoryPagingConfig.java | 2 +- .../arch/repositories/scope/BaseScope.java | 2 +- .../repositories/scope/RepositoryScope.java | 2 +- .../scope/internal/BaseScopeFactory.java | 2 +- .../scope/internal/FilterItemOperator.java | 2 +- .../scope/internal/RepositoryMode.java | 2 +- .../RepositoryScopeComplexFilterItem.java | 2 +- .../internal/RepositoryScopeFilterItem.java | 2 +- .../scope/internal/RepositoryScopeHelper.java | 2 +- .../RepositoryScopeKeyOrderExtractor.java | 2 +- .../internal/RepositoryScopeOrderByItem.java | 2 +- .../internal/WhereClauseFromScopeBuilder.java | 2 +- .../internal/AndroidInsecureStore.java | 2 +- .../storage/internal/AndroidSecureStore.java | 2 +- .../storage/internal/ChunkedSecureStore.kt | 2 +- .../core/arch/storage/internal/Credentials.kt | 2 +- .../internal/CredentialsSecureStore.kt | 2 +- .../internal/CredentialsSecureStoreImpl.kt | 2 +- .../storage/internal/InMemorySecureStore.java | 2 +- .../internal/InMemoryUnsecureStore.java | 2 +- .../arch/storage/internal/InsecureStore.java | 2 +- .../internal/JsonKeyValueStoreImpl.java | 2 +- .../internal/KeyValueStorageDIModule.java | 2 +- .../arch/storage/internal/KeyValueStore.java | 2 +- .../storage/internal/ObjectKeyValueStore.java | 2 +- .../arch/storage/internal/SecureStore.java | 2 +- .../storage/internal/UserIdInMemoryStore.kt | 2 +- .../android/core/attribute/Attribute.java | 2 +- .../core/attribute/AttributeTableInfo.java | 2 +- .../core/attribute/AttributeValue.java | 2 +- .../core/attribute/AttributeValueUtils.java | 2 +- .../DataElementAttributeValueLink.java | 2 +- ...ataElementAttributeValueLinkTableInfo.java | 2 +- .../attribute/ProgramAttributeValueLink.java | 2 +- .../ProgramAttributeValueLinkTableInfo.java | 2 +- .../ProgramStageAttributeValueLink.java | 2 +- ...ogramStageAttributeValueLinkTableInfo.java | 2 +- .../internal/AttributeEntityDIModule.java | 2 +- .../attribute/internal/AttributeFields.java | 2 +- .../internal/AttributeModuleWiper.java | 2 +- .../internal/AttributePackageDIModule.java | 2 +- .../attribute/internal/AttributeStore.java | 2 +- .../internal/AttributeValuesFields.java | 2 +- .../DataElementAttributeValueLinkStore.java | 2 +- .../ProgramAttributeValueLinkStore.java | 2 +- .../ProgramStageAttributeValueLinkStore.java | 2 +- .../dhis/android/core/category/Category.java | 2 +- .../category/CategoryCategoryComboLink.java | 2 +- .../CategoryCategoryComboLinkTableInfo.java | 2 +- .../category/CategoryCategoryOptionLink.java | 2 +- .../CategoryCategoryOptionLinkTableInfo.java | 2 +- .../CategoryCollectionRepository.java | 2 +- .../android/core/category/CategoryCombo.java | 2 +- .../CategoryComboCollectionRepository.java | 2 +- .../CategoryComboInternalAccessor.java | 2 +- .../core/category/CategoryComboTableInfo.java | 2 +- .../android/core/category/CategoryModule.java | 2 +- .../android/core/category/CategoryOption.java | 2 +- .../CategoryOptionCollectionRepository.java | 2 +- .../core/category/CategoryOptionCombo.java | 2 +- ...CategoryOptionComboCategoryOptionLink.java | 2 +- ...ptionComboCategoryOptionLinkTableInfo.java | 2 +- ...tegoryOptionComboCollectionRepository.java | 2 +- .../category/CategoryOptionComboService.kt | 2 +- .../CategoryOptionComboTableInfo.java | 2 +- .../CategoryOptionOrganisationUnitLink.java | 2 +- ...ryOptionOrganisationUnitLinkTableInfo.java | 2 +- .../CategoryOptionOrganisationUnits.java | 2 +- .../category/CategoryOptionTableInfo.java | 2 +- .../core/category/CategoryTableInfo.java | 2 +- .../core/category/internal/CategoryCall.kt | 2 +- ...CategoryCategoryComboChildrenAppender.java | 2 +- .../CategoryCategoryComboEntityDIModule.java | 2 +- .../CategoryCategoryComboLinkStore.kt | 2 +- ...ategoryCategoryOptionChildrenAppender.java | 2 +- .../CategoryCategoryOptionEntityDIModule.java | 2 +- .../CategoryCategoryOptionLinkPersistor.kt | 2 +- .../CategoryCategoryOptionLinkStore.kt | 2 +- .../category/internal/CategoryComboCall.java | 2 +- .../internal/CategoryComboEntityDIModule.java | 2 +- .../internal/CategoryComboFields.java | 2 +- .../internal/CategoryComboHandler.java | 2 +- .../internal/CategoryComboService.java | 2 +- .../category/internal/CategoryComboStore.kt | 2 +- .../internal/CategoryComboUidsSeeker.java | 2 +- .../internal/CategoryEntityDIModule.java | 2 +- .../category/internal/CategoryFields.java | 2 +- .../internal/CategoryInternalModule.java | 2 +- .../internal/CategoryModuleDownloader.kt | 2 +- .../category/internal/CategoryModuleImpl.java | 2 +- .../internal/CategoryModuleWiper.java | 2 +- .../category/internal/CategoryOptionCall.kt | 2 +- ...onComboCategoryOptionChildrenAppender.java | 2 +- ...tionComboCategoryOptionEntityDIModule.java | 2 +- ...egoryOptionComboCategoryOptionLinkStore.kt | 2 +- .../CategoryOptionComboChildrenAppender.java | 2 +- .../CategoryOptionComboEntityDIModule.java | 2 +- .../internal/CategoryOptionComboFields.java | 2 +- .../internal/CategoryOptionComboHandler.java | 2 +- .../internal/CategoryOptionComboStore.kt | 2 +- .../internal/CategoryOptionComboStoreImpl.kt | 2 +- .../internal/CategoryOptionEntityDIModule.kt | 2 +- .../category/internal/CategoryOptionFields.kt | 2 +- .../internal/CategoryOptionHandler.kt | 2 +- ...yOptionOrganisationUnitChildrenAppender.kt | 2 +- ...oryOptionOrganisationUnitEntityDIModule.kt | 2 +- ...CategoryOptionOrganisationUnitLinkStore.kt | 2 +- .../CategoryOptionOrganisationUnitsCall.kt | 2 +- .../internal/CategoryOptionService.kt | 2 +- .../category/internal/CategoryOptionStore.kt | 2 +- .../internal/CategoryPackageDIModule.kt | 2 +- .../internal/CategoryParentUidsHelper.kt | 2 +- .../category/internal/CategoryService.java | 2 +- .../core/category/internal/CategoryStore.kt | 2 +- .../hisp/dhis/android/core/common/Access.java | 2 +- .../android/core/common/AggregationType.kt | 2 +- .../dhis/android/core/common/AnalyticsType.kt | 2 +- .../android/core/common/AssignedUserMode.java | 2 +- .../android/core/common/BaseDataObject.java | 2 +- .../core/common/BaseDeletableDataObject.java | 2 +- .../core/common/BaseIdentifiableObject.java | 2 +- .../core/common/BaseNameableObject.java | 2 +- .../dhis/android/core/common/BaseObject.java | 2 +- .../dhis/android/core/common/Coordinates.java | 2 +- .../dhis/android/core/common/CoreColumns.java | 2 +- .../dhis/android/core/common/CoreObject.java | 2 +- .../dhis/android/core/common/DataAccess.java | 2 +- .../dhis/android/core/common/DataColumns.java | 2 +- .../dhis/android/core/common/DataObject.java | 2 +- .../android/core/common/DateFilterPeriod.java | 2 +- .../core/common/DateFilterPeriodHelper.kt | 2 +- .../android/core/common/DatePeriodType.java | 2 +- .../android/core/common/DeletableColumns.java | 2 +- .../core/common/DeletableDataColumns.java | 2 +- .../core/common/DeletableDataObject.java | 2 +- .../dhis/android/core/common/FeatureType.java | 2 +- .../android/core/common/FilterPeriod.java | 2 +- .../dhis/android/core/common/FormType.java | 2 +- .../dhis/android/core/common/Geometry.java | 2 +- .../core/common/IdentifiableColumns.java | 2 +- .../core/common/IdentifiableObject.java | 2 +- .../common/IdentifiableWithStyleColumns.java | 2 +- .../android/core/common/NameableColumns.java | 2 +- .../android/core/common/NameableObject.java | 2 +- .../core/common/NameableWithStyleColumns.java | 2 +- .../dhis/android/core/common/ObjectStyle.java | 2 +- .../common/ObjectWithDeleteInterface.java | 2 +- .../android/core/common/ObjectWithStyle.java | 2 +- .../android/core/common/ObjectWithUid.java | 2 +- .../core/common/ObjectWithUidInterface.java | 2 +- .../core/common/OrganisationUnitFilter.kt | 2 +- .../core/common/RelativeOrganisationUnit.kt | 2 +- .../android/core/common/RelativePeriod.kt | 2 +- .../hisp/dhis/android/core/common/State.kt | 2 +- .../core/common/StorableObjectWithUid.java | 2 +- .../hisp/dhis/android/core/common/Unit.java | 2 +- .../dhis/android/core/common/ValueType.kt | 2 +- .../core/common/ValueTypeDeviceRendering.java | 2 +- .../ValueTypeDeviceRenderingTableInfo.java | 2 +- .../core/common/ValueTypeRendering.java | 2 +- .../core/common/ValueTypeRenderingType.java | 2 +- .../core/common/internal/AccessFields.java | 2 +- .../common/internal/CommonModuleWiper.java | 2 +- .../internal/CommonPackageDIModule.java | 2 +- .../common/internal/DataAccessFields.java | 2 +- .../common/internal/DataStatePropagator.kt | 2 +- .../internal/DataStatePropagatorImpl.kt | 2 +- .../common/internal/DataStateUidHolder.kt | 28 ++++++++++++ .../common/internal/TrackerDataManager.kt | 2 +- .../common/internal/TrackerDataManagerImpl.kt | 2 +- .../internal/ObjectStyleFields.java | 2 +- ...alueTypeDeviceRenderingEntityDIModule.java | 2 +- .../ValueTypeDeviceRenderingStore.java | 2 +- .../ValueTypeRenderingEntityDIModule.java | 2 +- .../internal/ValueTypeRenderingHandler.java | 2 +- .../validation/failures/BooleanFailure.kt | 2 +- .../validation/failures/CoordinateFailure.kt | 2 +- .../validation/failures/DateFailure.kt | 2 +- .../validation/failures/DateTimeFailure.kt | 2 +- .../validation/failures/EmailFailure.kt | 2 +- .../validation/failures/IntegerFailure.kt | 2 +- .../failures/IntegerNegativeFailure.kt | 2 +- .../failures/IntegerPositiveFailure.kt | 2 +- .../failures/IntegerZeroOrPositiveFailure.kt | 2 +- .../validation/failures/LetterFailure.kt | 2 +- .../validation/failures/LongTextFailure.kt | 2 +- .../validation/failures/NumberFailure.kt | 2 +- .../validation/failures/PercentageFailure.kt | 2 +- .../validation/failures/PhoneNumberFailure.kt | 2 +- .../validation/failures/TextFailure.kt | 2 +- .../validation/failures/TimeFailure.kt | 2 +- .../validation/failures/TrueOnlyFailure.kt | 2 +- .../validation/failures/UidFailure.kt | 2 +- .../failures/UnitIntervalFailure.kt | 2 +- .../validation/failures/UrlFailure.kt | 2 +- .../validation/validators/BooleanValidator.kt | 2 +- .../validators/CoordinateValidator.kt | 2 +- .../validators/DateTimeValidator.kt | 2 +- .../validation/validators/DateValidator.kt | 2 +- .../validation/validators/EmailValidator.kt | 2 +- .../validators/IntegerNegativeValidator.kt | 2 +- .../validators/IntegerPositiveValidator.kt | 2 +- .../validation/validators/IntegerValidator.kt | 2 +- .../validators/IntegerValidatorBase.kt | 2 +- .../IntegerZeroOrPositiveValidator.kt | 2 +- .../validation/validators/LetterValidator.kt | 2 +- .../validators/LongTextValidator.kt | 2 +- .../validation/validators/NumberValidator.kt | 2 +- .../validators/PercentageValidator.kt | 2 +- .../validators/PhoneNumberValidator.kt | 2 +- .../validation/validators/TextValidator.kt | 2 +- .../validation/validators/TimeValidator.kt | 2 +- .../validators/TrueOnlyValidator.kt | 2 +- .../validation/validators/UidValidator.kt | 2 +- .../validators/UnitIntervalValidator.kt | 2 +- .../validation/validators/UrlValidator.kt | 2 +- .../validators/ValueTypeValidator.kt | 2 +- .../configuration/internal/Configuration.java | 2 +- .../internal/ConfigurationPackageDIModule.kt | 2 +- .../internal/ConfigurationStore.java | 2 +- .../internal/ConfigurationTableInfo.java | 2 +- .../internal/DatabaseAccount.java | 2 +- .../internal/DatabaseConfigurationHelper.kt | 2 +- .../DatabaseConfigurationInsecureStore.kt | 2 +- .../DatabaseConfigurationMigration.kt | 2 +- .../DatabaseConfigurationTransformer.kt | 2 +- .../DatabaseEncryptionPasswordGenerator.java | 2 +- .../DatabaseEncryptionPasswordManager.java | 2 +- .../internal/DatabaseNameGenerator.kt | 2 +- .../configuration/internal/DatabaseRenamer.kt | 2 +- .../internal/DatabasesConfiguration.java | 2 +- .../configuration/internal/DateProvider.kt | 2 +- .../internal/MultiUserDatabaseManager.kt | 2 +- .../MultiUserDatabaseManagerForD2Manager.kt | 2 +- .../configuration/internal/ServerUrlParser.kt | 2 +- .../DatabaseConfigurationInsecureStoreOld.kt | 2 +- .../dhis/android/core/constant/Constant.java | 2 +- .../ConstantCollectionRepository.java | 2 +- .../android/core/constant/ConstantModule.java | 2 +- .../core/constant/ConstantTableInfo.java | 2 +- .../internal/ConstantCallFactory.java | 2 +- .../constant/internal/ConstantFields.java | 2 +- .../constant/internal/ConstantHandler.java | 2 +- .../internal/ConstantModuleDownloader.java | 2 +- .../constant/internal/ConstantModuleImpl.java | 2 +- .../internal/ConstantModuleWiper.java | 2 +- .../internal/ConstantPackageDIModule.java | 2 +- .../constant/internal/ConstantService.java | 2 +- .../core/constant/internal/ConstantStore.kt | 2 +- .../core/dataapproval/DataApproval.java | 2 +- .../DataApprovalCollectionRepository.java | 2 +- .../core/dataapproval/DataApprovalState.java | 2 +- .../dataapproval/DataApprovalTableInfo.java | 2 +- .../dataapproval/internal/DataApprovalCall.kt | 2 +- .../internal/DataApprovalEntityDIModule.java | 2 +- .../internal/DataApprovalFields.java | 2 +- .../internal/DataApprovalPackageDIModule.java | 2 +- .../internal/DataApprovalQuery.java | 2 +- .../internal/DataApprovalService.java | 2 +- .../internal/DataApprovalStore.java | 2 +- .../android/core/dataelement/DataElement.java | 2 +- .../DataElementCollectionRepository.java | 2 +- .../core/dataelement/DataElementModule.java | 2 +- .../core/dataelement/DataElementOperand.java | 2 +- .../DataElementOperandTableInfo.java | 2 +- .../dataelement/DataElementTableInfo.java | 2 +- ...taElementAttributeValueEntityDIModule.java | 2 +- .../DataElementEndpointCallFactory.java | 2 +- .../internal/DataElementEntityDIModule.java | 2 +- .../internal/DataElementFields.java | 2 +- .../internal/DataElementHandler.java | 2 +- .../DataElementLegendSetChildrenAppender.java | 2 +- .../DataElementLegendSetEntityDIModule.java | 2 +- .../internal/DataElementModuleImpl.java | 2 +- .../internal/DataElementModuleWiper.java | 2 +- .../DataElementOperandEntityDIModule.java | 2 +- .../internal/DataElementOperandFields.java | 2 +- .../internal/DataElementOperandStore.java | 2 +- .../internal/DataElementPackageDIModule.java | 2 +- .../internal/DataElementService.java | 2 +- .../internal/DataElementStore.java | 2 +- .../android/core/dataset/DataInputPeriod.java | 2 +- .../dataset/DataInputPeriodTableInfo.java | 2 +- .../dhis/android/core/dataset/DataSet.java | 2 +- .../dataset/DataSetCollectionRepository.java | 2 +- .../dataset/DataSetCompleteRegistration.java | 2 +- ...pleteRegistrationCollectionRepository.java | 2 +- ...tCompleteRegistrationObjectRepository.java | 2 +- .../DataSetCompleteRegistrationTableInfo.java | 2 +- ...taSetCompulsoryDataElementOperandLink.java | 2 +- ...ulsoryDataElementOperandLinkTableInfo.java | 2 +- .../DataSetDataElementLinkTableInfo.java | 2 +- .../android/core/dataset/DataSetElement.java | 2 +- .../dataset/DataSetElementLinkTableInfo.java | 2 +- .../android/core/dataset/DataSetInstance.java | 2 +- .../DataSetInstanceCollectionRepository.java | 2 +- .../core/dataset/DataSetInstanceSummary.java | 2 +- ...etInstanceSummaryCollectionRepository.java | 2 +- .../core/dataset/DataSetInternalAccessor.java | 2 +- .../android/core/dataset/DataSetModule.java | 2 +- .../dataset/DataSetOrganisationUnitLink.java | 2 +- .../DataSetOrganisationUnitLinkTableInfo.java | 2 +- .../core/dataset/DataSetTableInfo.java | 2 +- .../dhis/android/core/dataset/Section.java | 2 +- .../dataset/SectionCollectionRepository.java | 2 +- .../core/dataset/SectionDataElementLink.java | 2 +- .../SectionDataElementLinkTableInfo.java | 2 +- .../core/dataset/SectionGreyedFieldsLink.java | 2 +- .../SectionGreyedFieldsLinkTableInfo.java | 2 +- .../SectionIndicatorLinkTableInfo.java | 2 +- .../core/dataset/SectionTableInfo.java | 2 +- .../DataInputPeriodChildrenAppender.java | 2 +- .../DataInputPeriodEntityDIModule.java | 2 +- .../internal/DataInputPeriodFields.java | 2 +- .../internal/DataInputPeriodLinkStore.java | 2 +- .../DataSetCompleteRegistrationCall.kt | 2 +- ...ataSetCompleteRegistrationCallProcessor.kt | 2 +- ...SetCompleteRegistrationEntityDIModule.java | 2 +- .../DataSetCompleteRegistrationFields.java | 2 +- ...aSetCompleteRegistrationImportHandler.java | 2 +- .../DataSetCompleteRegistrationPayload.java | 2 +- .../DataSetCompleteRegistrationPostCall.kt | 2 +- .../DataSetCompleteRegistrationQuery.java | 2 +- .../DataSetCompleteRegistrationService.kt | 2 +- .../DataSetCompleteRegistrationStore.java | 2 +- .../DataSetCompleteRegistrationStoreImpl.java | 2 +- ...oryDataElementOperandChildrenAppender.java | 2 +- ...lsoryDataElementOperandEntityDIModule.java | 2 +- ...CompulsoryDataElementOperandLinkStore.java | 2 +- .../internal/DataSetDataElementLinkStore.java | 2 +- .../DataSetElementChildrenAppender.java | 2 +- .../DataSetElementEntityDIModule.java | 2 +- .../internal/DataSetElementFields.java | 2 +- .../internal/DataSetEndpointCallFactory.java | 2 +- .../internal/DataSetEntityDIModule.java | 2 +- .../core/dataset/internal/DataSetFields.java | 2 +- .../core/dataset/internal/DataSetHandler.java | 2 +- .../DataSetInstanceEntityDIModule.java | 2 +- .../DataSetInstanceSQLStatementBuilder.java | 2 +- .../internal/DataSetInstanceStore.java | 2 +- ...SetInstanceSummarySQLStatementBuilder.java | 2 +- .../internal/DataSetInstanceSummaryStore.java | 2 +- .../internal/DataSetModuleDownloader.kt | 2 +- .../dataset/internal/DataSetModuleImpl.java | 2 +- .../dataset/internal/DataSetModuleWiper.java | 2 +- ...SetOrganisationUnitLinkEntityDIModule.java | 2 +- .../DataSetOrganisationUnitLinkStore.java | 2 +- .../internal/DataSetPackageDIModule.java | 2 +- .../internal/DataSetParentUidsHelper.java | 2 +- .../core/dataset/internal/DataSetService.java | 2 +- .../core/dataset/internal/DataSetStore.java | 2 +- .../SectionDataElementChildrenAppender.java | 2 +- .../SectionDataElementEntityDIModule.java | 2 +- .../internal/SectionDataElementLinkStore.java | 2 +- .../dataset/internal/SectionEntityDIModule.kt | 2 +- .../core/dataset/internal/SectionFields.java | 2 +- .../SectionGreyedFieldsChildrenAppender.java | 2 +- .../SectionGreyedFieldsEntityDIModule.java | 2 +- .../SectionGreyedFieldsLinkStore.java | 2 +- .../core/dataset/internal/SectionHandler.kt | 2 +- .../SectionIndicatorEntityDIModule.kt | 2 +- .../internal/SectionIndicatorLink.java | 2 +- .../internal/SectionIndicatorLinkStore.kt | 2 +- .../SectionIndicatorsChildrenAppender.kt | 2 +- .../core/dataset/internal/SectionStore.java | 2 +- .../android/core/datastore/DataStoreModule.kt | 2 +- .../android/core/datastore/KeyValuePair.java | 2 +- .../LocalDataStoreCollectionRepository.java | 2 +- .../LocalDataStoreObjectRepository.java | 2 +- .../core/datastore/LocalDataStoreTableInfo.kt | 2 +- .../datastore/internal/DataStoreModuleImpl.kt | 2 +- .../internal/DataStorePackageDIModule.kt | 2 +- .../internal/LocalDataStoreEntityDIModule.kt | 2 +- .../internal/LocalDataStoreModuleWiper.kt | 2 +- .../datastore/internal/LocalDataStoreStore.kt | 2 +- .../android/core/datavalue/DataValue.java | 2 +- .../DataValueByDataSetQueryHelper.kt | 2 +- .../DataValueCollectionRepository.java | 2 +- .../core/datavalue/DataValueConflict.java | 2 +- .../datavalue/DataValueConflictTableInfo.kt | 2 +- .../core/datavalue/DataValueModule.java | 2 +- .../datavalue/DataValueObjectRepository.java | 2 +- .../core/datavalue/DataValueTableInfo.java | 2 +- .../core/datavalue/internal/DataValueCall.kt | 2 +- .../internal/DataValueConflictDIModule.kt | 2 +- .../internal/DataValueConflictParser.kt | 2 +- .../internal/DataValueConflictStore.kt | 2 +- .../internal/DataValueEntityDIModule.java | 2 +- .../datavalue/internal/DataValueFields.java | 2 +- .../datavalue/internal/DataValueHandler.kt | 2 +- .../internal/DataValueImportHandler.kt | 2 +- .../internal/DataValueModuleImpl.java | 2 +- .../internal/DataValueModuleWiper.kt | 2 +- .../internal/DataValuePackageDIModule.java | 2 +- .../datavalue/internal/DataValuePostCall.kt | 2 +- .../datavalue/internal/DataValueQuery.java | 2 +- .../datavalue/internal/DataValueService.kt | 2 +- .../core/datavalue/internal/DataValueSet.kt | 2 +- .../datavalue/internal/DataValueStore.java | 2 +- .../conflicts/DataValueImportConflictItem.kt | 2 +- .../conflicts/IndexedDataValueConflict.kt | 2 +- .../InvalidDataElementType37Conflict.kt | 2 +- .../InvalidDataElementTypeConflict.kt | 2 +- .../LegacyDataValueImportConflictItem.kt | 2 +- .../conflicts/PastExpiryDateConflict.kt | 2 +- .../PeriodAfterLatestOpenFutureConflict.kt | 2 +- .../domain/aggregated/AggregatedModule.java | 2 +- .../data/internal/AggregatedDataCall.java | 2 +- .../internal/AggregatedDataCallBundle.java | 2 +- .../AggregatedDataCallBundleFactory.java | 2 +- .../internal/AggregatedDataCallBundleKey.java | 2 +- .../internal/AggregatedDataModuleImpl.java | 2 +- .../AggregatedDataPackageDIModule.java | 2 +- .../data/internal/AggregatedDataSync.java | 2 +- .../AggregatedDataSyncHashHelper.java | 2 +- ...gregatedDataSyncLastUpdatedCalculator.java | 2 +- .../internal/AggregatedDataSyncStore.java | 2 +- .../internal/AggregatedDataSyncTableInfo.java | 2 +- .../internal/AggregatedModuleImpl.java | 2 +- .../core/domain/metadata/MetadataCall.kt | 2 +- .../metadata/internal/MetadataHelper.kt | 2 +- .../metadata/internal/MetadataModuleImpl.java | 2 +- .../android/core/enrollment/Enrollment.java | 2 +- .../core/enrollment/EnrollmentAccess.kt | 2 +- .../EnrollmentCollectionRepository.java | 2 +- .../EnrollmentCreateProjection.java | 2 +- .../EnrollmentInternalAccessor.java | 2 +- .../core/enrollment/EnrollmentModule.java | 2 +- .../EnrollmentObjectRepository.java | 2 +- .../core/enrollment/EnrollmentService.kt | 2 +- .../core/enrollment/EnrollmentStatus.java | 2 +- .../core/enrollment/EnrollmentTableInfo.java | 2 +- .../NewTrackerImporterEnrollment.java | 2 +- ...NewTrackerImporterEnrollmentTransformer.kt | 2 +- .../internal/EnrollmentEntityDIModule.java | 2 +- .../enrollment/internal/EnrollmentFields.java | 2 +- .../enrollment/internal/EnrollmentHandler.kt | 2 +- .../internal/EnrollmentImportHandler.kt | 2 +- .../internal/EnrollmentModuleImpl.kt | 2 +- .../internal/EnrollmentModuleWiper.java | 2 +- .../internal/EnrollmentPackageDIModule.java | 2 +- .../EnrollmentPersistenceCallFactory.kt | 2 +- .../EnrollmentProjectionTransformer.java | 2 +- .../internal/EnrollmentService.java | 2 +- .../internal/EnrollmentServiceImpl.kt | 2 +- .../enrollment/internal/EnrollmentStore.kt | 2 +- .../internal/EnrollmentStoreImpl.kt | 2 +- .../hisp/dhis/android/core/event/Event.java | 2 +- .../core/event/EventCollectionRepository.java | 2 +- .../core/event/EventCreateProjection.java | 2 +- .../android/core/event/EventDataFilter.java | 2 +- .../core/event/EventDataFilterTableInfo.java | 2 +- .../android/core/event/EventDownloader.java | 2 +- .../android/core/event/EventEditableStatus.kt | 2 +- .../dhis/android/core/event/EventFilter.java | 2 +- .../EventFilterCollectionRepository.java | 2 +- .../core/event/EventFilterTableInfo.java | 2 +- .../core/event/EventInternalAccessor.kt | 2 +- .../dhis/android/core/event/EventModule.java | 2 +- .../core/event/EventNonEditableReason.kt | 2 +- .../core/event/EventObjectRepository.java | 2 +- .../core/event/EventQueryCriteria.java | 2 +- .../dhis/android/core/event/EventService.kt | 2 +- .../dhis/android/core/event/EventStatus.java | 2 +- .../android/core/event/EventTableInfo.java | 2 +- .../core/event/NewTrackerImporterEvent.java | 2 +- .../NewTrackerImporterEventTransformer.kt | 2 +- .../internal/DateFilterPeriodFields.java | 2 +- .../EventDataFilterEntityDIModule.java | 2 +- .../event/internal/EventDataFilterFields.java | 2 +- .../event/internal/EventDataFilterStore.kt | 2 +- .../core/event/internal/EventDateUtils.kt | 2 +- .../core/event/internal/EventDownloadCall.kt | 2 +- .../internal/EventEndpointCallFactory.kt | 2 +- .../event/internal/EventEntityDIModule.java | 2 +- .../core/event/internal/EventFields.java | 2 +- .../core/event/internal/EventFilterCall.java | 2 +- .../internal/EventFilterEntityDIModule.java | 2 +- ...FilterEventDataFilterChildrenAppender.java | 2 +- .../event/internal/EventFilterFields.java | 2 +- .../core/event/internal/EventFilterHandler.kt | 2 +- .../event/internal/EventFilterService.java | 2 +- .../core/event/internal/EventFilterStore.kt | 2 +- .../core/event/internal/EventHandler.kt | 2 +- .../core/event/internal/EventImportHandler.kt | 2 +- .../event/internal/EventLastUpdatedManager.kt | 2 +- .../core/event/internal/EventModuleImpl.kt | 2 +- .../core/event/internal/EventModuleWiper.java | 2 +- .../event/internal/EventPackageDIModule.java | 2 +- .../core/event/internal/EventPayload.java | 2 +- .../internal/EventPersistenceCallFactory.kt | 2 +- .../core/event/internal/EventPostNoteStore.kt | 2 +- .../event/internal/EventPostParentCall.kt | 2 +- .../internal/EventPostPayloadGenerator.kt | 2 +- .../event/internal/EventPostStateManager.kt | 2 +- .../internal/EventProjectionTransformer.java | 2 +- .../core/event/internal/EventQuery.java | 2 +- .../core/event/internal/EventQueryBundle.java | 2 +- .../event/internal/EventQueryBundleFactory.kt | 2 +- .../EventQueryBundleInternalFactory.kt | 2 +- .../internal/EventQueryCriteriaFields.java | 2 +- .../core/event/internal/EventService.kt | 2 +- .../core/event/internal/EventServiceImpl.kt | 2 +- .../android/core/event/internal/EventStore.kt | 2 +- .../core/event/internal/EventStoreImpl.kt | 2 +- .../core/event/internal/EventSync.java | 2 +- .../internal/EventSyncEntityDIModule.java | 2 +- .../core/event/internal/EventSyncStore.java | 2 +- .../event/internal/EventSyncTableInfo.java | 2 +- .../EventCollectionRepositoryAdapter.kt | 2 +- .../EventQueryCollectionRepository.java | 2 +- .../event/search/EventQueryEntityDIModule.kt | 2 +- .../search/EventQueryRepositoryScope.java | 2 +- .../search/EventQueryRepositoryScopeHelper.kt | 2 +- .../search/EventQueryScopeOrderByItem.java | 2 +- .../search/EventQueryScopeOrderColumn.java | 2 +- .../core/fileresource/FileResource.java | 2 +- .../FileResourceCollectionRepository.java | 2 +- .../core/fileresource/FileResourceModule.java | 2 +- .../FileResourceObjectRepository.java | 2 +- .../fileresource/FileResourceTableInfo.java | 2 +- .../fileresource/internal/FileResourceCall.kt | 2 +- .../internal/FileResourceCallFactory.kt | 2 +- .../internal/FileResourceEntityDIModule.kt | 2 +- .../internal/FileResourceHelper.kt | 2 +- .../internal/FileResourceModuleDownloader.kt | 2 +- .../internal/FileResourceModuleImpl.kt | 2 +- .../internal/FileResourceModuleWiper.kt | 2 +- .../internal/FileResourcePackageDIModule.kt | 2 +- .../internal/FileResourcePostCall.kt | 2 +- .../FileResourceProjectionTransformer.java | 2 +- .../internal/FileResourceResponse.java | 2 +- .../internal/FileResourceService.kt | 2 +- .../internal/FileResourceStoreImpl.kt | 2 +- .../internal/FileResourceType.java | 2 +- .../fileresource/internal/FileResourceUtil.kt | 2 +- .../android/core/imports/ImportStatus.java | 2 +- .../core/imports/TrackerImportConflict.java | 2 +- ...kerImportConflictCollectionRepository.java | 2 +- .../TrackerImportConflictTableInfo.java | 2 +- .../android/core/imports/TrackerJobManager.kt | 2 +- .../imports/internal/BaseImportSummaries.java | 2 +- .../imports/internal/BaseImportSummary.java | 2 +- .../internal/BaseImportSummaryHelper.kt | 2 +- .../internal/DataValueImportSummary.java | 2 +- .../DataValueImportSummaryWebResponse.java | 2 +- .../internal/EnrollmentImportSummaries.java | 2 +- .../internal/EnrollmentImportSummary.java | 2 +- .../EnrollmentWebResponseHandlerSummary.kt | 2 +- .../internal/EventImportSummaries.java | 2 +- .../imports/internal/EventImportSummary.java | 2 +- .../imports/internal/EventWebResponse.java | 2 +- .../imports/internal/HttpMessageResponse.java | 2 +- .../core/imports/internal/ImportConflict.java | 2 +- .../core/imports/internal/ImportCount.java | 2 +- .../core/imports/internal/ImportModule.java | 2 +- .../imports/internal/ImportModuleImpl.java | 2 +- .../imports/internal/ImportModuleWiper.java | 2 +- .../internal/ImportPackageDIModule.java | 2 +- .../imports/internal/ImportSummaries.java | 2 +- .../core/imports/internal/ImportSummary.java | 2 +- .../internal/ItemsWithFileResources.kt | 2 +- .../internal/RelationshipDeleteSummary.java | 2 +- .../RelationshipDeleteWebResponse.java | 2 +- .../internal/RelationshipImportSummaries.java | 2 +- .../internal/RelationshipImportSummary.java | 2 +- .../internal/RelationshipWebResponse.java | 2 +- .../imports/internal/TEIImportSummaries.java | 2 +- .../imports/internal/TEIImportSummary.java | 2 +- .../core/imports/internal/TEIWebResponse.java | 2 +- .../imports/internal/TEIWebResponseHandler.kt | 2 +- .../internal/TEIWebResponseHandlerSummary.kt | 2 +- .../TrackerImportConflictEntityDIModule.java | 2 +- .../internal/TrackerImportConflictParser.kt | 2 +- .../internal/TrackerImportConflictStore.kt | 2 +- .../TrackerImportConflictStoreImpl.java | 2 +- .../core/imports/internal/WebResponse.java | 2 +- .../conflicts/BadAttributePatternConflict.kt | 2 +- .../EnrollmentHasInvalidProgramConflict.kt | 2 +- .../conflicts/EnrollmentNotFoundConflict.kt | 2 +- .../EventHasInvalidProgramConflict.kt | 2 +- .../EventHasInvalidProgramStageConflict.kt | 2 +- .../conflicts/EventNotFoundConflict.kt | 2 +- .../FileResourceAlreadyAssignedConflict.kt | 2 +- .../FileResourceReferenceNotFoundConflict.kt | 2 +- .../InvalidAttributeValueTypeConflict.kt | 2 +- .../conflicts/InvalidDataValueConflict.kt | 2 +- .../InvalidTrackedEntityTypeConflict.kt | 2 +- ...nrollmentCascadeDeleteAuthorityConflict.kt | 2 +- ...ackingTEICascadeDeleteAuthorityConflict.kt | 2 +- .../conflicts/MissingAttributeConflict.kt | 2 +- .../conflicts/MissingDataElementConflict.kt | 2 +- .../conflicts/NonUniqueAttributeConflict.kt | 2 +- .../TrackedEntityInstanceNotFoundConflict.kt | 2 +- .../conflicts/TrackerImportConflictItem.kt | 2 +- .../TrackerImportConflictItemContext.kt | 2 +- .../core/indicator/DataSetIndicatorLink.java | 2 +- .../DataSetIndicatorLinkTableInfo.java | 2 +- .../android/core/indicator/Indicator.java | 2 +- .../IndicatorCollectionRepository.java | 2 +- .../IndicatorLegendSetLinkTableInfo.kt | 2 +- .../core/indicator/IndicatorModule.java | 2 +- .../core/indicator/IndicatorTableInfo.java | 2 +- .../android/core/indicator/IndicatorType.java | 2 +- .../IndicatorTypeCollectionRepository.java | 2 +- .../indicator/IndicatorTypeTableInfo.java | 2 +- .../DataSetIndicatorEngine.kt | 2 +- .../DataSetIndicatorEngineImpl.kt | 2 +- .../DataSetIndicatorEvaluator.kt | 2 +- .../IndicatorEngineEntityDIModule.kt | 2 +- .../DataSetIndicatorChildrenAppender.java | 2 +- .../DataSetIndicatorEntityDIModule.java | 2 +- .../internal/DataSetIndicatorLinkStore.java | 2 +- .../IndicatorEndpointCallFactory.java | 2 +- .../internal/IndicatorEntityDIModule.java | 2 +- .../indicator/internal/IndicatorFields.java | 2 +- .../indicator/internal/IndicatorHandler.kt | 2 +- .../IndicatorLegendSetChildrenAppender.kt | 2 +- .../internal/IndicatorModuleDownloader.kt | 2 +- .../internal/IndicatorModuleImpl.java | 2 +- .../internal/IndicatorModuleWiper.java | 2 +- .../internal/IndicatorPackageDIModule.java | 2 +- .../indicator/internal/IndicatorService.java | 2 +- .../indicator/internal/IndicatorStore.java | 2 +- .../IndicatorTypeEndpointCallFactory.java | 2 +- .../internal/IndicatorTypeEntityDIModule.java | 2 +- .../internal/IndicatorTypeFields.java | 2 +- .../internal/IndicatorTypeService.java | 2 +- .../internal/IndicatorTypeStore.java | 2 +- .../indicator/internal/IndicatorUidsSeeker.kt | 2 +- .../legendset/DataElementLegendSetLink.java | 2 +- .../DataElementLegendSetLinkTableInfo.java | 2 +- .../legendset/IndicatorLegendSetLink.java | 2 +- .../dhis/android/core/legendset/Legend.java | 2 +- .../legendset/LegendCollectionRepository.java | 2 +- .../android/core/legendset/LegendSet.java | 2 +- .../LegendSetCollectionRepository.java | 2 +- .../core/legendset/LegendSetModule.java | 2 +- .../core/legendset/LegendSetTableInfo.java | 2 +- .../core/legendset/LegendTableInfo.java | 2 +- .../ProgramIndicatorLegendSetLink.java | 2 +- ...rogramIndicatorLegendSetLinkTableInfo.java | 2 +- .../DataElementLegendSetLinkStore.java | 2 +- .../IndicatorLegendSetEntityDIModule.kt | 2 +- .../internal/IndicatorLegendSetLinkStore.kt | 2 +- .../internal/LegendChildrenAppender.java | 2 +- .../internal/LegendEntityDIModule.java | 2 +- .../core/legendset/internal/LegendFields.java | 2 +- .../internal/LegendPackageDIModule.java | 2 +- .../internal/LegendSetEntityDIModule.java | 2 +- .../legendset/internal/LegendSetFields.java | 2 +- .../legendset/internal/LegendSetHandler.java | 2 +- .../internal/LegendSetModuleImpl.java | 2 +- .../internal/LegendSetModuleWiper.java | 2 +- .../legendset/internal/LegendSetStore.java | 2 +- .../core/legendset/internal/LegendStore.java | 2 +- .../ProgramIndicatorLegendSetLinkStore.java | 2 +- .../android/core/maintenance/D2Error.java | 2 +- .../android/core/maintenance/D2ErrorCode.java | 2 +- .../D2ErrorCollectionRepository.java | 2 +- .../core/maintenance/D2ErrorComponent.java | 2 +- .../core/maintenance/D2ErrorTableInfo.java | 2 +- .../core/maintenance/ForeignKeyViolation.java | 2 +- ...reignKeyViolationCollectionRepository.java | 2 +- .../ForeignKeyViolationTableInfo.java | 2 +- .../core/maintenance/MaintenanceModule.java | 2 +- .../maintenance/PerformanceHintsService.java | 2 +- .../internal/D2ErrorEntityDIModule.java | 2 +- .../maintenance/internal/D2ErrorStore.java | 2 +- .../internal/ForeignKeyCleaner.java | 2 +- .../internal/ForeignKeyCleanerImpl.java | 2 +- .../ForeignKeyViolationEntityDIModule.java | 2 +- .../internal/ForeignKeyViolationStore.java | 2 +- .../internal/MaintenanceModuleImpl.java | 2 +- .../internal/MaintenanceModuleWiper.java | 2 +- .../internal/MaintenancePackageDIModule.java | 2 +- .../core/mockwebserver/Dhis2Dispatcher.java | 2 +- .../core/mockwebserver/Dhis2MockServer.java | 2 +- .../mockwebserver/ResponseController.java | 2 +- .../core/note/NewTrackerImporterNote.java | 2 +- .../note/NewTrackerImporterNoteTransformer.kt | 2 +- .../org/hisp/dhis/android/core/note/Note.java | 2 +- .../core/note/NoteCollectionRepository.java | 2 +- .../core/note/NoteCreateProjection.java | 2 +- .../dhis/android/core/note/NoteModule.java | 2 +- .../dhis/android/core/note/NoteTableInfo.java | 2 +- .../note/internal/NoteDHISVersionManager.java | 2 +- .../note/internal/NoteEntityDIModule.java | 2 +- .../core/note/internal/NoteFields.java | 2 +- .../NoteForEnrollmentChildrenAppender.java | 2 +- .../NoteForEventChildrenAppender.java | 2 +- .../core/note/internal/NoteModuleImpl.java | 2 +- .../note/internal/NotePackageDIModule.java | 2 +- .../internal/NoteProjectionTransformer.java | 2 +- .../android/core/note/internal/NoteStore.java | 2 +- .../note/internal/NoteUniquenessManager.java | 2 +- .../hisp/dhis/android/core/option/Option.java | 2 +- .../option/OptionCollectionRepository.java | 2 +- .../dhis/android/core/option/OptionGroup.java | 2 +- .../OptionGroupCollectionRepository.java | 2 +- .../core/option/OptionGroupOptionLink.java | 2 +- .../OptionGroupOptionLinkTableInfo.java | 2 +- .../core/option/OptionGroupTableInfo.java | 2 +- .../android/core/option/OptionModule.java | 2 +- .../dhis/android/core/option/OptionSet.java | 2 +- .../option/OptionSetCollectionRepository.java | 2 +- .../core/option/OptionSetTableInfo.java | 2 +- .../android/core/option/OptionTableInfo.java | 2 +- .../core/option/internal/OptionCall.java | 2 +- .../option/internal/OptionEntityDIModule.java | 2 +- .../core/option/internal/OptionFields.java | 2 +- .../core/option/internal/OptionGroupCall.java | 2 +- .../internal/OptionGroupEntityDIModule.java | 2 +- .../option/internal/OptionGroupFields.java | 2 +- .../option/internal/OptionGroupHandler.java | 2 +- .../OptionGroupOptionChildrenAppender.java | 2 +- .../OptionGroupOptionEntityDIModule.java | 2 +- .../internal/OptionGroupOptionLinkStore.java | 2 +- .../option/internal/OptionGroupService.java | 2 +- .../option/internal/OptionGroupStore.java | 2 +- .../core/option/internal/OptionHandler.java | 2 +- .../option/internal/OptionModuleImpl.java | 2 +- .../option/internal/OptionModuleWiper.java | 2 +- .../internal/OptionPackageDIModule.java | 2 +- .../core/option/internal/OptionService.java | 2 +- .../core/option/internal/OptionSetCall.kt | 2 +- .../internal/OptionSetEntityDIModule.java | 2 +- .../core/option/internal/OptionSetFields.java | 2 +- .../option/internal/OptionSetService.java | 2 +- .../core/option/internal/OptionSetStore.java | 2 +- .../core/option/internal/OptionStore.java | 2 +- .../organisationunit/OrganisationUnit.java | 2 +- .../OrganisationUnitCollectionRepository.java | 2 +- .../OrganisationUnitGroup.java | 2 +- ...nisationUnitGroupCollectionRepository.java | 2 +- .../OrganisationUnitGroupTableInfo.java | 2 +- .../OrganisationUnitInternalAccessor.java | 2 +- .../OrganisationUnitLevel.java | 2 +- ...nisationUnitLevelCollectionRepository.java | 2 +- .../OrganisationUnitLevelTableInfo.java | 2 +- .../OrganisationUnitMode.java | 2 +- .../OrganisationUnitModule.java | 2 +- ...nisationUnitOrganisationUnitGroupLink.java | 2 +- ...nitOrganisationUnitGroupLinkTableInfo.java | 2 +- .../OrganisationUnitProgramLink.java | 2 +- .../OrganisationUnitProgramLinkTableInfo.java | 2 +- .../OrganisationUnitService.kt | 2 +- .../OrganisationUnitTableInfo.java | 2 +- .../OrganisationUnitTree.java | 2 +- .../internal/OrganisationUnitCall.java | 2 +- ...ganisationUnitDataSetChildrenAppender.java | 2 +- .../OrganisationUnitDisplayPathGenerator.java | 2 +- .../OrganisationUnitDisplayPathTransformer.kt | 2 +- .../OrganisationUnitEntityDIModule.java | 2 +- .../internal/OrganisationUnitFields.java | 2 +- .../OrganisationUnitGroupEntityDIModule.java | 2 +- .../internal/OrganisationUnitGroupFields.java | 2 +- .../internal/OrganisationUnitGroupStore.kt | 2 +- .../internal/OrganisationUnitHandler.java | 2 +- .../internal/OrganisationUnitHandlerImpl.java | 2 +- .../OrganisationUnitLevelEndpointCall.java | 2 +- .../OrganisationUnitLevelEntityDIModule.java | 2 +- .../internal/OrganisationUnitLevelFields.java | 2 +- .../OrganisationUnitLevelService.java | 2 +- .../internal/OrganisationUnitLevelStore.kt | 2 +- .../OrganisationUnitModuleDownloader.kt | 2 +- .../internal/OrganisationUnitModuleImpl.java | 2 +- .../internal/OrganisationUnitModuleWiper.java | 2 +- ...ganisationUnitGroupLinkEntityDIModule.java | 2 +- ...ationUnitOrganisationUnitGroupLinkStore.kt | 2 +- ...ationUnitGroupProgramChildrenAppender.java | 2 +- .../OrganisationUnitPackageDIModule.java | 2 +- ...ganisationUnitProgramChildrenAppender.java | 2 +- ...nisationUnitProgramLinkEntityDIModule.java | 2 +- .../OrganisationUnitProgramLinkStore.java | 2 +- .../internal/OrganisationUnitService.java | 2 +- .../internal/OrganisationUnitStore.kt | 2 +- .../expression/CommonExpressionVisitor.java | 2 +- .../internal/expression/CommonParser.java | 2 +- .../internal/expression/ExpressionItem.java | 2 +- .../expression/ExpressionItemMethod.java | 2 +- .../internal/expression/ParserUtils.java | 2 +- .../function/FunctionFirstNonNull.kt | 2 +- .../expression/function/FunctionGreatest.kt | 2 +- .../function/FunctionGreatestOrLeast.kt | 2 +- .../expression/function/FunctionIf.kt | 2 +- .../expression/function/FunctionIsNotNull.kt | 2 +- .../expression/function/FunctionIsNull.kt | 2 +- .../expression/function/FunctionLeast.kt | 2 +- .../expression/function/FunctionLog.java | 2 +- .../expression/function/FunctionLog10.java | 2 +- .../expression/literal/RegenerateLiteral.java | 2 +- .../operator/OperatorCompareEqual.java | 2 +- .../operator/OperatorCompareGreaterThan.java | 2 +- .../OperatorCompareGreaterThanOrEqual.java | 2 +- .../operator/OperatorCompareLessThan.java | 2 +- .../OperatorCompareLessThanOrEqual.java | 2 +- .../operator/OperatorCompareNotEqual.java | 2 +- .../operator/OperatorGroupingParentheses.java | 2 +- .../operator/OperatorLogicalAnd.java | 2 +- .../operator/OperatorLogicalNot.java | 2 +- .../operator/OperatorLogicalOr.java | 2 +- .../operator/OperatorMathDivide.java | 2 +- .../operator/OperatorMathMinus.java | 2 +- .../operator/OperatorMathModulus.java | 2 +- .../operator/OperatorMathMultiply.java | 2 +- .../expression/operator/OperatorMathPlus.java | 2 +- .../operator/OperatorMathPower.java | 2 +- .../internal/service/ExpressionService.java | 2 +- .../DimItemDataElementAndOperand.java | 2 +- .../service/dataitem/DimensionalItem.java | 2 +- .../service/dataitem/DimensionalItemId.java | 2 +- .../service/dataitem/DimensionalItemType.kt | 2 +- .../service/dataitem/ItemConstant.java | 2 +- .../internal/service/dataitem/ItemDays.kt | 2 +- .../service/dataitem/ItemOrgUnitGroup.java | 2 +- .../service/dataobject/DataElementObject.java | 2 +- .../dataobject/DataElementOperandObject.java | 2 +- .../dataobject/DimensionalItemObject.java | 2 +- .../service/utils/ExpressionHelper.kt | 2 +- .../dhis/android/core/period/DatePeriod.java | 2 +- .../hisp/dhis/android/core/period/Period.java | 2 +- .../period/PeriodCollectionRepository.java | 2 +- .../core/period/PeriodEntityDIModule.java | 2 +- .../android/core/period/PeriodModule.java | 2 +- .../android/core/period/PeriodTableInfo.java | 2 +- .../dhis/android/core/period/PeriodType.java | 2 +- .../internal/AbstractPeriodGenerator.java | 2 +- .../internal/BiMonthlyPeriodGenerator.java | 2 +- .../internal/BiWeeklyPeriodGenerator.java | 2 +- .../core/period/internal/CalendarProvider.kt | 2 +- .../internal/CalendarProviderFactory.kt | 2 +- .../core/period/internal/CalendarUtils.kt | 2 +- .../period/internal/DailyPeriodGenerator.java | 2 +- .../internal/FixedCalendarProvider.java | 2 +- .../period/internal/InPeriodQueryHelper.kt | 2 +- .../internal/MonthlyPeriodGenerator.java | 2 +- .../internal/NMonthlyPeriodGenerator.java | 2 +- .../NMonthlyPeriodGeneratorFactory.java | 2 +- .../internal/NMonthlyPeriodGenerators.java | 2 +- .../period/internal/ParentPeriodGenerator.kt | 2 +- .../internal/ParentPeriodGeneratorImpl.kt | 2 +- .../internal/PeriodForDataSetManager.java | 2 +- .../core/period/internal/PeriodGenerator.java | 2 +- .../core/period/internal/PeriodHandler.java | 2 +- .../core/period/internal/PeriodHelper.java | 2 +- .../period/internal/PeriodModuleImpl.java | 2 +- .../period/internal/PeriodModuleWiper.java | 2 +- .../internal/PeriodPackageDIModule.java | 2 +- .../core/period/internal/PeriodParser.java | 2 +- .../core/period/internal/PeriodStore.java | 2 +- .../core/period/internal/PeriodStoreImpl.java | 2 +- .../internal/RegularCalendarProvider.java | 2 +- .../internal/WeeklyPeriodGenerator.java | 2 +- .../WeeklyPeriodGeneratorFactory.java | 2 +- .../internal/WeeklyPeriodGenerators.java | 2 +- .../internal/YearlyPeriodGenerator.java | 2 +- .../YearlyPeriodGeneratorFactory.java | 2 +- .../internal/YearlyPeriodGenerators.java | 2 +- .../android/core/program/AccessLevel.java | 2 +- .../core/program/AnalyticsPeriodBoundary.java | 2 +- .../AnalyticsPeriodBoundaryTableInfo.kt | 2 +- .../program/AnalyticsPeriodBoundaryType.kt | 2 +- .../core/program/BoundaryTargetType.kt | 2 +- .../dhis/android/core/program/Program.java | 2 +- .../program/ProgramCollectionRepository.java | 2 +- .../core/program/ProgramIndicator.java | 2 +- .../ProgramIndicatorCollectionRepository.java | 2 +- .../core/program/ProgramIndicatorTableInfo.kt | 2 +- .../core/program/ProgramInternalAccessor.java | 2 +- .../android/core/program/ProgramModule.java | 2 +- .../android/core/program/ProgramRule.java | 2 +- .../core/program/ProgramRuleAction.java | 2 +- ...ProgramRuleActionCollectionRepository.java | 2 +- .../program/ProgramRuleActionTableInfo.java | 2 +- .../core/program/ProgramRuleActionType.java | 2 +- .../ProgramRuleCollectionRepository.java | 2 +- .../core/program/ProgramRuleTableInfo.java | 2 +- .../core/program/ProgramRuleVariable.java | 2 +- ...ogramRuleVariableCollectionRepository.java | 2 +- .../ProgramRuleVariableSourceType.java | 2 +- .../program/ProgramRuleVariableTableInfo.java | 2 +- .../android/core/program/ProgramSection.java | 2 +- .../program/ProgramSectionAttributeLink.java | 2 +- .../ProgramSectionAttributeLinkTableInfo.java | 2 +- .../ProgramSectionCollectionRepository.java | 2 +- .../core/program/ProgramSectionTableInfo.java | 2 +- .../android/core/program/ProgramStage.java | 2 +- .../ProgramStageCollectionRepository.java | 2 +- .../core/program/ProgramStageDataElement.java | 2 +- ...mStageDataElementCollectionRepository.java | 2 +- .../ProgramStageDataElementTableInfo.java | 2 +- .../program/ProgramStageInternalAccessor.java | 2 +- .../core/program/ProgramStageSection.java | 2 +- .../ProgramStageSectionDataElementLink.java | 2 +- ...mStageSectionDataElementLinkTableInfo.java | 2 +- ...ogramStageSectionProgramIndicatorLink.java | 2 +- ...eSectionProgramIndicatorLinkTableInfo.java | 2 +- .../program/ProgramStageSectionTableInfo.java | 2 +- ...gramStageSectionsCollectionRepository.java | 2 +- .../core/program/ProgramStageTableInfo.java | 2 +- .../core/program/ProgramTableInfo.java | 2 +- .../ProgramTrackedEntityAttribute.java | 2 +- ...edEntityAttributeCollectionRepository.java | 2 +- ...rogramTrackedEntityAttributeTableInfo.java | 2 +- .../android/core/program/ProgramType.java | 2 +- .../core/program/SectionDeviceRendering.java | 2 +- .../core/program/SectionRendering.java | 2 +- .../core/program/SectionRenderingType.java | 2 +- ...AnalyticsPeriodBoundaryEntityDIModule.java | 2 +- .../internal/AnalyticsPeriodBoundaryFields.kt | 2 +- .../internal/AnalyticsPeriodBoundaryStore.kt | 2 +- ...entValueTypeRenderingChildrenAppender.java | 2 +- .../ProgramAttributeValueEntityDIModule.java | 2 +- .../core/program/internal/ProgramCall.java | 2 +- .../internal/ProgramDataDownloadParams.java | 2 +- .../internal/ProgramEntityDIModule.java | 2 +- .../core/program/internal/ProgramFields.java | 2 +- .../core/program/internal/ProgramHandler.java | 2 +- ...AnalyticsPeriodBoundaryChildrenAppender.kt | 2 +- .../ProgramIndicatorEntityDIModule.kt | 2 +- .../internal/ProgramIndicatorFields.kt | 2 +- .../internal/ProgramIndicatorHandler.kt | 2 +- ...ramIndicatorLegendSetChildrenAppender.java | 2 +- ...ogramIndicatorLegendSetEntityDIModule.java | 2 +- .../program/internal/ProgramIndicatorStore.kt | 2 +- .../internal/ProgramModuleDownloader.java | 2 +- .../program/internal/ProgramModuleImpl.java | 2 +- .../program/internal/ProgramModuleWiper.java | 2 +- .../internal/ProgramOrphanCleaner.java | 2 +- .../internal/ProgramPackageDIModule.java | 2 +- .../internal/ProgramParentUidsHelper.java | 2 +- .../ProgramRuleActionChildrenAppender.java | 2 +- .../ProgramRuleActionEntityDIModule.java | 2 +- .../internal/ProgramRuleActionFields.java | 2 +- .../internal/ProgramRuleActionStore.java | 2 +- .../program/internal/ProgramRuleCall.java | 2 +- .../internal/ProgramRuleEntityDIModule.java | 2 +- .../program/internal/ProgramRuleFields.java | 2 +- .../program/internal/ProgramRuleHandler.java | 2 +- .../program/internal/ProgramRuleService.java | 2 +- .../program/internal/ProgramRuleStore.java | 2 +- .../ProgramRuleVariableEntityDIModule.java | 2 +- .../internal/ProgramRuleVariableFields.java | 2 +- .../internal/ProgramRuleVariableStore.java | 2 +- ...ogramSectionAttributeChildrenAppender.java | 2 +- ...ProgramSectionAttributeEntityDIModule.java | 2 +- .../ProgramSectionAttributeLinkStore.java | 2 +- .../ProgramSectionEntityDIModule.java | 2 +- .../internal/ProgramSectionFields.java | 2 +- .../internal/ProgramSectionHandler.java | 2 +- .../program/internal/ProgramSectionStore.kt | 2 +- .../core/program/internal/ProgramService.java | 2 +- ...amStageAttributeValueChildrenAppender.java | 2 +- ...gramStageAttributeValueEntityDIModule.java | 2 +- .../program/internal/ProgramStageCall.java | 2 +- ...ogramStageDataElementChildrenAppender.java | 2 +- ...ProgramStageDataElementEntityDIModule.java | 2 +- .../ProgramStageDataElementFields.java | 2 +- .../ProgramStageDataElementHandler.java | 2 +- .../ProgramStageDataElementStore.java | 2 +- .../internal/ProgramStageEntityDIModule.java | 2 +- .../program/internal/ProgramStageFields.java | 2 +- .../program/internal/ProgramStageHandler.java | 2 +- ...ageSectionDataElementChildrenAppender.java | 2 +- ...StageSectionDataElementEntityDIModule.java | 2 +- ...ogramStageSectionDataElementLinkStore.java | 2 +- .../ProgramStageSectionEntityDIModule.java | 2 +- .../internal/ProgramStageSectionFields.java | 2 +- .../internal/ProgramStageSectionHandler.java | 2 +- ...ctionProgramIndicatorChildrenAppender.java | 2 +- ...SectionProgramIndicatorEntityDIModule.java | 2 +- ...StageSectionProgramIndicatorLinkStore.java | 2 +- .../internal/ProgramStageSectionStore.kt | 2 +- .../program/internal/ProgramStageService.java | 2 +- .../program/internal/ProgramStageStore.java | 2 +- .../core/program/internal/ProgramStore.java | 2 +- .../internal/ProgramStoreInterface.java | 2 +- ...mTrackedEntityAttributeEntityDIModule.java | 2 +- .../ProgramTrackedEntityAttributeFields.java | 2 +- .../ProgramTrackedEntityAttributeHandler.java | 2 +- .../ProgramTrackedEntityAttributeStore.java | 2 +- ...uteValueTypeRenderingChildrenAppender.java | 2 +- ...gramTrackedEntityTypeChildrenAppender.java | 2 +- .../ValueTypeRenderingChildrenAppender.java | 2 +- .../ProgramIndicatorEngine.java | 2 +- .../internal/ProgramExpressionItem.kt | 2 +- .../internal/ProgramIndicatorContext.kt | 2 +- .../ProgramIndicatorEngineEntityDIModule.kt | 2 +- .../internal/ProgramIndicatorEngineImpl.kt | 2 +- .../internal/ProgramIndicatorExecutor.kt | 2 +- .../ProgramIndicatorItemIdsCollector.kt | 2 +- .../internal/ProgramIndicatorParserUtils.kt | 2 +- .../internal/ProgramIndicatorSQLContext.kt | 2 +- .../internal/ProgramIndicatorSQLExecutor.kt | 2 +- .../internal/ProgramIndicatorSQLUtils.kt | 2 +- .../internal/dataitem/ProgramItemAttribute.kt | 2 +- .../dataitem/ProgramItemPsEventdate.kt | 2 +- .../dataitem/ProgramItemStageElement.kt | 2 +- .../internal/function/D2AddDays.kt | 2 +- .../internal/function/D2Ceil.java | 2 +- .../internal/function/D2Concatenate.java | 2 +- .../internal/function/D2Condition.kt | 2 +- .../internal/function/D2Count.kt | 2 +- .../internal/function/D2CountIfCondition.kt | 2 +- .../internal/function/D2CountIfValue.kt | 2 +- .../internal/function/D2DaysBetween.kt | 2 +- .../internal/function/D2Floor.java | 2 +- .../internal/function/D2HasValue.kt | 2 +- .../internal/function/D2Left.java | 2 +- .../internal/function/D2Length.java | 2 +- .../internal/function/D2MinutesBetween.kt | 2 +- .../internal/function/D2Modulus.java | 2 +- .../internal/function/D2MonthsBetween.kt | 2 +- .../internal/function/D2Oizp.kt | 2 +- .../internal/function/D2Right.java | 2 +- .../internal/function/D2Round.java | 2 +- .../internal/function/D2Split.java | 2 +- .../internal/function/D2Substring.java | 2 +- .../internal/function/D2ValidatePattern.java | 2 +- .../internal/function/D2WeeksBetween.kt | 2 +- .../internal/function/D2YearsBetween.kt | 2 +- .../internal/function/D2Zing.kt | 2 +- .../internal/function/D2Zpvc.kt | 2 +- .../function/ProgramBetweenDatesFunction.kt | 2 +- .../internal/function/ProgramCountFunction.kt | 2 +- .../literal/ProgramIndicatorSQLLiteral.kt | 2 +- .../internal/variable/ProgramVariableItem.kt | 2 +- .../internal/variable/VCompletedDate.kt | 2 +- .../internal/variable/VCreationDate.kt | 2 +- .../internal/variable/VCurrentDate.kt | 2 +- .../internal/variable/VDueDate.kt | 2 +- .../internal/variable/VEnrollmentCount.kt | 2 +- .../internal/variable/VEnrollmentDate.kt | 2 +- .../internal/variable/VEnrollmentStatus.kt | 2 +- .../internal/variable/VEventCount.kt | 2 +- .../internal/variable/VEventDate.kt | 2 +- .../internal/variable/VEventStatus.kt | 2 +- .../internal/variable/VIncidentDate.kt | 2 +- .../internal/variable/VProgramStageId.kt | 2 +- .../internal/variable/VProgramStageName.kt | 2 +- .../internal/variable/VTeiCount.kt | 2 +- .../internal/variable/VValueCount.kt | 2 +- .../internal/variable/VZeroPosValueCount.kt | 2 +- .../core/relationship/BaseRelationship.java | 2 +- .../NewTrackerImporterRelationship.java | 2 +- .../NewTrackerImporterRelationshipItem.java | 2 +- ...kerImporterRelationshipItemEnrollment.java | 2 +- ...wTrackerImporterRelationshipItemEvent.java | 2 +- ...ImporterRelationshipItemTrackedEntity.java | 2 +- ...wTrackerImporterRelationshipTransformer.kt | 2 +- .../core/relationship/Relationship.java | 2 +- .../RelationshipCollectionRepository.java | 2 +- .../relationship/RelationshipConstraint.java | 2 +- .../RelationshipConstraintTableInfo.java | 2 +- .../RelationshipConstraintType.java | 2 +- .../relationship/RelationshipEntityType.java | 2 +- .../core/relationship/RelationshipFields.java | 2 +- .../core/relationship/RelationshipHelper.java | 2 +- .../core/relationship/RelationshipItem.java | 2 +- .../RelationshipItemEnrollment.java | 2 +- .../relationship/RelationshipItemEvent.java | 2 +- .../RelationshipItemTableInfo.java | 2 +- ...RelationshipItemTrackedEntityInstance.java | 2 +- .../core/relationship/RelationshipModule.java | 2 +- .../RelationshipObjectRepository.java | 2 +- .../relationship/RelationshipTableInfo.java | 2 +- .../core/relationship/RelationshipType.java | 2 +- .../RelationshipTypeCollectionRepository.kt | 2 +- .../RelationshipTypeTableInfo.java | 2 +- ...rollmentRelationshipOrphanCleanerImpl.java | 2 +- .../EventRelationshipOrphanCleanerImpl.java | 2 +- ...elationshipConstraintChildrenAppender.java | 2 +- .../RelationshipConstraintEntityDIModule.java | 2 +- .../RelationshipConstraintFields.java | 2 +- .../internal/RelationshipConstraintStore.java | 2 +- .../RelationshipDHISVersionManager.java | 2 +- ...tionshipDownloadAndPersistCallFactory.java | 2 +- .../internal/RelationshipEntityDIModule.java | 2 +- .../internal/RelationshipHandler.java | 2 +- .../internal/RelationshipHandlerImpl.kt | 2 +- .../internal/RelationshipImportHandler.kt | 2 +- .../RelationshipItemChildrenAppender.kt | 2 +- .../RelationshipItemElementStoreSelector.java | 2 +- ...ationshipItemElementStoreSelectorImpl.java | 2 +- .../RelationshipItemEnrollmentFields.java | 2 +- .../RelationshipItemEntityDIModule.java | 2 +- .../internal/RelationshipItemEventFields.java | 2 +- .../internal/RelationshipItemFields.java | 2 +- .../internal/RelationshipItemRelatives.java | 2 +- .../internal/RelationshipItemStore.kt | 2 +- .../internal/RelationshipItemStoreImpl.kt | 2 +- ...onshipItemTrackedEntityInstanceFields.java | 2 +- .../internal/RelationshipManager.kt | 2 +- .../internal/RelationshipModuleImpl.java | 2 +- .../internal/RelationshipModuleWiper.java | 2 +- .../RelationshipOrphanCleanerImpl.java | 2 +- .../internal/RelationshipPackageDIModule.java | 2 +- .../internal/RelationshipPayload.java | 2 +- .../internal/RelationshipPostCall.kt | 2 +- .../internal/RelationshipService.kt | 2 +- .../internal/RelationshipStore.kt | 2 +- .../internal/RelationshipStoreImpl.kt | 2 +- .../internal/RelationshipTypeBuilder.java | 2 +- .../internal/RelationshipTypeCall.java | 2 +- ...ationshipTypeCollectionRepositoryHelper.kt | 2 +- .../RelationshipTypeEntityDIModule.kt | 2 +- .../internal/RelationshipTypeFields.java | 2 +- .../internal/RelationshipTypeHandler.java | 2 +- .../internal/RelationshipTypeService.java | 2 +- .../internal/RelationshipTypeStore.java | 2 +- .../TEIRelationshipOrphanCleanerImpl.java | 2 +- .../core/resource/internal/Resource.java | 2 +- .../internal/ResourceEntityDIModule.java | 2 +- .../resource/internal/ResourceHandler.java | 2 +- .../internal/ResourceModuleWiper.java | 2 +- .../internal/ResourcePackageDIModule.java | 2 +- .../core/resource/internal/ResourceStore.java | 2 +- .../resource/internal/ResourceStoreImpl.java | 2 +- .../resource/internal/ResourceTableInfo.java | 2 +- .../settings/AnalyticsDhisVisualization.java | 2 +- .../AnalyticsDhisVisualizationScope.kt | 2 +- .../AnalyticsDhisVisualizationTableInfo.kt | 2 +- .../AnalyticsDhisVisualizationsGroup.java | 2 +- .../AnalyticsDhisVisualizationsHelper.kt | 2 +- .../AnalyticsDhisVisualizationsSetting.java | 2 +- ...VisualizationsSettingObjectRepository.java | 2 +- .../AnalyticsSettingObjectRepository.java | 2 +- .../core/settings/AnalyticsSettings.java | 2 +- .../core/settings/AnalyticsTeiAttribute.java | 2 +- .../AnalyticsTeiAttributeTableInfo.java | 2 +- .../core/settings/AnalyticsTeiData.java | 2 +- .../settings/AnalyticsTeiDataElement.java | 2 +- .../AnalyticsTeiDataElementTableInfo.java | 2 +- .../core/settings/AnalyticsTeiIndicator.java | 2 +- .../AnalyticsTeiIndicatorTableInfo.java | 2 +- .../core/settings/AnalyticsTeiSetting.java | 2 +- ...alyticsTeiSettingCollectionRepository.java | 2 +- .../AnalyticsTeiSettingTableInfo.java | 2 +- .../AnalyticsTeiWHONutritionData.java | 2 +- ...AnalyticsTeiWHONutritionDataTableInfo.java | 2 +- .../AnalyticsTeiWHONutritionGender.java | 2 +- .../AnalyticsTeiWHONutritionGenderValues.java | 2 +- .../AnalyticsTeiWHONutritionItem.java | 2 +- .../android/core/settings/AppMetadata.java | 2 +- .../core/settings/AppearanceSettings.java | 2 +- .../AppearanceSettingsObjectRepository.java | 2 +- .../dhis/android/core/settings/ChartType.kt | 2 +- .../core/settings/CompletionSpinner.java | 2 +- .../settings/CompletionSpinnerSetting.java | 2 +- .../android/core/settings/DataSetFilter.java | 2 +- .../android/core/settings/DataSetFilters.java | 2 +- .../android/core/settings/DataSetSetting.java | 2 +- .../settings/DataSetSettingTableInfo.java | 2 +- .../core/settings/DataSetSettings.java | 2 +- .../DataSetSettingsObjectRepository.java | 2 +- .../android/core/settings/DataSyncPeriod.java | 2 +- .../android/core/settings/DownloadPeriod.java | 2 +- .../core/settings/EnrollmentScope.java | 2 +- .../android/core/settings/FilterSetting.java | 2 +- .../core/settings/FilterSettingTableInfo.java | 2 +- .../android/core/settings/FilterSorting.java | 2 +- .../GeneralSettingObjectRepository.java | 2 +- .../settings/GeneralSettingTableInfo.java | 2 +- .../core/settings/GeneralSettings.java | 2 +- .../android/core/settings/HomeFilter.java | 2 +- .../android/core/settings/LimitScope.java | 2 +- .../core/settings/MetadataSyncPeriod.java | 2 +- .../settings/ProgramConfigurationSetting.java | 2 +- .../ProgramConfigurationSettingTableInfo.java | 2 +- .../ProgramConfigurationSettings.java | 2 +- .../android/core/settings/ProgramFilter.java | 2 +- .../android/core/settings/ProgramFilters.java | 2 +- .../android/core/settings/ProgramSetting.java | 2 +- .../settings/ProgramSettingTableInfo.java | 2 +- .../core/settings/ProgramSettings.java | 2 +- .../ProgramSettingsObjectRepository.java | 2 +- .../android/core/settings/SettingModule.java | 2 +- .../core/settings/SettingsAppInfo.java | 2 +- ...ynchronizationSettingObjectRepository.java | 2 +- .../SynchronizationSettingTableInfo.java | 2 +- .../settings/SynchronizationSettings.java | 2 +- .../android/core/settings/SystemSetting.java | 2 +- .../SystemSettingCollectionRepository.java | 2 +- .../core/settings/SystemSettingTableInfo.java | 2 +- .../android/core/settings/SystemSettings.java | 2 +- .../android/core/settings/UserSettings.java | 2 +- .../UserSettingsObjectRepository.java | 2 +- .../core/settings/UserSettingsTableInfo.java | 2 +- .../core/settings/WHONutritionChartType.kt | 2 +- .../core/settings/WHONutritionComponent.kt | 2 +- ...nalyticsDhisVisualizationSettingHandler.kt | 2 +- .../AnalyticsDhisVisualizationStore.kt | 2 +- .../settings/internal/AnalyticsSettingCall.kt | 2 +- .../AnalyticsSettingEntityDIModule.kt | 2 +- .../internal/AnalyticsTeiAttributeStore.kt | 2 +- .../AnalyticsTeiDataChildrenAppender.kt | 2 +- .../internal/AnalyticsTeiDataElementStore.kt | 2 +- .../internal/AnalyticsTeiIndicatorStore.kt | 2 +- .../internal/AnalyticsTeiSettingHandler.kt | 2 +- .../internal/AnalyticsTeiSettingStore.kt | 2 +- .../AnalyticsTeiWHONutritionDataHandler.kt | 2 +- .../AnalyticsTeiWHONutritionDataStore.kt | 2 +- .../internal/AppearanceSettingCall.kt | 2 +- .../core/settings/internal/BaseSettingCall.kt | 2 +- .../settings/internal/DataSetSettingCall.kt | 2 +- .../DataSetSettingEntityDIModule.java | 2 +- .../internal/DataSetSettingHandler.kt | 2 +- .../internal/DataSetSettingStore.java | 2 +- .../internal/FilterSettingEntityDIModule.kt | 2 +- .../settings/internal/FilterSettingHandler.kt | 2 +- .../settings/internal/FilterSettingStore.kt | 2 +- .../settings/internal/GeneralSettingCall.kt | 2 +- .../internal/GeneralSettingEntityDIModule.kt | 2 +- .../internal/GeneralSettingHandler.kt | 2 +- .../settings/internal/GeneralSettingStore.kt | 2 +- ...ogramConfigurationSettingEntityDIModule.kt | 2 +- .../ProgramConfigurationSettingHandler.kt | 2 +- .../ProgramConfigurationSettingStore.kt | 2 +- .../settings/internal/ProgramSettingCall.kt | 2 +- .../ProgramSettingEntityDIModule.java | 2 +- .../internal/ProgramSettingHandler.kt | 2 +- .../internal/ProgramSettingStore.java | 2 +- .../settings/internal/SettingAppService.kt | 2 +- .../internal/SettingModuleDownloader.kt | 2 +- .../settings/internal/SettingModuleImpl.java | 2 +- .../settings/internal/SettingModuleWiper.java | 2 +- .../internal/SettingPackageDIModule.kt | 2 +- .../core/settings/internal/SettingService.kt | 2 +- .../internal/SettingsAppDataStoreVersion.kt | 2 +- .../settings/internal/SettingsAppHelper.kt | 2 +- .../settings/internal/SettingsAppInfoCall.kt | 2 +- .../internal/SettingsAppInfoManager.kt | 2 +- .../internal/SettingsAppInfoManagerImpl.kt | 2 +- .../settings/internal/SettingsAppVersion.kt | 2 +- .../internal/SynchronizationSettingCall.kt | 2 +- .../SynchronizationSettingEntityDIModule.kt | 2 +- .../internal/SynchronizationSettingHandler.kt | 2 +- .../internal/SynchronizationSettingStore.kt | 2 +- .../settings/internal/SystemSettingCall.java | 2 +- .../internal/SystemSettingEntityDIModule.java | 2 +- .../settings/internal/SystemSettingStore.java | 2 +- .../internal/SystemSettingsFields.java | 2 +- .../internal/SystemSettingsSplitter.java | 2 +- .../settings/internal/UserSettingsCall.kt | 2 +- .../internal/UserSettingsEntityDIModule.java | 2 +- .../settings/internal/UserSettingsFields.java | 2 +- .../settings/internal/UserSettingsHandler.kt | 2 +- .../settings/internal/UserSettingsStore.java | 2 +- .../hisp/dhis/android/core/sms/SmsModule.java | 2 +- .../internal/DeviceStateRepositoryImpl.java | 2 +- .../internal/DataSetsStore.java | 2 +- .../internal/FileResourceCleaner.java | 2 +- .../internal/LocalDbRepositoryImpl.kt | 2 +- .../internal/MetadataIdsStore.kt | 2 +- .../internal/OngoingSubmissionsStore.kt | 2 +- .../internal/SMSConfigKey.kt | 2 +- .../internal/SMSConfigStore.kt | 2 +- .../internal/SMSConfigStoreImpl.kt | 2 +- .../internal/SMSConfigTableInfo.kt | 2 +- .../internal/SMSMetadataId.java | 2 +- .../internal/SMSMetadataIdStore.kt | 2 +- .../internal/SMSMetadataIdTableInfo.kt | 2 +- .../internal/SMSOngoingSubmission.java | 2 +- .../internal/SMSOngoingSubmissionStore.kt | 2 +- .../internal/SMSOngoingSubmissionTableInfo.kt | 2 +- .../internal/SendingStateReceiver.java | 2 +- .../smsrepository/internal/SmsReader.java | 2 +- .../internal/SmsRepositoryImpl.java | 2 +- .../data/smsrepository/internal/Utility.java | 2 +- .../webapirepository/internal/ApiService.kt | 2 +- .../internal/MetadataResponse.java | 2 +- .../internal/WebApiRepositoryImpl.kt | 2 +- .../domain/converter/internal/Converter.java | 2 +- .../converter/internal/ConverterUtils.java | 2 +- .../converter/internal/DatasetConverter.java | 2 +- .../converter/internal/DeletionConverter.java | 2 +- .../internal/EnrollmentConverter.java | 2 +- .../internal/RelationshipConverter.java | 2 +- .../internal/SimpleEventConverter.java | 2 +- .../internal/TrackerEventConverter.java | 2 +- .../sms/domain/interactor/ConfigCase.java | 2 +- .../sms/domain/interactor/QrCodeCase.java | 2 +- .../sms/domain/interactor/SmsSubmitCase.java | 2 +- .../model/internal/SMSDataValueSet.java | 2 +- .../sms/domain/repository/SmsRepository.java | 2 +- .../domain/repository/WebApiRepository.java | 2 +- .../internal/DeviceStateRepository.java | 2 +- .../internal/LocalDbRepository.java | 2 +- .../repository/internal/SubmissionType.java | 2 +- .../core/sms/internal/SMSModuleWiper.kt | 2 +- .../core/sms/internal/SmsDIModule.java | 2 +- .../core/sms/internal/SmsModuleImpl.java | 2 +- .../core/systeminfo/DHISPatchVersion.java | 2 +- .../android/core/systeminfo/DHISVersion.java | 2 +- .../core/systeminfo/DHISVersionManager.java | 2 +- .../android/core/systeminfo/SMSVersion.java | 2 +- .../android/core/systeminfo/SystemInfo.java | 2 +- .../core/systeminfo/SystemInfoModule.java | 2 +- .../SystemInfoObjectRepository.java | 2 +- .../core/systeminfo/SystemInfoTableInfo.java | 2 +- .../internal/DHISVersionManagerImpl.java | 2 +- .../core/systeminfo/internal/PingCall.kt | 2 +- .../systeminfo/internal/PingEntityDIModule.kt | 2 +- .../core/systeminfo/internal/PingService.kt | 2 +- .../systeminfo/internal/SystemInfoCall.java | 2 +- .../internal/SystemInfoEntityDIModule.java | 2 +- .../systeminfo/internal/SystemInfoFields.java | 2 +- .../internal/SystemInfoModuleDownloader.kt | 2 +- .../internal/SystemInfoModuleImpl.java | 2 +- .../internal/SystemInfoModuleWiper.java | 2 +- .../internal/SystemInfoPackageDIModule.java | 2 +- .../internal/SystemInfoService.java | 2 +- .../systeminfo/internal/SystemInfoStore.java | 2 +- .../NewTrackerImporterTrackedEntity.java | 2 +- ...erImporterTrackedEntityAttributeValue.java | 2 +- ...rTrackedEntityAttributeValueTransformer.kt | 2 +- ...TrackerImporterTrackedEntityDataValue.java | 2 +- ...porterTrackedEntityDataValueTransformer.kt | 2 +- ...rackerImporterTranckedEntityTransformer.kt | 2 +- .../trackedentity/ReservedValueSetting.java | 2 +- .../ReservedValueSettingTableInfo.java | 2 +- .../trackedentity/ReservedValueSummary.java | 2 +- .../trackedentity/TrackedEntityAttribute.java | 2 +- ...edEntityAttributeCollectionRepository.java | 2 +- .../TrackedEntityAttributeReservedValue.java | 2 +- ...edEntityAttributeReservedValueManager.java | 2 +- ...EntityAttributeReservedValueTableInfo.java | 2 +- .../TrackedEntityAttributeTableInfo.java | 2 +- .../TrackedEntityAttributeValue.java | 2 +- ...ityAttributeValueCollectionRepository.java | 2 +- ...dEntityAttributeValueObjectRepository.java | 2 +- .../TrackedEntityAttributeValueTableInfo.java | 2 +- .../trackedentity/TrackedEntityDataValue.java | 2 +- ...edEntityDataValueCollectionRepository.java | 2 +- ...rackedEntityDataValueObjectRepository.java | 2 +- .../TrackedEntityDataValueTableInfo.java | 2 +- .../trackedentity/TrackedEntityInstance.java | 2 +- ...kedEntityInstanceCollectionRepository.java | 2 +- ...TrackedEntityInstanceCreateProjection.java | 2 +- .../TrackedEntityInstanceEventFilter.java | 2 +- ...kedEntityInstanceEventFilterTableInfo.java | 2 +- .../TrackedEntityInstanceFilter.java | 2 +- ...ityInstanceFilterCollectionRepository.java | 2 +- .../TrackedEntityInstanceFilterTableInfo.java | 2 +- ...TrackedEntityInstanceInternalAccessor.java | 2 +- ...TrackedEntityInstanceObjectRepository.java | 2 +- .../TrackedEntityInstanceService.java | 2 +- .../TrackedEntityInstanceTableInfo.java | 2 +- .../trackedentity/TrackedEntityModule.java | 2 +- .../TrackedEntityPackageDIModule.java | 2 +- .../core/trackedentity/TrackedEntityType.java | 2 +- .../TrackedEntityTypeAttribute.java | 2 +- ...tityTypeAttributeCollectionRepository.java | 2 +- .../TrackedEntityTypeAttributeTableInfo.java | 2 +- ...TrackedEntityTypeCollectionRepository.java | 2 +- .../TrackedEntityTypeTableInfo.java | 2 +- .../internal/NewTrackerImporterPayload.kt | 2 +- .../NewTrackerImporterPayloadWrapper.kt | 2 +- ...porterTrackedEntityPostPayloadGenerator.kt | 2 +- ...erImporterTrackedEntityPostStateManager.kt | 2 +- .../internal/ObjectWithUidWebResponse.java | 2 +- ...OldTrackerImporterFileResourcesPostCall.kt | 2 +- .../internal/OldTrackerImporterPayload.kt | 2 +- .../OldTrackerImporterPayloadGenerator.kt | 2 +- .../internal/OldTrackerImporterPostCall.kt | 2 +- .../ReservedValueSettingDIModule.java | 2 +- .../internal/ReservedValueSettingStore.kt | 2 +- .../internal/StatePersistorHelper.kt | 2 +- .../internal/TrackedEntityAttributeCall.java | 2 +- .../TrackedEntityAttributeEntityDIModule.java | 2 +- .../TrackedEntityAttributeFields.java | 2 +- .../TrackedEntityAttributeHandler.java | 2 +- ...ttributeReservedValueCallErrorCatcher.java | 2 +- ...tyAttributeReservedValueCallProcessor.java | 2 +- ...ibuteReservedValueEndpointCallFactory.java | 2 +- ...yAttributeReservedValueEntityDIModule.java | 2 +- ...ckedEntityAttributeReservedValueQuery.java | 2 +- ...edEntityAttributeReservedValueService.java | 2 +- ...ckedEntityAttributeReservedValueStore.java | 2 +- ...yAttributeReservedValueStoreInterface.java | 2 +- ...AttributeReservedValueValidatorHelper.java | 2 +- .../TrackedEntityAttributeService.java | 2 +- .../internal/TrackedEntityAttributeStore.java | 2 +- ...dEntityAttributeValueChildrenAppender.java | 2 +- ...kedEntityAttributeValueEntityDIModule.java | 2 +- .../TrackedEntityAttributeValueFields.java | 2 +- .../TrackedEntityAttributeValueHandler.kt | 2 +- .../TrackedEntityAttributeValueStore.kt | 2 +- .../TrackedEntityAttributeValueStoreImpl.kt | 2 +- ...rackedEntityDataValueChildrenAppender.java | 2 +- .../TrackedEntityDataValueEntityDIModule.java | 2 +- .../TrackedEntityDataValueFields.java | 2 +- .../TrackedEntityDataValueHandler.java | 2 +- .../internal/TrackedEntityDataValueStore.java | 2 +- .../TrackedEntityDataValueStoreImpl.java | 2 +- .../TrackedEntityInstanceCallErrorCatcher.kt | 2 +- .../TrackedEntityInstanceDownloadCall.kt | 2 +- ...ackedEntityInstanceDownloadInternalCall.kt | 2 +- .../TrackedEntityInstanceDownloader.java | 2 +- .../TrackedEntityInstanceEntityDIModule.java | 2 +- ...tityInstanceEventFilterEntityDIModule.java | 2 +- ...rackedEntityInstanceEventFilterFields.java | 2 +- .../TrackedEntityInstanceEventFilterStore.kt | 2 +- .../internal/TrackedEntityInstanceFields.java | 2 +- .../TrackedEntityInstanceFilterCall.java | 2 +- ...kedEntityInstanceFilterEntityDIModule.java | 2 +- ...tanceFilterEvenFilterChildrenAppender.java | 2 +- .../TrackedEntityInstanceFilterFields.java | 2 +- .../TrackedEntityInstanceFilterHandler.kt | 2 +- .../TrackedEntityInstanceFilterService.java | 2 +- .../TrackedEntityInstanceFilterStore.kt | 2 +- .../internal/TrackedEntityInstanceHandler.kt | 2 +- .../TrackedEntityInstanceImportHandler.kt | 2 +- ...TrackedEntityInstanceLastUpdatedManager.kt | 2 +- .../TrackedEntityInstancePayload.java | 2 +- ...kedEntityInstancePersistenceCallFactory.kt | 2 +- .../TrackedEntityInstancePostParentCall.kt | 2 +- ...edEntityInstanceProjectionTransformer.java | 2 +- .../internal/TrackedEntityInstanceService.kt | 2 +- .../internal/TrackedEntityInstanceStore.java | 2 +- .../TrackedEntityInstanceStoreImpl.java | 2 +- .../internal/TrackedEntityInstanceSync.java | 2 +- ...ackedEntityInstanceSyncEntityDIModule.java | 2 +- .../TrackedEntityInstanceSyncStore.java | 2 +- .../TrackedEntityInstanceSyncTableInfo.java | 2 +- .../TrackedEntityInstanceUidHelper.kt | 2 +- .../TrackedEntityInstanceUidHelperImpl.kt | 2 +- ...ackedEntityInstancesEndpointCallFactory.kt | 2 +- .../internal/TrackedEntityModuleImpl.kt | 2 +- .../internal/TrackedEntityModuleWiper.kt | 2 +- ...edEntityTypeAttributeChildrenAppender.java | 2 +- ...ckedEntityTypeAttributeEntityDIModule.java | 2 +- .../TrackedEntityTypeAttributeFields.java | 2 +- .../TrackedEntityTypeAttributeStore.java | 2 +- .../internal/TrackedEntityTypeCall.java | 2 +- .../TrackedEntityTypeEntityDIModule.java | 2 +- .../internal/TrackedEntityTypeFields.java | 2 +- .../internal/TrackedEntityTypeHandler.java | 2 +- .../internal/TrackedEntityTypeService.java | 2 +- .../internal/TrackedEntityTypeStore.java | 2 +- .../internal/TrackerBaseSync.java | 2 +- .../internal/TrackerBaseSyncColumns.java | 2 +- .../internal/TrackerPostStateManager.kt | 2 +- .../trackedentity/internal/TrackerQuery.java | 2 +- .../internal/TrackerQueryBundle.java | 2 +- .../internal/TrackerQueryBundleFactory.kt | 2 +- .../TrackerQueryBundleInternalFactory.kt | 2 +- .../internal/TrackerQueryCommonParams.kt | 2 +- .../internal/TrackerQueryFactory.kt | 2 +- .../TrackerQueryFactoryCommonHelper.kt | 2 +- .../internal/TrackerQueryInternalFactory.kt | 2 +- .../internal/TrackerSyncLastUpdatedManager.kt | 2 +- .../ownership/OwnershipEntityDIModule.kt | 2 +- .../ownership/OwnershipService.kt | 2 +- .../ownership/ProgramTempOwner.java | 2 +- .../ownership/ProgramTempOwnerStore.kt | 2 +- .../ownership/ProgramTempOwnerTableInfo.kt | 2 +- .../core/trackedentity/search/SearchGrid.java | 2 +- .../search/SearchGridHeader.java | 2 +- .../search/SearchGridMapper.java | 2 +- .../search/SearchGridMetadata.java | 2 +- .../TrackedEntityInstanceLocalQueryHelper.kt | 2 +- ...TrackedEntityInstanceQueryCallFactory.java | 2 +- ...tityInstanceQueryCollectionRepository.java | 2 +- .../TrackedEntityInstanceQueryDataFetcher.kt | 2 +- .../TrackedEntityInstanceQueryDataSource.kt | 2 +- ...ckedEntityInstanceQueryDataSourceResult.kt | 2 +- ...ckedEntityInstanceQueryEntityDIModule.java | 2 +- .../TrackedEntityInstanceQueryErrorCatcher.kt | 44 +++++++++---------- ...TrackedEntityInstanceQueryEventFilter.java | 2 +- .../TrackedEntityInstanceQueryOnline.java | 2 +- .../TrackedEntityInstanceQueryOnlineHelper.kt | 2 +- ...kedEntityInstanceQueryRepositoryScope.java | 2 +- ...ntityInstanceQueryRepositoryScopeHelper.kt | 2 +- ...edEntityInstanceQueryScopeOrderByItem.java | 2 +- ...edEntityInstanceQueryScopeOrderColumn.java | 2 +- .../core/tracker/TrackerImporterVersion.kt | 2 +- .../tracker/TrackerPostParentCallHelper.kt | 2 +- .../importer/internal/ImporterError.kt | 2 +- .../tracker/importer/internal/JobQueryCall.kt | 2 +- .../importer/internal/JobQueryErrorCatcher.kt | 2 +- .../tracker/importer/internal/JobReport.kt | 2 +- .../internal/JobReportEnrollmentHandler.kt | 2 +- .../internal/JobReportEventHandler.kt | 2 +- .../internal/JobReportFileResourceHandler.kt | 2 +- .../importer/internal/JobReportHandler.kt | 2 +- .../internal/JobReportRelationshipHandler.kt | 2 +- .../internal/JobReportTrackedEntityHandler.kt | 2 +- .../importer/internal/JobReportTypeHandler.kt | 2 +- .../internal/TrackerConflictHelper.kt | 2 +- .../TrackerImporterBreakTheGlassHelper.kt | 2 +- .../TrackerImporterFileResourcesPostCall.kt | 2 +- .../internal/TrackerImporterObjectType.kt | 2 +- .../TrackerImporterPackageDIModule.java | 2 +- .../internal/TrackerImporterPostCall.kt | 2 +- .../internal/TrackerImporterService.kt | 2 +- .../internal/TrackerJobModuleWiper.kt | 2 +- .../importer/internal/TrackerJobObject.java | 2 +- .../internal/TrackerJobObjectStore.kt | 2 +- .../internal/TrackerJobObjectTableInfo.java | 2 +- .../interpreters/DefaultInterpreter.kt | 2 +- .../internal/interpreters/E1000Interpreter.kt | 2 +- .../internal/interpreters/E1001Interpreter.kt | 2 +- .../internal/interpreters/E1002Interpreter.kt | 2 +- .../internal/interpreters/E1003Interpreter.kt | 2 +- .../internal/interpreters/E1005Interpreter.kt | 2 +- .../internal/interpreters/E1006Interpreter.kt | 2 +- .../internal/interpreters/E1007Interpreter.kt | 2 +- .../internal/interpreters/E1008Interpreter.kt | 2 +- .../internal/interpreters/E1009Interpreter.kt | 2 +- .../internal/interpreters/E1032Interpreter.kt | 2 +- .../internal/interpreters/E1063Interpreter.kt | 2 +- .../internal/interpreters/E1064Interpreter.kt | 2 +- .../internal/interpreters/E1069Interpreter.kt | 2 +- .../internal/interpreters/E1081Interpreter.kt | 2 +- .../internal/interpreters/E1084Interpreter.kt | 2 +- .../internal/interpreters/E1100Interpreter.kt | 2 +- .../internal/interpreters/E1103Interpreter.kt | 2 +- .../interpreters/ErrorCodeInterpreter.kt | 2 +- .../interpreters/InterpreterHelper.kt | 2 +- .../interpreters/InterpreterSelector.kt | 2 +- .../dhis/android/core/user/AccountManager.kt | 2 +- .../android/core/user/AuthenticatedUser.java | 2 +- .../AuthenticatedUserObjectRepository.java | 2 +- .../core/user/AuthenticatedUserTableInfo.java | 2 +- .../dhis/android/core/user/Authority.java | 2 +- .../user/AuthorityCollectionRepository.java | 2 +- .../android/core/user/AuthorityTableInfo.java | 2 +- .../org/hisp/dhis/android/core/user/User.java | 2 +- .../android/core/user/UserCredentials.java | 2 +- .../user/UserCredentialsObjectRepository.java | 2 +- .../core/user/UserCredentialsTableInfo.java | 2 +- .../core/user/UserInternalAccessor.java | 2 +- .../dhis/android/core/user/UserModule.java | 2 +- .../core/user/UserObjectRepository.java | 2 +- .../core/user/UserOrganisationUnitLink.java | 2 +- .../UserOrganisationUnitLinkTableInfo.java | 2 +- .../hisp/dhis/android/core/user/UserRole.java | 2 +- .../user/UserRoleCollectionRepository.java | 2 +- .../android/core/user/UserRoleTableInfo.java | 2 +- .../dhis/android/core/user/UserTableInfo.java | 2 +- .../core/user/internal/AccountManagerImpl.kt | 2 +- .../AuthenticatedUserEntityDIModule.java | 2 +- .../user/internal/AuthenticatedUserStore.java | 2 +- .../user/internal/AuthorityCallFetcher.java | 2 +- .../user/internal/AuthorityCallProcessor.java | 2 +- .../AuthorityEndpointCallFactory.java | 2 +- .../internal/AuthorityEntityDIModule.java | 2 +- .../core/user/internal/AuthorityService.java | 2 +- .../core/user/internal/AuthorityStore.java | 2 +- .../IsUserLoggedInCallableFactory.java | 2 +- .../android/core/user/internal/LogInCall.kt | 2 +- .../user/internal/LogInDatabaseManager.kt | 2 +- .../core/user/internal/LogInExceptions.kt | 2 +- .../android/core/user/internal/LogOutCall.kt | 2 +- .../UserAccountDisabledErrorCatcher.kt | 2 +- .../UserAuthenticateCallErrorCatcher.kt | 2 +- .../android/core/user/internal/UserCall.kt | 2 +- .../UserCredentialsEntityDIModule.java | 2 +- .../user/internal/UserCredentialsFields.java | 2 +- .../user/internal/UserCredentialsStore.java | 2 +- .../internal/UserCredentialsStoreImpl.java | 2 +- .../user/internal/UserEntityDIModule.java | 2 +- .../core/user/internal/UserFields.java | 2 +- .../android/core/user/internal/UserHandler.kt | 2 +- .../core/user/internal/UserInternalModule.kt | 2 +- .../user/internal/UserModuleDownloader.java | 2 +- .../core/user/internal/UserModuleImpl.java | 2 +- .../core/user/internal/UserModuleWiper.java | 2 +- .../UserOrganisationUnitLinkEntityDIModule.kt | 2 +- .../UserOrganisationUnitLinkHelper.java | 2 +- .../internal/UserOrganisationUnitLinkStore.kt | 2 +- .../UserOrganisationUnitLinkStoreImpl.kt | 2 +- .../user/internal/UserPackageDIModule.java | 2 +- .../internal/UserRoleChildrenAppender.java | 2 +- .../user/internal/UserRoleEntityDIModule.java | 2 +- .../core/user/internal/UserRoleFields.java | 2 +- .../core/user/internal/UserRoleStore.java | 2 +- .../core/user/internal/UserService.java | 2 +- .../android/core/user/internal/UserStore.java | 2 +- .../core/user/openid/IntentWithRequestCode.kt | 2 +- .../core/user/openid/OpenIDConnectConfig.kt | 2 +- .../core/user/openid/OpenIDConnectHandler.kt | 2 +- .../user/openid/OpenIDConnectHandlerImpl.kt | 2 +- .../user/openid/OpenIDConnectLogoutHandler.kt | 2 +- .../user/openid/OpenIDConnectRequestHelper.kt | 2 +- .../openid/OpenIDConnectTokenRefresher.kt | 2 +- .../validation/DataSetValidationRuleLink.java | 2 +- .../DataSetValidationRuleLinkTableInfo.java | 2 +- .../core/validation/MissingValueStrategy.java | 2 +- .../core/validation/ValidationModule.java | 2 +- .../core/validation/ValidationRule.java | 2 +- .../ValidationRuleCollectionRepository.java | 2 +- .../validation/ValidationRuleExpression.java | 2 +- .../validation/ValidationRuleImportance.java | 2 +- .../validation/ValidationRuleOperator.java | 2 +- .../validation/ValidationRuleTableInfo.java | 2 +- .../validation/engine/ValidationEngine.java | 2 +- .../validation/engine/ValidationResult.java | 2 +- .../ValidationResultSideEvaluation.java | 2 +- .../engine/ValidationResultViolation.java | 2 +- .../ValidationEngineEntityDIModule.java | 2 +- .../engine/internal/ValidationEngineImpl.java | 2 +- .../engine/internal/ValidationExecutor.java | 2 +- ...taSetValidationRuleLinkEntityDIModule.java | 2 +- .../DataSetValidationRuleLinkStore.java | 2 +- .../internal/ValidationModuleImpl.java | 2 +- .../internal/ValidationModuleWiper.java | 2 +- .../internal/ValidationPackageDIModule.java | 2 +- .../internal/ValidationRuleCall.java | 2 +- .../ValidationRuleEntityDIModule.java | 2 +- .../ValidationRuleExpressionFields.java | 2 +- .../internal/ValidationRuleFields.java | 2 +- .../internal/ValidationRuleHandler.java | 2 +- .../internal/ValidationRuleService.java | 2 +- .../internal/ValidationRuleStore.java | 2 +- .../internal/ValidationRuleUidsCall.java | 2 +- .../internal/ValidationRuleUidsCallImpl.java | 2 +- .../core/visualization/CategoryDimension.java | 2 +- .../core/visualization/DataDimensionItem.java | 2 +- .../DataDimensionItemProgramAttribute.java | 2 +- .../DataDimensionItemProgramDataElement.java | 2 +- .../DataDimensionItemTableInfo.kt | 2 +- .../visualization/DataDimensionItemType.kt | 2 +- .../core/visualization/DigitGroupSeparator.kt | 2 +- .../core/visualization/DisplayDensity.kt | 2 +- .../visualization/HideEmptyItemStrategy.kt | 2 +- .../core/visualization/Visualization.java | 2 +- .../VisualizationCategoryDimensionLink.java | 2 +- ...alizationCategoryDimensionLinkTableInfo.kt | 2 +- .../VisualizationCollectionRepository.java | 2 +- .../core/visualization/VisualizationModule.kt | 2 +- .../visualization/VisualizationTableInfo.kt | 2 +- .../core/visualization/VisualizationType.kt | 2 +- .../internal/CategoryDimensionFields.kt | 6 +-- .../DataDimensionItemEntityDIModule.kt | 2 +- .../internal/DataDimensionItemFields.kt | 6 +-- ...DataDimensionItemProgramAttributeFields.kt | 6 +-- ...taDimensionItemProgramDataElementFields.kt | 6 +-- .../internal/DataDimensionItemStore.kt | 2 +- .../internal/VisualizationCall.kt | 2 +- ...zationCategoryDimensionChildrenAppender.kt | 2 +- ...lizationCategoryDimensionEntityDIModule.kt | 2 +- ...VisualizationCategoryDimensionLinkStore.kt | 2 +- ...zationDataDimensionItemChildrenAppender.kt | 2 +- .../internal/VisualizationEntityDIModule.kt | 2 +- .../internal/VisualizationFields.kt | 4 +- .../internal/VisualizationHandler.kt | 2 +- .../internal/VisualizationInternalModule.kt | 2 +- .../internal/VisualizationModuleDownloader.kt | 2 +- .../internal/VisualizationModuleImpl.kt | 2 +- .../internal/VisualizationModuleWiper.kt | 2 +- .../VisualizationPackageDIModule.java | 2 +- .../internal/VisualizationService.kt | 2 +- .../internal/VisualizationStore.kt | 2 +- .../core/wipe/internal/D2ModuleWipers.java | 2 +- .../core/wipe/internal/ModuleWiper.java | 2 +- .../core/wipe/internal/TableWiper.java | 2 +- .../core/wipe/internal/WipeDIModule.java | 2 +- .../core/wipe/internal/WipeModule.java | 2 +- .../core/wipe/internal/WipeModuleImpl.java | 2 +- .../core/data/attribute/AttributeSamples.java | 2 +- .../DataElementAttributeValueLinkSamples.java | 2 +- .../ProgramAttributeValueLinkSamples.java | 2 +- ...ProgramStageAttributeValueLinkSamples.java | 2 +- .../CategoryCategoryComboLinkSamples.java | 2 +- .../CategoryCategoryOptionLinkSamples.java | 2 +- .../data/category/CategoryComboSamples.java | 2 +- ...yOptionComboCategoryOptionLinkSamples.java | 2 +- .../category/CategoryOptionComboSamples.java | 2 +- .../data/category/CategoryOptionSamples.java | 2 +- .../ValueTypeDeviceRenderingSamples.java | 2 +- .../configuration/ConfigurationSamples.java | 2 +- .../core/data/constant/ConstantSamples.java | 2 +- .../DataElementOperandSamples.java | 2 +- .../data/dataelement/DataElementSamples.java | 2 +- .../data/dataset/DataInputPeriodSamples.java | 2 +- .../DataSetCompleteRegistrationSamples.java | 2 +- ...mpulsoryDataElementOperandLinkSamples.java | 2 +- .../data/dataset/DataSetElementSamples.java | 2 +- .../DataSetOrganisationUnitLinkSamples.java | 2 +- .../core/data/dataset/DataSetSamples.java | 2 +- .../SectionDataElementLinkSamples.java | 2 +- .../SectionGreyedFieldsLinkSamples.java | 2 +- .../dataset/SectionIndicatorLinkSamples.kt | 2 +- .../core/data/dataset/SectionSamples.java | 2 +- .../data/datastore/KeyValuePairSamples.kt | 2 +- .../datavalue/DataValueConflictSamples.kt | 2 +- .../core/data/datavalue/DataValueSamples.kt | 2 +- .../core/data/datavalue/DataValueUtils.java | 2 +- .../data/enrollment/EnrollmentSamples.java | 2 +- .../data/event/EventDataFilterSamples.java | 2 +- .../core/data/event/EventFilterSamples.java | 2 +- .../data/fileresource/FileResourceSamples.kt | 2 +- .../RandomGeneratedInputStream.java | 2 +- .../imports/TrackerImportConflictSamples.java | 2 +- .../DataSetIndicatorLinkSamples.java | 2 +- .../core/data/indicator/IndicatorSamples.java | 2 +- .../DataElementLegendSetLinkSamples.java | 2 +- .../IndicatorLegendSetLinkSamples.kt | 2 +- .../core/data/legendset/LegendSamples.java | 2 +- .../core/data/legendset/LegendSetSamples.java | 2 +- .../ProgramIndicatorLegendSetLinkSamples.java | 2 +- .../core/data/maintenance/D2ErrorSamples.java | 2 +- .../ForeignKeyViolationSamples.java | 2 +- .../android/core/data/note/NoteSamples.java | 2 +- .../option/OptionGroupOptionLinkSamples.java | 2 +- .../core/data/option/OptionGroupSamples.java | 2 +- .../OrganisationUnitGroupSamples.java | 2 +- .../OrganisationUnitLevelSamples.java | 2 +- ...nUnitOrganisationUnitGroupLinkSamples.java | 2 +- .../OrganisationUnitProgramLinkSamples.java | 2 +- .../OrganisationUnitSamples.java | 2 +- .../core/data/period/PeriodSamples.java | 2 +- .../AnalyticsPeriodBoundarySamples.java | 2 +- .../data/program/ProgramIndicatorSamples.java | 2 +- .../program/ProgramRuleActionSamples.java | 2 +- .../core/data/program/ProgramRuleSamples.java | 2 +- .../program/ProgramRuleVariableSamples.java | 2 +- .../core/data/program/ProgramSamples.java | 2 +- .../ProgramSectionAttributeLinkSamples.java | 2 +- .../data/program/ProgramSectionSamples.kt | 2 +- .../ProgramStageDataElementSamples.java | 2 +- .../data/program/ProgramStageSamples.java | 2 +- ...ramStageSectionDataElementLinkSamples.java | 2 +- .../program/ProgramStageSectionSamples.kt | 2 +- .../ProgramTrackedEntityAttributeSamples.java | 2 +- .../RelationshipConstraintSamples.java | 2 +- .../relationship/RelationshipItemSamples.java | 2 +- .../relationship/RelationshipSamples.java | 2 +- .../relationship/RelationshipTypeSamples.java | 2 +- .../core/data/resource/ResourceSamples.java | 2 +- .../data/settings/AnalyticsSettingsSamples.kt | 2 +- .../data/settings/DataSetSettingSamples.java | 2 +- .../data/settings/FilterSettingSamples.java | 2 +- .../data/settings/GeneralSettingsSamples.java | 2 +- .../ProgramConfigurationSettingSamples.java | 2 +- .../data/settings/ProgramSettingSamples.java | 2 +- .../SynchronizationSettingsSamples.java | 2 +- .../data/settings/SystemSettingSamples.java | 2 +- .../data/settings/UserSettingsSamples.java | 2 +- .../core/data/sms/SMSMetadataIdSample.kt | 2 +- .../data/sms/SMSOngoingSubmissionSample.kt | 2 +- .../data/systeminfo/SystemInfoSamples.java | 2 +- .../core/data/trackedentity/EventSamples.java | 2 +- .../ReservedValueSettingSamples.java | 2 +- .../TrackedEntityAttributeSamples.java | 2 +- .../TrackedEntityAttributeValueSamples.java | 2 +- .../TrackedEntityDataValueSamples.java | 2 +- ...ackedEntityInstanceEventFilterSamples.java | 2 +- .../TrackedEntityInstanceFilterSamples.java | 2 +- .../TrackedEntityInstanceSamples.java | 2 +- .../TrackedEntityTypeAttributeSamples.java | 2 +- .../TrackedEntityTypeSamples.java | 2 +- .../TrackerQueryCommonParamsSamples.kt | 2 +- .../ownership/ProgramTempOwnerSamples.kt | 2 +- .../internal/TrackerJobObjectSamples.kt | 2 +- .../data/user/AuthenticatedUserSamples.java | 2 +- .../core/data/user/AuthoritySamples.java | 2 +- .../data/user/UserCredentialsSamples.java | 2 +- .../user/UserOrganisationUnitLinkSamples.java | 2 +- .../core/data/user/UserRoleSamples.java | 2 +- .../android/core/data/user/UserSamples.java | 2 +- .../data/utils/FillPropertiesTestUtils.kt | 2 +- .../validation/ValidationRuleSamples.java | 2 +- .../visualization/DataDimensionItemSamples.kt | 2 +- ...sualizationCategoryDimensionLinkSamples.kt | 2 +- .../visualization/VisualizationSamples.kt | 2 +- .../DataValueImportConflictSamples.kt | 2 +- .../internal/AggregatedDataSyncSamples.java | 2 +- .../core/event/internal/EventSyncSamples.java | 2 +- .../conflicts/TrackedImportConflictSamples.kt | 2 +- .../TrackedEntityInstanceSyncSamples.java | 2 +- .../org/hisp/dhis/android/core/Inject.java | 2 +- .../aggregated/AnalyticsRepositoryShould.kt | 2 +- .../AnalyticsOrganisationUnitHelperShould.kt | 2 +- .../AnalyticsServiceDimensionHelperShould.kt | 2 +- .../internal/AnalyticsServiceHelperSamples.kt | 2 +- .../AnalyticsServiceMetadataHelperShould.kt | 2 +- ...ualizationsServiceDimensionHelperShould.kt | 2 +- .../linelist/EventLineListRepositoryShould.kt | 2 +- .../internal/ParentAuthenticatorShould.java | 2 +- .../internal/APICallExecutorShould.java | 2 +- .../arch/api/fields/internal/FieldShould.java | 2 +- .../internal/FieldsConverterShould.java | 2 +- .../api/fields/internal/FieldsShould.java | 2 +- .../internal/FilterConverterShould.java | 2 +- .../api/filters/internal/FilterShould.java | 2 +- .../internal/ApiPagingEngineShould.java | 2 +- .../arch/api/testutils/RetrofitFactory.java | 2 +- .../db/MultipleTableQueryBuilderShould.java | 2 +- .../arch/db/WhereClauseBuilderShould.java | 2 +- .../internal/TransactionImplShould.java | 2 +- .../UnencryptedDatabaseAdapterShould.java | 2 +- .../internal/SQLStatementBuilderShould.java | 2 +- .../arch/helpers/CoordinateHelperShould.java | 2 +- .../arch/helpers/GeometryHelperShould.java | 2 +- .../android/core/arch/helpers/ResultShould.kt | 2 +- .../core/arch/helpers/UserHelperShould.java | 2 +- .../core/arch/helpers/UtilsShould.java | 2 +- .../MultiDimensionalPartitionerShould.kt | 2 +- .../internal/ObjectMapperFactoryShould.kt | 2 +- .../collection/RepositoryPagingShould.java | 2 +- .../BooleanFilterConnectorShould.java | 2 +- .../UnwrappedEqInFilterConnectorShould.java | 2 +- .../WhereClauseFromScopeBuilderShould.java | 2 +- .../core/attribute/AttributeShould.java | 2 +- .../core/attribute/AttributeValueShould.java | 2 +- .../core/category/CategoryComboShould.java | 2 +- .../CategoryOptionComboServiceShould.kt | 2 +- .../category/CategoryOptionComboShould.java | 2 +- ...CategoryOptionOrganisationUnitsShould.java | 2 +- .../core/category/CategoryOptionShould.java | 2 +- .../android/core/category/CategoryShould.java | 2 +- .../internal/CategoryComboHandlerShould.java | 2 +- .../android/core/common/AccessShould.java | 2 +- .../android/core/common/BaseCallShould.java | 2 +- .../android/core/common/BaseObjectShould.java | 2 +- .../android/core/common/DataAccessShould.java | 2 +- .../common/DateFilterPeriodHelperShould.kt | 2 +- .../EndpointPayloadCallAbstractShould.java | 2 +- .../android/core/common/ObjectShould.java | 2 +- .../ValueTypeDeviceRenderingShould.java | 2 +- .../core/common/ValueTypeRenderingShould.java | 2 +- .../internal/TrackerDataManagerShould.kt | 2 +- .../ValueTypeRenderingHandlerShould.java | 2 +- .../validators/BooleanValidatorShould.kt | 2 +- .../validators/CoordinateValidatorShould.kt | 2 +- .../validators/DateTimeValidatorShould.kt | 2 +- .../validators/DateValidatorShould.kt | 2 +- .../validators/EmailValidatorShould.kt | 2 +- .../IntegerNegativeValidatorShould.kt | 2 +- .../IntegerPositiveValidatorShould.kt | 2 +- .../validators/IntegerValidatorShould.kt | 2 +- .../IntegerZeroOrPositiveValidatorShould.kt | 2 +- .../validators/LetterValidatorShould.kt | 2 +- .../validators/LongTextValidatorShould.kt | 2 +- .../validators/NumberValidatorShould.kt | 2 +- .../validators/PercentageValidatorShould.kt | 2 +- .../validators/PhoneNumberValidatorShould.kt | 2 +- .../validators/TextValidatorShould.kt | 2 +- .../validators/TimeValidatorShould.kt | 2 +- .../validators/TrueOnlyValidatorShould.kt | 2 +- .../validators/UidValidatorShould.kt | 2 +- .../validators/UnitIntervalValidatorShould.kt | 2 +- .../validators/UrlValidatorShould.kt | 2 +- .../validators/ValidatorShouldHelper.kt | 2 +- .../ValueTypeValidatorGetterShould.kt | 2 +- .../internal/DatabaseNameGeneratorShould.kt | 2 +- .../DatabasesConfigurationHelperShould.kt | 2 +- .../internal/DatabasesConfigurationShould.kt | 2 +- ...erDatabaseManagerForD2ManagerUnitShould.kt | 2 +- .../MultiUserDatabaseManagerUnitShould.kt | 2 +- .../internal/ServerUrlParserShould.kt | 2 +- .../android/core/constant/ConstantShould.java | 2 +- .../core/dataapproval/DataApprovalShould.java | 2 +- .../dataelement/DataElementOperandShould.java | 2 +- .../core/dataelement/DataElementShould.java | 2 +- .../internal/DataElementHandlerShould.java | 2 +- .../core/dataset/DataInputPeriodShould.java | 2 +- .../DataSetCompleteRegistrationShould.java | 2 +- ...mpleteRegistrationWithCompletedShould.java | 2 +- .../android/core/dataset/DataSetShould.java | 2 +- .../android/core/dataset/SectionShould.java | 2 +- ...mpleteRegistrationImportHandlerShould.java | 2 +- .../internal/DataSetHandlerShould.java | 2 +- .../internal/SectionHandlerShould.java | 2 +- .../datavalue/DataValueSetEmptyShould.java | 2 +- .../DataValueSetOnlyCommonFieldsShould.java | 2 +- .../core/datavalue/DataValueSetShould.java | 2 +- .../DataValueSetSinglePeriodShould.java | 2 +- .../core/datavalue/DataValueShould.java | 2 +- .../DataValueImportHandlerShould.java | 2 +- .../IndexedDataValueConflictShould.kt | 2 +- .../InvalidDataElementTypeConflictShould.kt | 2 +- .../conflicts/PastExpiryDateConflictShould.kt | 2 +- ...riodAfterLatestOpenFutureConflictShould.kt | 2 +- ...AggregatedDataCallBundleFactoryShould.java | 2 +- ...edDataSyncLastUpdatedCalculatorShould.java | 2 +- .../domain/metadata/MetadataCallShould.kt | 2 +- .../enrollment/EnrollmentServiceShould.kt | 2 +- .../core/enrollment/EnrollmentShould.java | 2 +- .../internal/EnrollmentHandlerShould.kt | 2 +- .../internal/EnrollmentImportHandlerShould.kt | 2 +- .../core/event/EventDownloaderShould.kt | 2 +- .../android/core/event/EventFilterShould.java | 2 +- .../android/core/event/EventServiceShould.kt | 2 +- .../dhis/android/core/event/EventShould.java | 2 +- .../event/internal/EventDateUtilsShould.kt | 2 +- .../event/internal/EventEndpointCallShould.kt | 2 +- .../internal/EventFilterHandlerShould.java | 2 +- .../core/event/internal/EventHandlerShould.kt | 2 +- .../internal/EventImportHandlerShould.kt | 2 +- .../internal/EventQueryBundleFactoryShould.kt | 2 +- .../core/event/internal/EventQueryShould.kt | 2 +- .../EventCollectionRepositoryAdapterShould.kt | 2 +- .../EventQueryCollectionRepositoryShould.kt | 2 +- .../EventQueryRepositoryScopeHelperShould.kt | 2 +- ...DataValueImportSummaryWebResponseShould.kt | 2 +- .../EnrollmentImportEnrollmentShould.java | 2 +- .../internal/EventImportEventShould.java | 2 +- .../HttpMessageBreakGlassSuccessfulShould.kt | 2 +- .../HttpMessageClosedProgramShould.kt | 2 +- .../HttpMessageOwnershipDeniedShould.kt | 2 +- .../internal/ImportConflictShould.java | 2 +- .../imports/internal/ImportCountShould.java | 2 +- .../RelationshipDeleteWebResponseShould.java | 2 +- .../RelationshipWebResponseShould.java | 2 +- .../internal/TEIImportSummariesShould.java | 2 +- .../internal/TEIImportSummaryShould.java | 2 +- .../internal/TEIWebResponseShould.java | 2 +- .../BadAttributePatternConflictShould.kt | 2 +- .../internal/conflicts/BaseConflictShould.kt | 2 +- ...rollmentHasInvalidProgramConflictShould.kt | 2 +- .../EnrollmentNotFoundConflictShould.kt | 2 +- .../EventHasInvalidProgramConflictShould.kt | 2 +- ...entHasInvalidProgramStageConflictShould.kt | 2 +- .../conflicts/EventNotFoundConflictShould.kt | 2 +- ...leResourceAlreadyAssignedConflictShould.kt | 2 +- ...ResourceReferenceNotFoundConflictShould.kt | 2 +- ...InvalidAttributeValueTypeConflictShould.kt | 2 +- .../InvalidDataValueConflictShould.kt | 2 +- .../InvalidTrackedEntityTypeConflictShould.kt | 2 +- ...entCascadeDeleteAuthorityConflictShould.kt | 2 +- ...TEICascadeDeleteAuthorityConflictShould.kt | 2 +- .../MissingAttributeConflictShould.kt | 2 +- .../MissingDataElementConflictShould.kt | 2 +- .../NonUniqueAttributeConflictShould.kt | 2 +- ...kedEntityInstanceNotFoundConflictShould.kt | 2 +- .../core/indicator/IndicatorShould.java | 2 +- .../core/indicator/IndicatorTypeShould.java | 2 +- .../DataSetIndicatorEvaluatorShould.kt | 2 +- .../core/legendset/LegendSetShould.java | 2 +- .../android/core/legendset/LegendShould.java | 2 +- .../internal/LegendSetHandlerShould.java | 2 +- .../PerformanceHintsServiceShould.java | 2 +- .../dhis/android/core/note/Note29Should.java | 2 +- .../dhis/android/core/note/Note30Should.java | 2 +- .../core/option/OptionGroupShould.java | 2 +- .../android/core/option/OptionSetShould.java | 2 +- .../android/core/option/OptionShould.java | 2 +- .../option/internal/OptionHandlerShould.java | 2 +- .../OrganisationUnitGroupShould.java | 2 +- .../OrganisationUnitLevelShould.java | 2 +- .../OrganisationUnitServiceShould.kt | 2 +- .../OrganisationUnitShould.java | 2 +- .../OrganisationUnitTreeShould.java | 2 +- .../OrganisationUnitCallUnitShould.java | 2 +- ...isationUnitDisplayPathGeneratorShould.java | 2 +- .../OrganisationUnitHandlerShould.java | 2 +- .../expression/ExpressionServiceShould.java | 2 +- .../service/utils/ExpressionHelperShould.kt | 2 +- .../core/payload/ProgramPayloadShould.java | 2 +- .../AbstractPeriodGeneratorShould.java | 2 +- .../BiWeeklyPeriodGeneratorShould.java | 2 +- .../internal/DailyPeriodGeneratorShould.java | 2 +- .../FinancialOctPeriodGeneratorShould.java | 2 +- .../internal/InPeriodQueryHelperShould.kt | 2 +- .../MonthlyPeriodGeneratorShould.java | 2 +- .../ParentPeriodGeneratorImplShould.java | 2 +- .../internal/PeriodGeneratorBaseShould.java | 2 +- .../period/internal/PeriodHandlerShould.java | 2 +- .../period/internal/PeriodHelperShould.kt | 2 +- .../QuarterPeriodGeneratorShould.java | 2 +- .../RelativePeriodGeneratorImplShould.kt | 2 +- .../SixMonthlyPeriodGeneratorShould.java | 2 +- .../internal/WeeklyPeriodGeneratorShould.java | 2 +- .../core/program/ProgramIndicatorShould.kt | 2 +- .../core/program/ProgramRuleActionShould.java | 2 +- .../core/program/ProgramRuleShould.java | 2 +- .../program/ProgramRuleVariableShould.java | 2 +- .../core/program/ProgramSection32Should.java | 2 +- .../core/program/ProgramSectionShould.java | 2 +- .../android/core/program/ProgramShould.java | 2 +- .../ProgramStageDataElementShould.java | 2 +- .../core/program/ProgramStageShould.java | 2 +- .../ProgramTrackedEntityAttributeShould.java | 2 +- .../internal/ProgramEndpointCallShould.java | 2 +- .../internal/ProgramHandlerShould.java | 2 +- .../ProgramIndicatorHandlerShould.java | 2 +- .../ProgramModuleDownloaderShould.java | 2 +- .../internal/ProgramRuleHandlerShould.java | 2 +- .../internal/ProgramSectionHandlerShould.java | 2 +- .../ProgramStageDataElementHandlerShould.java | 2 +- .../internal/ProgramStageHandlerShould.java | 2 +- .../ProgramStageSectionHandlerShould.java | 2 +- ...amTrackedEntityAttributeHandlerShould.java | 2 +- .../ProgramIndicatorExecutorShould.kt | 2 +- .../internal/function/D2AddDaysShould.java | 2 +- .../internal/function/D2CeilShould.java | 2 +- .../function/D2ConcatenateShould.java | 2 +- .../function/D2DaysBetweenShould.java | 2 +- .../internal/function/D2FloorShould.java | 2 +- .../internal/function/D2LeftShould.java | 2 +- .../internal/function/D2LengthShould.java | 2 +- .../function/D2MinutesBetweenShould.java | 2 +- .../internal/function/D2ModulusShould.java | 2 +- .../function/D2MonthsBetweenShould.java | 2 +- .../internal/function/D2OizpShould.java | 2 +- .../internal/function/D2RightShould.java | 2 +- .../internal/function/D2RoundShould.java | 2 +- .../internal/function/D2SplitShould.java | 2 +- .../internal/function/D2SubStringShould.java | 2 +- .../function/D2ValidatePatternShould.java | 2 +- .../function/D2WeeksBetweenShould.java | 2 +- .../function/D2YearsBetweenShould.java | 2 +- .../internal/function/D2ZingShould.java | 2 +- .../internal/function/D2ZpvcShould.java | 2 +- .../NewTrackerImporterRelationshipShould.kt | 2 +- .../relationship/Relationship30Should.java | 2 +- .../relationship/RelationshipItemShould.java | 2 +- .../RelationshipType30Should.java | 2 +- .../RelationshipType32Should.java | 2 +- .../RelationshipDHISVersionManagerShould.java | 2 +- .../internal/RelationshipHandlerShould.java | 2 +- .../RelationshipImportHandlerShould.kt | 2 +- ...hipTypeCollectionRepositoryHelperShould.kt | 2 +- .../internal/ResourceHandlerShould.java | 2 +- .../core/settings/AnalyticsSettingV1Should.kt | 2 +- .../core/settings/AnalyticsSettingV2Should.kt | 2 +- .../core/settings/AppMetadataShould.java | 2 +- .../settings/AppearanceSettingsV1Should.java | 2 +- .../settings/AppearanceSettingsV2Should.java | 2 +- .../core/settings/DataSetSettingsShould.java | 2 +- .../settings/GeneralSettingsV1Should.java | 2 +- .../settings/GeneralSettingsV2Should.java | 2 +- .../core/settings/ProgramSettingsShould.java | 2 +- .../core/settings/SettingsAppInfoShould.java | 2 +- .../SynchronizationSettingsShould.java | 2 +- .../core/settings/SystemSettingsShould.java | 2 +- .../core/settings/UserSettingsShould.java | 2 +- .../internal/AnalyticsSettingCallShould.kt | 2 +- .../AnalyticsTeiSettingHandlerShould.kt | 2 +- ...alyticsTeiWHONutritionDataHandlerShould.kt | 2 +- .../internal/AppearanceSettingsCallShould.kt | 2 +- .../internal/DataSetSettingCallShould.kt | 2 +- .../internal/DataSetSettingHandlerShould.java | 2 +- .../internal/FilterSettingHandlerShould.kt | 2 +- .../internal/GeneralSettingCallShould.kt | 2 +- .../internal/GeneralSettingsHandlerShould.kt | 2 +- ...rogramConfigurationSettingHandlerShould.kt | 2 +- .../internal/ProgramSettingCallShould.kt | 2 +- .../internal/ProgramSettingHandlerShould.java | 2 +- .../internal/SettingsAppInfoCallShould.kt | 2 +- .../internal/SettingsAppInfoManagerShould.kt | 2 +- .../SynchronizationSettingCallShould.kt | 2 +- .../SynchronizationSettingsHandlerShould.kt | 2 +- .../internal/SystemSettingSplitterShould.java | 2 +- .../dhis/android/core/sms/ConvertTest.java | 2 +- .../hisp/dhis/android/core/sms/InitTest.java | 2 +- .../dhis/android/core/sms/SubmitTest.java | 2 +- .../internal/WebApiRepositoryImplShould.kt | 2 +- .../mockrepos/MockDeviceStateRepository.java | 2 +- .../sms/mockrepos/MockLocalDbRepository.java | 2 +- .../core/sms/mockrepos/MockSmsRepository.java | 2 +- .../sms/mockrepos/MockWebApiRepository.java | 2 +- .../mockrepos/testobjects/MockMetadata.java | 2 +- .../mockrepos/testobjects/MockObjects.java | 2 +- .../core/systeminfo/SMSVersionShould.java | 2 +- .../core/systeminfo/SystemInfoShould.java | 2 +- .../internal/DHISVersionManagerShould.java | 2 +- .../internal/SystemInfoCallShould.java | 2 +- ...kedEntityAttributeReservedValueShould.java | 2 +- .../TrackedEntityAttributeShould.java | 2 +- .../TrackedEntityDataValueShould.java | 2 +- .../TrackedEntityInstanceFilterShould.java | 2 +- .../TrackedEntityInstanceShould.java | 2 +- .../TrackedEntityTypeAttributeShould.java | 2 +- .../TrackedEntityTypeShould.java | 2 +- .../TrackedEntityAttributeHandlerShould.java | 2 +- ...uteReservedValueValidatorHelperShould.java | 2 +- ...TrackedEntityInstanceDownloaderShould.java | 2 +- ...ckedEntityInstanceFilterHandlerShould.java | 2 +- .../TrackedEntityInstanceHandlerShould.kt | 2 +- ...rackedEntityInstanceImportHandlerShould.kt | 2 +- ...TrackedEntityInstanceQueryFactoryShould.kt | 2 +- .../TrackedEntityInstanceUidHelperShould.java | 2 +- .../ownership/OwnershipManagerShould.kt | 2 +- .../search/QueryPageUserModeMatcher.kt | 2 +- .../search/QueryUserModeMatcher.kt | 2 +- .../search/SearchGridMapperShould.java | 2 +- .../search/SearchGridShould.java | 2 +- ...dEntityInstanceLocalQueryHelperShould.java | 2 +- .../TrackedEntityInstanceQueryCallShould.java | 2 +- ...edEntityInstanceQueryDataSourceShould.java | 2 +- ...edEntityInstanceQueryErrorCatcherShould.kt | 44 +++++++++---------- ...EntityInstanceQueryOnlineHelperShould.java | 2 +- ...nstanceQueryRepositoryScopeHelperShould.kt | 2 +- .../tracker/importer/JobReportErrorShould.kt | 2 +- .../importer/JobReportSuccessShould.kt | 2 +- .../importer/TrackerConflictHelperShould.kt | 2 +- ...ckerImporterFileResourcesPostCallShould.kt | 2 +- .../core/user/AuthenticatedUserShould.java | 2 +- .../core/user/UserCredentialShould.java | 2 +- .../android/core/user/UserRoleShould.java | 2 +- .../dhis/android/core/user/UserShould.java | 2 +- .../internal/AuthorityEndpointCallShould.java | 2 +- .../IsUserLoggedInCallableShould.java | 2 +- .../internal/LogInCallErrorCatcherShould.java | 2 +- .../user/internal/LogInCallUnitShould.java | 2 +- .../core/user/internal/LogOutCallShould.java | 2 +- .../UserAccountDisabledErrorCatcherShould.kt | 2 +- .../core/user/internal/UserCallShould.java | 2 +- .../core/user/internal/UserHandlerShould.java | 2 +- .../core/validation/ValidationRuleShould.java | 2 +- .../visualization/VisualizationAPI36Should.kt | 2 +- .../visualization/VisualizationShould.java | 2 +- .../VisualizationSimplifiedShould.java | 2 +- .../internal/VisualizationHandlerShould.java | 2 +- .../core/wipe/internal/WipeModuleShould.java | 2 +- .../testapp/arch/BasePublicAccessShould.java | 2 +- .../testapp/arch/ObjectWithBuilderShould.java | 2 +- .../AttributePublicAccessShould.java | 2 +- ...eAttributeValueLinkPublicAccessShould.java | 2 +- ...ryCategoryComboLinkPublicAccessShould.java | 2 +- ...yCategoryOptionLinkPublicAccessShould.java | 2 +- .../CategoryComboPublicAccessShould.java | 2 +- ...CategoryOptionComboPublicAccessShould.java | 2 +- .../CategoryOptionPublicAccessShould.java | 2 +- .../category/CategoryPublicAccessShould.java | 2 +- ...TypeDeviceRenderingPublicAccessShould.java | 2 +- .../ConfigurationPublicAccessShould.java | 2 +- .../constant/ConstantPublicAccessShould.java | 2 +- .../DataElementOperandPublicAccessShould.java | 2 +- .../DataElementPublicAccessShould.java | 2 +- .../DataInputPeriodPublicAccessShould.java | 2 +- ...ompleteRegistrationPublicAccessShould.java | 2 +- ...aElementOperandLinkPublicAccessShould.java | 2 +- .../DataSetElementPublicAccessShould.java | 2 +- ...rganisationUnitLinkPublicAccessShould.java | 2 +- .../dataset/DataSetPublicAccessShould.java | 2 +- ...tionDataElementLinkPublicAccessShould.java | 2 +- ...ionGreyedFieldsLinkPublicAccessShould.java | 2 +- .../dataset/SectionPublicAccessShould.java | 2 +- .../KeyValuePairPublicAccessShould.java | 2 +- .../DataValuePublicAccessShould.java | 2 +- .../EnrollmentPublicAccessShould.java | 2 +- .../note/NotePublicAccessShould.java | 2 +- .../EventDataFilterPublicAccessShould.java | 2 +- .../event/EventFilterPublicAccessShould.java | 2 +- .../event/EventPublicAccessShould.java | 2 +- ...ackerImportConflictPublicAccessShould.java | 2 +- ...ataSetIndicatorLinkPublicAccessShould.java | 2 +- .../IndicatorPublicAccessShould.java | 2 +- .../IndicatorTypePublicAccessShould.java | 2 +- ...lementLegendSetLinkPublicAccessShould.java | 2 +- .../legendset/LegendPublicAccessShould.java | 2 +- .../LegendSetPublicAccessShould.java | 2 +- ...icatorLegendSetLinkPublicAccessShould.java | 2 +- .../D2ErrorPublicAccessShould.java | 2 +- ...ForeignKeyViolationPublicAccessShould.java | 2 +- .../testapp/note/NotePublicAccessShould.java | 2 +- ...tionGroupOptionLinkPublicAccessShould.java | 2 +- .../option/OptionGroupPublicAccessShould.java | 2 +- .../option/OptionPublicAccessShould.java | 2 +- .../option/OptionSetPublicAccessShould.java | 2 +- ...ganisationUnitGroupPublicAccessShould.java | 2 +- ...ganisationUnitLevelPublicAccessShould.java | 2 +- ...sationUnitGroupLinkPublicAccessShould.java | 2 +- ...tionUnitProgramLinkPublicAccessShould.java | 2 +- .../OrganisationUnitPublicAccessShould.java | 2 +- .../period/PeriodPublicAccessShould.java | 2 +- .../ProgramIndicatorPublicAccessShould.java | 2 +- .../program/ProgramPublicAccessShould.java | 2 +- .../ProgramRuleActionPublicAccessShould.java | 2 +- .../ProgramRulePublicAccessShould.java | 2 +- ...ProgramRuleVariablePublicAccessShould.java | 2 +- ...ectionAttributeLinkPublicAccessShould.java | 2 +- .../ProgramSectionPublicAccessShould.java | 2 +- ...ramStageDataElementPublicAccessShould.java | 2 +- .../ProgramStagePublicAccessShould.java | 2 +- ...tionDataElementLinkPublicAccessShould.java | 2 +- ...ProgramStageSectionPublicAccessShould.java | 2 +- ...ckedEntityAttributePublicAccessShould.java | 2 +- ...ationshipConstraintPublicAccessShould.java | 2 +- .../RelationshipItemPublicAccessShould.java | 2 +- .../RelationshipPublicAccessShould.java | 2 +- .../RelationshipTypePublicAccessShould.java | 2 +- .../resource/ResourcePublicAccessShould.java | 2 +- .../DataSetSettingPublicAccessShould.java | 2 +- .../GeneralSettingsPublicAccessShould.java | 2 +- .../ProgramSettingPublicAccessShould.java | 2 +- .../SystemSettingPublicAccessShould.java | 2 +- .../UserSettingsPublicAccessShould.java | 2 +- .../SystemInfoPublicAccessShould.java | 2 +- ...eservedValueSettingPublicAccessShould.java | 2 +- ...ckedEntityAttributePublicAccessShould.java | 2 +- ...ributeReservedValuePublicAccessShould.java | 2 +- ...ntityAttributeValuePublicAccessShould.java | 2 +- ...ckedEntityDataValuePublicAccessShould.java | 2 +- ...InstanceEventFilterPublicAccessShould.java | 2 +- ...ntityInstanceFilterPublicAccessShould.java | 2 +- ...ackedEntityInstancePublicAccessShould.java | 2 +- ...EntityTypeAttributePublicAccessShould.java | 2 +- .../TrackedEntityTypePublicAccessShould.java | 2 +- .../AuthenticatedUserPublicAccessShould.java | 2 +- .../user/AuthorityPublicAccessShould.java | 2 +- .../UserCredentialsPublicAccessShould.java | 2 +- ...rganisationUnitLinkPublicAccessShould.java | 2 +- .../testapp/user/UserPublicAccessShould.java | 2 +- .../user/UserRolePublicAccessShould.java | 2 +- .../ValidationRulePublicAccessShould.java | 2 +- .../CategoryDimensionPublicAccessShould.java | 2 +- .../DataDimensionItemPublicAccessShould.java | 2 +- .../VisualizationPublicAccessShould.java | 2 +- 3043 files changed, 3256 insertions(+), 3088 deletions(-) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/AndroidTestUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/AndroidTestUtils.java index fa41d894dd..4aa2d5c386 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/AndroidTestUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/AndroidTestUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/BaseIntegrationTestWithDatabase.java b/core/src/androidTest/java/org/hisp/dhis/android/core/BaseIntegrationTestWithDatabase.java index 4c6b9d7265..3e4e186986 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/BaseIntegrationTestWithDatabase.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/BaseIntegrationTestWithDatabase.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/BaseRealIntegrationTest.java b/core/src/androidTest/java/org/hisp/dhis/android/core/BaseRealIntegrationTest.java index d6e80a7958..9da8ce52bc 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/BaseRealIntegrationTest.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/BaseRealIntegrationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/D2DIComponentAccessor.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/D2DIComponentAccessor.kt index 085cd0d6e9..bc55b96d2c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/D2DIComponentAccessor.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/D2DIComponentAccessor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/D2Factory.java b/core/src/androidTest/java/org/hisp/dhis/android/core/D2Factory.java index c9acbf8d0e..972b19e5b0 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/D2Factory.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/D2Factory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/EventWithLimitCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/EventWithLimitCallMockIntegrationShould.kt index ace96396b3..f0b133e5fd 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/EventWithLimitCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/EventWithLimitCallMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/LogInCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/LogInCallRealIntegrationShould.java index dc725a7c16..0982c014a6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/LogInCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/LogInCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java index 4e78330897..890fd8de90 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MetadataCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MockIntegrationTestObjects.java b/core/src/androidTest/java/org/hisp/dhis/android/core/MockIntegrationTestObjects.java index 6b8c9b7708..84f736cb8e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MockIntegrationTestObjects.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MockIntegrationTestObjects.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserMockIntegrationShould.kt index c7b83a7211..cb674e0094 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserRealIntegrationShould.java index cbea12f2d3..519f8728c5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/MultiUserRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/TeisCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/TeisCallRealIntegrationShould.java index 8fa49584b7..69e978aca0 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/TeisCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/TeisCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt index d3d045bf51..24a737befc 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsVisualizationRepositoryIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorIntegrationShould.kt index a0412150e3..96390ef640 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt index 342e1c9397..b731b59bc8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/BaseEvaluatorSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluatorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluatorIntegrationShould.kt index a2630a85a3..88029d305d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluatorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluatorIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationBaseShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationBaseShould.kt index 24c7ef0122..9eceea65d3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationBaseShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationBaseShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt index c757195c33..151880e6b5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluatorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluatorIntegrationShould.kt index f9a073be69..0894f9a349 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluatorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluatorIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorIntegrationShould.kt index 5fdf22a95f..e34d199c67 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt index 5d43babde3..a1ce7c7ed7 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt index 732ed933ce..087ce06969 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/analytics/eventlinelist/EventLineListSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/SqliteCheckerUtility.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/SqliteCheckerUtility.java index ebf351fc18..13d0c3a3b8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/SqliteCheckerUtility.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/SqliteCheckerUtility.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactoryIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactoryIntegrationShould.java index 9a1295a5b1..f507d79b64 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactoryIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactoryIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseFromMigrationsIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseFromMigrationsIntegrationShould.kt index 7cadbffa13..7b9ea009b7 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseFromMigrationsIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseFromMigrationsIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportFromDatabaseAssetsMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportFromDatabaseAssetsMockIntegrationShould.kt index d159217e11..390487b8a5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportFromDatabaseAssetsMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportFromDatabaseAssetsMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/TestDatabaseImporter.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/TestDatabaseImporter.kt index 18ee389ee2..2964bfffe1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/TestDatabaseImporter.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/db/access/internal/TestDatabaseImporter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryOneMethodMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryOneMethodMockIntegrationShould.java index 4299091dff..016e9eb7c2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryOneMethodMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryOneMethodMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/FiltersOperatorsMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/FiltersOperatorsMockIntegrationShould.java index 815c67c1e5..2029b11223 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/FiltersOperatorsMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/FiltersOperatorsMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/IdentifiableCollectionFiltersMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/IdentifiableCollectionFiltersMockIntegrationShould.java index e315d792f7..6041be5420 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/IdentifiableCollectionFiltersMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/IdentifiableCollectionFiltersMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/NameableCollectionFiltersMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/NameableCollectionFiltersMockIntegrationShould.java index d5c05ff743..5292eab368 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/NameableCollectionFiltersMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/NameableCollectionFiltersMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/PagingMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/PagingMockIntegrationShould.kt index b80282c960..070a25ccbb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/PagingMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/PagingMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepositoryImplIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepositoryImplIntegrationShould.java index bc7271d59e..b530de90b1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepositoryImplIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepositoryImplIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepositoryImplIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepositoryImplIntegrationShould.java index 93241ea4b3..16a1b5bd2f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepositoryImplIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepositoryImplIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/RelationshipTypeAsserts.java b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/RelationshipTypeAsserts.java index d32a2bd244..a3990fa9f5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/RelationshipTypeAsserts.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/repositories/collection/RelationshipTypeAsserts.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStorageMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStorageMockIntegrationShould.kt index 7dd8316d20..957769f172 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStorageMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStorageMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/AttributeStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/AttributeStoreIntegrationShould.java index 3ebf933d91..479da09eee 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/AttributeStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/AttributeStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStoreIntegrationShould.java index b096f38a19..e3a5ec5c0d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStoreIntegrationShould.java index 019e62ba20..9415420a8e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStoreIntegrationShould.java index b17a33fe00..3972d81760 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStoreIntegrationShould.java index c85c4728fb..d136b89256 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStoreIntegrationShould.java index c3c50da80d..9a8db4c74d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboEndpointCallRealIntegrationShould.java index 12c1c6bc91..1ba54bfede 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeekerMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeekerMockIntegrationShould.java index 7795d745e7..29c40ca32b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeekerMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeekerMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallRealIntegrationShould.java index 99db0af879..78fa9770af 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallShould.java index 7635135525..a552bc239a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryEndpointCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStoreIntegrationShould.java index c7abdcdd4e..00ab113edd 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CreateCategoryComboUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CreateCategoryComboUtils.java index 49f17a375a..4d87d77c09 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CreateCategoryComboUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/category/internal/CreateCategoryComboUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java index 1eac3f7d10..022e42fb02 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/common/IdentifiableObjectStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java index 7fa5072957..93ea694c1b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/common/ObjectStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/common/StoreMocks.java b/core/src/androidTest/java/org/hisp/dhis/android/core/common/StoreMocks.java index a4c53e3e3d..47db5b9eff 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/common/StoreMocks.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/common/StoreMocks.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingStoreIntegrationShould.java index d0002d4b08..961b915dfb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorIntegrationShould.kt index 1009893da2..c1dca6e657 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStoreIntegrationShould.java index 1300a883ca..0b3efb1fbd 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt index 2b760a0997..cc885d2cd6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigrationIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/constant/internal/ConstantStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/constant/internal/ConstantStoreIntegrationShould.java index 01a9870536..4d6093620f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/constant/internal/ConstantStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/constant/internal/ConstantStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/CursorAssert.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/CursorAssert.java index 21b881dfda..0bd478d320 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/CursorAssert.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/CursorAssert.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DatabaseAssert.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DatabaseAssert.kt index 66bb708e59..86fc10457b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DatabaseAssert.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DatabaseAssert.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DbTestUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DbTestUtils.java index 6284f5a2da..37df661520 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DbTestUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/DbTestUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableDataObjectStoreAbstractIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableDataObjectStoreAbstractIntegrationShould.java index dbafb0fd21..5e40715255 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableDataObjectStoreAbstractIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableDataObjectStoreAbstractIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableObjectStoreAbstractIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableObjectStoreAbstractIntegrationShould.java index 5d7483cbb2..27fcebf556 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableObjectStoreAbstractIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/IdentifiableObjectStoreAbstractIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/LinkStoreAbstractIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/LinkStoreAbstractIntegrationShould.java index d9b616b5d3..248c8720a7 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/LinkStoreAbstractIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/LinkStoreAbstractIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectStoreAbstractIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectStoreAbstractIntegrationShould.java index aa071723b8..cf84adcda8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectStoreAbstractIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectStoreAbstractIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectWithoutUidStoreAbstractIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectWithoutUidStoreAbstractIntegrationShould.java index 91314bd4e3..bb5a5e9281 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectWithoutUidStoreAbstractIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/ObjectWithoutUidStoreAbstractIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/migrations/DataBaseMigrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/migrations/DataBaseMigrationShould.java index c5f32bcc01..2c14341c1b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/migrations/DataBaseMigrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/database/migrations/DataBaseMigrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/data/server/RealServerMother.java b/core/src/androidTest/java/org/hisp/dhis/android/core/data/server/RealServerMother.java index cbc8820114..6c1618a92b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/data/server/RealServerMother.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/data/server/RealServerMother.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/CreateDataElementUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/CreateDataElementUtils.java index fbce0147cf..ede5d09780 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/CreateDataElementUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/CreateDataElementUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallRealIntegrationShould.java index 52c0fac2e7..55be7c4bef 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStoreIntegrationShould.java index 1fd4f35442..7be7f17032 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStoreIntegrationShould.java index 4b2602cee6..cee249e514 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStoreIntegrationShould.java index 3abaf37b7f..1930190dbe 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallRealIntegrationShould.java index 48c7880a1a..8cf0e00aa3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCallRealIntegrationShould.java index e83c6398ce..40b7fbccd2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStoreIntegrationShould.java index 381390a007..dedac2613d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStoreIntegrationShould.java index cef6ebfed5..8b4768d60e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallRealIntegrationShould.java index 7365beea68..1d296dfd53 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStoreIntegrationShould.java index 9d8e4f7f11..c6910f2ba1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetStoreIntegrationShould.java index 3a3a33fcdb..45d00b4c03 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/DataSetStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStoreIntegrationShould.java index 2498076002..53c25948ae 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStoreIntegrationShould.java index c4617e18d4..0867fdf5bc 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStoreIntegrationShould.kt index 87017d1fd4..96dd026b48 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionStoreIntegrationShould.java index 590605c969..535c837cfc 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/dataset/internal/SectionStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/datastore/LocalDataStoreStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/datastore/LocalDataStoreStoreIntegrationShould.kt index be6dd95bda..e58f53dcdc 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/datastore/LocalDataStoreStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/datastore/LocalDataStoreStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStoreIntegrationShould.kt index e40b85fdd9..c3a7a1f3c9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEndpointCallRealIntegrationShould.java index 9a6b8151e7..d9ee3d34f6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallMockIntegrationShould.kt index 661763279f..acd61775e6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallMockIntegrationShould.kt @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package org.hisp.dhis.android.core.datavalue.internal import com.google.common.truth.Truth.assertThat diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallRealIntegrationShould.java index 37fbe55ed9..1c1aec77c1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/debug/flipper/debug/FlipperManager.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/debug/flipper/debug/FlipperManager.kt index 296c3c6b69..b29e8034c0 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/debug/flipper/debug/FlipperManager.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/debug/flipper/debug/FlipperManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallMockIntegrationShould.java index 8cc413089f..cdc7d162ea 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallRealIntegrationShould.java index 4fe1d2f5a2..7fe4e54525 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/AggregatedDataCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStoreIntegrationShould.java index e372dbfa68..f8695c5562 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/CreateEnrollmentUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/CreateEnrollmentUtils.java index d33baeee84..b38b5848fb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/CreateEnrollmentUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/CreateEnrollmentUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreIntegrationShould.java index 40bb44f7bf..644c3e4c57 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/CreateEventUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/CreateEventUtils.java index 721fe14299..a59f2bf807 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/CreateEventUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/CreateEventUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI29RealShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI29RealShould.java index 199f20dc4a..e5aa01cacb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI29RealShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI29RealShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI30RealShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI30RealShould.java index eff5afc14e..00edaea4f0 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI30RealShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPI30RealShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java index 65c4131787..ca84d2cee2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventAPIRealShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt index 682be395a6..ef24d5a48b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventCallFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStoreIntegrationShould.java index 6710f5df12..9a1aaf4c2c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDownloadRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDownloadRealIntegrationShould.java index eb9988f0e3..064df55bf5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDownloadRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventDownloadRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallMockIntegrationShould.kt index c0765343a8..a14d92701e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallRealIntegrationShould.java index a37697116f..4179fab574 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventFilterStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventFilterStoreIntegrationShould.java index a3c4ac7c28..76a9fa1843 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventFilterStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventFilterStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostCallRealIntegrationShould.java index 70fddc289f..34c79e3233 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGeneratorMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGeneratorMockIntegrationShould.java index c9537cdcbb..303f49435b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGeneratorMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGeneratorMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventStoreIntegrationShould.java index 1ee55ca73f..f68310a8f0 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventSyncStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventSyncStoreIntegrationShould.java index c919c05aa3..931b6a3870 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventSyncStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventSyncStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventUtils.java index 669022a081..1707318c47 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/event/internal/EventUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallRealIntegrationShould.java index 0b23cb5b25..54c52f006b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreIntegrationShould.kt index 6817fcb46f..19d0782408 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreIntegrationShould.java index ed91f02d30..f08e9f7455 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStoreIntegrationShould.java index 44794ce7ef..94c7b1fa5d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStoreIntegrationShould.java index 1846b8c276..e7cef7fda1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkStoreIntegrationShould.kt index 7454584324..e70e1e8ad8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLinkStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLinkStoreIntegrationShould.kt index 1a8ec75def..9b4c0af785 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLinkStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLinkStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkStoreIntegrationShould.java index c291fb84f2..35f57aedb9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStoreIntegrationShould.java index 28c354e182..ef8ef2a2a4 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendStoreIntegrationShould.java index c9cdbbaa5c..6c547f4635 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/legendset/internal/LegendStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStoreIntegrationShould.java index 50bd527bf4..514d8c2ee3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerShould.java index bb5c88cee7..300da3fb68 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStoreIntegrationShould.java index 2d7fe653aa..cc0d20227a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/note/NotePostCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/note/NotePostCallRealIntegrationShould.java index f1df9e3785..c2aadc8eb2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/note/NotePostCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/note/NotePostCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/note/internal/NoteStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/note/internal/NoteStoreIntegrationShould.java index 59606ef528..770a69ac08 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/note/internal/NoteStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/note/internal/NoteStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionCallShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionCallShould.java index d9810994f1..d12c551c66 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionCallShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionSetCallShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionSetCallShould.java index 4683e0181e..0ca36f7869 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionSetCallShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/option/OptionSetCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStoreIntegrationShould.java index 0ab8b4c7cd..0e35712777 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupStoreIntegrationShould.java index 98df91861e..068b9b3375 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/option/internal/OptionGroupStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallMockIntegrationShould.java index 2d7ecee670..d9b9eec1e9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStoreIntegrationShould.java index 3f9a2d0e2c..aa3288511d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStoreIntegrationShould.java index 9721d7f17c..ea3438eb73 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStoreIntegrationShould.java index f2016c1b49..5797ab1ed8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStoreIntegrationShould.java index a81f51d56c..6626bc64d7 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStoreIntegrationShould.java index df57dc1915..af3d7e7a61 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodMockIntegrationShould.java index 4fb899bd7a..5fdb191102 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodParserMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodParserMockIntegrationShould.java index 3c7f9f3c85..222eb6374f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodParserMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/period/PeriodParserMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/period/internal/PeriodStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/period/internal/PeriodStoreIntegrationShould.java index 45431c7051..ab9f9d39ea 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/period/internal/PeriodStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/period/internal/PeriodStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/CreateProgramStageUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/CreateProgramStageUtils.java index f0218c238b..6e75e31ce2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/CreateProgramStageUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/CreateProgramStageUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStoreIntegrationShould.kt index 7ce03f2165..2064d68d0b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java index 5f38fe7abc..d14654666e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallRealIntegrationShould.java index f03dbf4fbf..af25b339b9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStoreIntegrationShould.java index 19f4a5256a..8f6537cb87 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStoreIntegrationShould.java index 88b4622b35..bb49c036c9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStoreIntegrationShould.java index de68514649..cb1bcabe69 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStoreIntegrationShould.java index 8d6119444a..f6c6425afc 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStoreIntegrationShould.java index d11f6622c6..3fe47184d6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStoreIntegrationShould.kt index ce74ce2c72..33525fc3e3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStoreIntegrationShould.java index 08683d9bad..108a7aff68 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStoreIntegrationShould.java index f2aeebfa6e..a2b28321a3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStoreIntegrationShould.kt index c97244c8d7..a79c9d3790 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageStoreIntegrationShould.java index 7678bde8b1..e099a02659 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStageStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStoreIntegrationShould.java index dce8f49691..7ffe37b476 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStoreIntegrationShould.java index bb5a491a87..46cba79e3b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/BaseTrackerDataIntegrationHelper.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/BaseTrackerDataIntegrationHelper.kt index daac643dc9..c3cc296878 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/BaseTrackerDataIntegrationHelper.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/BaseTrackerDataIntegrationHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngineIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngineIntegrationShould.kt index a2e53a95e7..7c3dc73136 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngineIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngineIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt index d0037f8c8f..b69cd10640 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorSQLExecutorIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/CreateRelationshipTypeUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/CreateRelationshipTypeUtils.java index fdcc44be78..113e16b60b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/CreateRelationshipTypeUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/CreateRelationshipTypeUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepositoryMockIntegrationShould.java index d32f5513e7..e9d8e40d43 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepositoryMockIntegrationShould.java index 9f9d5b7cbc..d23787eb57 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStoreIntegrationShould.java index 62401f784a..3b858c2b4f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreIntegrationShould.java index 0f5b547f27..b2c4817852 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreIntegrationShould.java index bcd33eb9bd..733f850090 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreIntegrationShould.java index fe7e90456c..9fd864ad09 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/SettingsModuleMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/SettingsModuleMockIntegrationShould.java index c7b45d25c5..5aee446e15 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/SettingsModuleMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/SettingsModuleMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStoreIntegrationShould.kt index ccac7f9772..fe7971081a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStoreIntegrationShould.kt index 5a704e1c1b..7b5351df32 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStoreIntegrationShould.kt index de96b274f3..7473988c3e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStoreIntegrationShould.kt index 57865c850d..9794aabf25 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStoreIntegrationShould.kt index 7a2b38b3dc..5b74b15ae2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStoreIntegrationShould.kt index 7cd6733828..c1cf3ce63d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStoreIntegrationShould.java index aaa36b2f22..2e11140dbd 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStoreIntegrationShould.kt index d5d50e4a66..8feac8eaab 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsStoreIntegrationShould.kt index 8b530a21dc..544401c7a9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt index 3b771a9adb..9984fbacdb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStoreIntegrationShould.java index 4082dab11a..ca43dece5b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsStoreIntegrationShould.kt index 1d428695a0..d820d9e2a2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStoreIntegrationShould.java index 761a993821..c6be889e64 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStoreIntegrationShould.java index cfd46e9f0b..3585b23404 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt index 194d38f187..f3a4831668 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt index f2ccdcee68..5b0661bd91 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt index bf864d5111..7d395b5a38 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java index cca889475f..c532de3757 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/DHISVersionsManagerRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java index e04a19bde3..5dc35525e4 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoCallMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoDatabaseMappingShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoDatabaseMappingShould.java index 259c0b44d3..2b4efca845 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoDatabaseMappingShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoDatabaseMappingShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModuleMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModuleMockIntegrationShould.java index 36e941755e..49006395c4 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModuleMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModuleMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStoreIntegrationShould.java index a1bb0941df..61974640db 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityAttributeUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityAttributeUtils.java index 263930212e..3b1330e303 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityAttributeUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityAttributeUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityInstanceUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityInstanceUtils.java index 5b81f8223a..73a1279319 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityInstanceUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityInstanceUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityUtils.java index 2abe779e31..7bfd52bbb3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/CreateTrackedEntityUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManagerRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManagerRealIntegrationShould.java index 2089985b41..0861858c35 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManagerRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManagerRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCallRealIntegrationShould.java index 3211a1b289..fe01b2e245 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepositoryMockIntegrationShould.java index f2e361b8db..729e88ba1e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java index 471b598403..98fcb87b41 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/BreakTheGlassAPIShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI29Should.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI29Should.java index b8fc9d3e83..f709057b0d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI29Should.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI29Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI30Should.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI30Should.java index 1bb79efd74..ddeb8935a5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI30Should.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPI30Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java index 986d0d315e..25175c52eb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceAPIShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java index 2b1e127aa9..6596210b2d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/api/TrackedEntityInstanceUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt index 31367d3b7f..4775e1b723 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/BasePayloadGeneratorMockIntegration.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGeneratorMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGeneratorMockIntegrationShould.kt index a6e2d17f8b..09c6e66044 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGeneratorMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGeneratorMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStoreIntegrationShould.java index a93f72f7f6..452a8816d4 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallRealIntegrationShould.java index af18d375c5..f218250438 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreIntegrationShould.java index 8d27ff1310..392a643328 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStoreIntegrationShould.java index 7837fdf239..7c582f8528 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreIntegrationShould.java index c4063ec176..c4b5937a41 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreIntegrationShould.java index 89aaa6d03c..3ede97a07c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt index bf14cdf00b..7c47db1d35 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStoreIntegrationShould.java index a590b0ada2..cc2fc7ff6f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStoreIntegrationShould.java index 0bf46636f0..e0f350bb76 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostCallRealIntegrationShould.java index 9dce3974d1..d5edea76a7 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreIntegrationShould.java index e886b0d2b2..584a7f5f6c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStoreIntegrationShould.java index 8063b3a940..8cb5ca9c06 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStoreIntegrationShould.java index 01251718fc..ce2dbad3dd 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStoreIntegrationShould.java index cc432910f6..ec8d0a9727 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt index 9a9c852cc5..cc0816f2cf 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt index 7e5c1cc47d..e356c910bf 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryAndDownloadRealIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryAndDownloadRealIntegrationShould.kt index c0cf723949..112390b7c6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryAndDownloadRealIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryAndDownloadRealIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallRealIntegrationShould.java index ba976149a8..f7b0f89872 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.kt index 898bd33843..cff3153d33 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStoreIntegrationShould.kt index 62bff7ee35..28785bbf23 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/LoginErrorHandlingRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/LoginErrorHandlingRealIntegrationShould.java index 4916c7fe86..409e0cf727 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/LoginErrorHandlingRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/LoginErrorHandlingRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/OpenIdConnectRealIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/OpenIdConnectRealIntegrationShould.kt index d15d67880d..f1839ca337 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/OpenIdConnectRealIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/OpenIdConnectRealIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt index 9955737730..306bebf069 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledMockIntegrationShould.kt @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package org.hisp.dhis.android.core.user import com.google.common.truth.Truth.assertThat diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt index 4814a9daca..946085b25c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserDisabledRxAPIMockIntegrationShould.kt @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package org.hisp.dhis.android.core.user import com.google.common.truth.Truth.assertThat diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserModuleMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserModuleMockIntegrationShould.java index 1cf6be7033..b3eb1d2164 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserModuleMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/UserModuleMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStoreIntegrationShould.java index 6aef73d816..9e7b0684b2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthorityStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthorityStoreIntegrationShould.java index 87ad6e9f1f..86dd7959ac 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthorityStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/AuthorityStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogInCallMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogInCallMockIntegrationShould.java index 03318b1df3..9c40f01fc2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogInCallMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogInCallMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogoutCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogoutCallRealIntegrationShould.java index 2d2a7d3148..299698a7e9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogoutCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/LogoutCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateWithEncryptionMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateWithEncryptionMockIntegrationShould.java index 59c0c09a0a..90fcb5e789 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateWithEncryptionMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateWithEncryptionMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserCallMockIntegrationShould.kt index c6aefd0a3a..3e013e603c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserCallMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreIntegrationShould.java index 6868368942..34dca03920 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserRoleStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserRoleStoreIntegrationShould.java index 762e849e47..4bb9140a73 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserRoleStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/user/internal/UserRoleStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/DatabaseRemover.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/DatabaseRemover.java index 9a3d76905a..06125548bb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/DatabaseRemover.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/DatabaseRemover.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java index fbfb1bf118..9ad16a537b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyDispatcher.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyDispatcher.java index c56d5780b3..32c5b966e8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyDispatcher.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyDispatcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyEnqueable.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyEnqueable.java index e97d3194c4..ac659457da 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyEnqueable.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestEmptyEnqueable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestFullDispatcher.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestFullDispatcher.java index 022fd24fce..f5395c0127 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestFullDispatcher.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestFullDispatcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestLocalAnalyticsSuperLargeDispatcher.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestLocalAnalyticsSuperLargeDispatcher.kt index c54bfb8159..43cbe93af7 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestLocalAnalyticsSuperLargeDispatcher.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestLocalAnalyticsSuperLargeDispatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataDispatcher.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataDispatcher.java index 6dfa8bbadc..42d04ddcc4 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataDispatcher.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataDispatcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataEnqueable.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataEnqueable.java index 8f82dce397..d0a77361ec 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataEnqueable.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/BaseMockIntegrationTestMetadataEnqueable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestDatabaseContent.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestDatabaseContent.java index 7846a176b1..a9ea097729 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestDatabaseContent.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestDatabaseContent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestObjectsFactory.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestObjectsFactory.java index 2f05aa9677..0ffa2bc5eb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestObjectsFactory.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/MockIntegrationTestObjectsFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/TestDatabaseAdapterFactory.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/TestDatabaseAdapterFactory.java index e0197b32af..2cee8b9586 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/TestDatabaseAdapterFactory.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/integration/mock/TestDatabaseAdapterFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitRunner.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitRunner.java index 42857374b5..2eb781b6ce 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitRunner.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitRunner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitTestListener.java b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitTestListener.java index 2b79da44a0..5863203deb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitTestListener.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/utils/runner/D2JunitTestListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStoreIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStoreIntegrationShould.java index 4ae6c54766..7c1a591ab8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStoreIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStoreIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeStoreIntegrationShould.kt index b09f72d36a..08b72385ec 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementStoreIntegrationShould.kt index c11d5b158e..c8cc95316b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStoreIntegrationShould.kt index 8646efd433..22ec599bdf 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStoreIntegrationShould.kt index 7fdc5afd2c..176a399bce 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEndpointCallShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEndpointCallShould.kt index 2992633bbc..7d0d7d1f67 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEndpointCallShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEndpointCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStoreIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStoreIntegrationShould.kt index ba69683f9f..b0af77d1cf 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStoreIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStoreIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt index ae48d8a3ca..ac0d9e7fba 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallRealIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallRealIntegrationShould.java index c2ef315866..111cb1b5a2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallRealIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/core/wipe/WipeDBCallRealIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDataGenerator.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDataGenerator.kt index d992ad0b09..593238125f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDataGenerator.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDataGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDatabaseFiller.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDatabaseFiller.kt index cc390cf8b0..4756de3e64 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDatabaseFiller.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsDatabaseFiller.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsMetadataGenerator.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsMetadataGenerator.kt index 63d9c8d986..8a462edef6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsMetadataGenerator.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsMetadataGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsParams.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsParams.kt index 1018f964a5..7407d5c946 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsParams.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbgeneration/LocalAnalyticsParams.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/BaseLocalAnalyticsDatabaseSizeMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/BaseLocalAnalyticsDatabaseSizeMockIntegrationShould.kt index bc058d2453..95727aa60c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/BaseLocalAnalyticsDatabaseSizeMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/BaseLocalAnalyticsDatabaseSizeMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/LocalAnalyticsSuperLargeDatabaseMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/LocalAnalyticsSuperLargeDatabaseMockIntegrationShould.kt index b01a52cddf..a6b291a885 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/LocalAnalyticsSuperLargeDatabaseMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/dbtests/LocalAnalyticsSuperLargeDatabaseMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsAggregatedMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsAggregatedMockIntegrationShould.kt index 3ff629db87..584db4591d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsAggregatedMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsAggregatedMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTest.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTest.kt index 6769a46b1f..875f62441a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTest.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTrackerMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTrackerMockIntegrationShould.kt index 93523a9557..64c7dd2dd9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTrackerMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/BaseLocalAnalyticsTrackerMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedDefaultDataMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedDefaultDataMockIntegrationShould.kt index 48979a49ce..5aaba825fb 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedDefaultDataMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedDefaultDataMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedLargeDataMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedLargeDataMockIntegrationShould.kt index 5a27775958..27cc1fe877 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedLargeDataMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedLargeDataMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedSuperLargeDataMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedSuperLargeDataMockIntegrationShould.kt index e8ce6ed5f8..3a17357ba2 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedSuperLargeDataMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsAggregatedSuperLargeDataMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerDefaultMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerDefaultMockIntegrationShould.kt index 1c2e6a08cc..da29a429a5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerDefaultMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerDefaultMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerLargeMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerLargeMockIntegrationShould.kt index 0d78bf217d..5495b7b2c8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerLargeMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerLargeMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerSuperLargeMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerSuperLargeMockIntegrationShould.kt index 579ba119ef..9bf40625d5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerSuperLargeMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/localanalytics/tests/LocalAnalyticsTrackerSuperLargeMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/arch/helpers/FileResizerHelperShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/arch/helpers/FileResizerHelperShould.java index 8352464458..ec93b70d6f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/arch/helpers/FileResizerHelperShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/arch/helpers/FileResizerHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryCollectionRepositoryMockIntegrationShould.java index ce36785f97..e32f00d0c5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryComboCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryComboCollectionRepositoryMockIntegrationShould.java index a67c83712c..b0d6cd023f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryComboCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryComboCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryModuleMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryModuleMockIntegrationShould.java index ed66204187..4e595e3216 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryModuleMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryModuleMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java index c3b9c53596..526f617337 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionRepositoryMockIntegrationShould.java index c3de878c85..dd12285885 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/category/CategoryOptionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/constant/ConstantCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/constant/ConstantCollectionRepositoryMockIntegrationShould.java index b84e4a394f..fcb6174c56 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/constant/ConstantCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/constant/ConstantCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataapproval/DataApprovalCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataapproval/DataApprovalCollectionRepositoryMockIntegrationShould.java index 64790365dc..ce38a30ce0 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataapproval/DataApprovalCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataapproval/DataApprovalCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataelement/DataElementCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataelement/DataElementCollectionRepositoryMockIntegrationShould.java index afebb996c3..d8b91d5b62 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataelement/DataElementCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataelement/DataElementCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCollectionRepositoryMockIntegrationShould.java index 40196ef8b2..26352ba20f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationCollectionRepositoryMockIntegrationShould.java index 73c2451b02..7d5839afaa 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationObjectRepositoryMockIntegrationShould.java index 5ef36bec2a..95c60ce926 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceCollectionRepositoryMockIntegrationShould.java index f07df18a5b..aa572a6cef 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceSummaryCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceSummaryCollectionRepositoryMockIntegrationShould.java index ec5b1fcdfb..8a3185075d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceSummaryCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetInstanceSummaryCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetModuleMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetModuleMockIntegrationShould.java index 4c87247482..0e8d74dea3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetModuleMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/DataSetModuleMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/SectionCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/SectionCollectionRepositoryMockIntegrationShould.java index 628a702e64..8251aa1bb8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/SectionCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/dataset/SectionCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreCollectionRepositoryMockIntegrationShould.java index 7b7f4d06e0..3e573e1f0d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreObjectRepositoryMockIntegrationShould.java index 07594ea5cd..c7c96bbf53 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datastore/LocalDataStoreObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueCollectionRepositoryMockIntegrationShould.java index e7f77d6e44..4248813f1f 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueObjectRepositoryMockIntegrationShould.java index a287d3048e..2dfc11058e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/datavalue/DataValueObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentCollectionRepositoryMockIntegrationShould.java index c15e8cc617..b52b4ed956 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentObjectRepositoryMockIntegrationShould.java index bb2a934c4e..d52de20de0 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventCollectionRepositoryMockIntegrationShould.java index 9690a3d35b..ba3aeef6c6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventFilterCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventFilterCollectionRepositoryMockIntegrationShould.java index e43b76fa35..2319498d21 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventFilterCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventFilterCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventObjectRepositoryMockIntegrationShould.java index 36d98c59f0..075dca7ba7 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/EventObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/search/EventQueryCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/search/EventQueryCollectionRepositoryMockIntegrationShould.java index c4f5833bda..7218597e1e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/search/EventQueryCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/event/search/EventQueryCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/fileresource/FileResourceCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/fileresource/FileResourceCollectionRepositoryMockIntegrationShould.java index bee2c81041..0e501dca7b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/fileresource/FileResourceCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/fileresource/FileResourceCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictCollectionRepositoryMockIntegrationShould.java index f7ff0a90ae..d9c0b761cf 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java index d7ea04cca9..c67eb4f4d8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypeCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypeCollectionRepositoryMockIntegrationShould.java index 14e5e94383..28b4e2ebf1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypeCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypeCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java index bfc4e8db4d..9f544b85ee 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java index 3da12feb67..13f3ccc1f1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/legendset/LegendSetCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorCollectionRepositoryMockIntegrationShould.java index 9812f08f05..173c6ccb53 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationCollectionRepositoryMockIntegrationShould.java index c1a97190d1..ec1ec947f5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/MaintenanceMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/MaintenanceMockIntegrationShould.java index 08994bdd59..d11c397105 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/MaintenanceMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/maintenance/MaintenanceMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/note/NoteCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/note/NoteCollectionRepositoryMockIntegrationShould.java index 1da29745be..0de2616043 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/note/NoteCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/note/NoteCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionCollectionRepositoryMockIntegrationShould.java index 23afb585a3..9b1881741b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionGroupCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionGroupCollectionRepositoryMockIntegrationShould.java index b89ca9c9b5..9f97974eda 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionGroupCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionGroupCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionSetCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionSetCollectionRepositoryMockIntegrationShould.java index 5b72687541..d546edbb6b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionSetCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/option/OptionSetCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitCollectionRepositoryMockIntegrationShould.java index 7c655a04c9..a97d43b0bc 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupCollectionRepositoryMockIntegrationShould.java index abb11f8dbe..3949ba1632 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelCollectionRepositoryMockIntegrationShould.java index d331daedf2..8535e68424 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/period/PeriodCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/period/PeriodCollectionRepositoryMockIntegrationShould.java index 40b72de3f6..2b6631e8ec 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/period/PeriodCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/period/PeriodCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramCollectionRepositoryMockIntegrationShould.java index d9b7c730ab..896701b607 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java index 4383ec9e13..e3024ad652 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionCollectionRepositoryMockIntegrationShould.java index 82549eadbe..787ed6db95 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleCollectionRepositoryMockIntegrationShould.java index f712c70eab..19c1b5f87d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariableCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariableCollectionRepositoryMockIntegrationShould.java index f705c00d08..506b089520 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariableCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariableCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramSectionCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramSectionCollectionRepositoryMockIntegrationShould.java index 0951681bd4..304c94f505 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramSectionCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramSectionCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageCollectionRepositoryMockIntegrationShould.java index 67fcd013eb..613562d41a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementCollectionRepositoryMockIntegrationShould.java index 29b2893c28..6fb77d8d3a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionCollectionRepositoryMockIntegrationShould.java index 1579e97567..6bc4fac82d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java index 5f8590c31f..bbde8bffae 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsDhisVisualizationsSettingObjectRepositoryMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsDhisVisualizationsSettingObjectRepositoryMockIntegrationShould.kt index 18fcd93005..7612c88499 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsDhisVisualizationsSettingObjectRepositoryMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsDhisVisualizationsSettingObjectRepositoryMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsSettingsObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsSettingsObjectRepositoryMockIntegrationShould.java index 372f217b30..80e13b6cc1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsSettingsObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsSettingsObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsTeiSettingCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsTeiSettingCollectionRepositoryMockIntegrationShould.java index 6d45585ca3..2e8dcb1cf9 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsTeiSettingCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AnalyticsTeiSettingCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java index 1dfa5ea955..635722db0c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/AppearanceSettingsObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/DataSetSettingObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/DataSetSettingObjectRepositoryMockIntegrationShould.java index 8597dd4880..452a432e18 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/DataSetSettingObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/DataSetSettingObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsObjectRepositoryMockIntegrationShould.java index 29c9079cec..85ecf61c79 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/ProgramSettingObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/ProgramSettingObjectRepositoryMockIntegrationShould.java index e912ffc480..13605ecd35 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/ProgramSettingObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/ProgramSettingObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/SynchronizationSettingObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/SynchronizationSettingObjectRepositoryMockIntegrationShould.java index 1e4da75834..f9003f6ce6 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/SynchronizationSettingObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/SynchronizationSettingObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/UserSettingsObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/UserSettingsObjectRepositoryMockIntegrationShould.java index 18ae4789f2..6444d1ab6a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/UserSettingsObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/settings/UserSettingsObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/sms/SmsModuleMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/sms/SmsModuleMockIntegrationShould.java index 16f80cc83d..81473f745a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/sms/SmsModuleMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/sms/SmsModuleMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java index d2b13e872d..84793c051e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueCollectionRepositoryMockIntegrationShould.java index 6a6317f8fe..9e0626c38e 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueObjectRepositoryMockIntegrationShould.java index 8df2dfb600..be7999be24 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValueObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityCollectionRepositoryMockIntegrationShould.java index ebe4dcf10a..5f0c05921c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueCollectionRepositoryMockIntegrationShould.java index 411091aac7..e9bcb702e8 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueObjectRepositoryMockIntegrationShould.java index 6fa971cf0e..3b13d002f5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValueObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceCollectionRepositoryMockIntegrationShould.java index cbbf46449c..e06114eb5b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterCollectionRepositoryMockIntegrationShould.java index 05e3edf1a7..ef25729c8b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceObjectRepositoryMockIntegrationShould.java index 86fd92ed47..352e12365b 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributeCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributeCollectionRepositoryMockIntegrationShould.java index d4bcf86b2d..4b97f3df4d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributeCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributeCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java index 3eeace1af5..d225bb34d3 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/BaseTrackerConflictMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/BaseTrackerConflictMockIntegrationShould.kt index e72efa704e..c83383055c 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/BaseTrackerConflictMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/BaseTrackerConflictMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1000MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1000MockIntegrationShould.kt index 73eb3050eb..36f78db97a 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1000MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1000MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1006MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1006MockIntegrationShould.kt index 75e066d300..cfaa83eab5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1006MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1006MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1007MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1007MockIntegrationShould.kt index 55db971ecc..60b103cd67 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1007MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1007MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1008MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1008MockIntegrationShould.kt index 738fc478db..88e46cd645 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1008MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1008MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1009MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1009MockIntegrationShould.kt index 07260037fb..5e3bc84870 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1009MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1009MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1063MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1063MockIntegrationShould.kt index 2efda6112a..779f9b669d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1063MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1063MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1064MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1064MockIntegrationShould.kt index 61839c7656..413d048495 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1064MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1064MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1069MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1069MockIntegrationShould.kt index 120777c549..0f14dde191 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1069MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1069MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1081MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1081MockIntegrationShould.kt index f3b1897c6c..d9f748dfc5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1081MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1081MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1084MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1084MockIntegrationShould.kt index 26b6839167..eb35b34742 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1084MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1084MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1100MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1100MockIntegrationShould.kt index 77673d2eac..32352d2953 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1100MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1100MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1103MockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1103MockIntegrationShould.kt index 225f179915..c770e7fde5 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1103MockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/E1103MockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/TrackerConflictHelperMockIntegrationShould.kt b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/TrackerConflictHelperMockIntegrationShould.kt index dddcaa41f3..6ea33abbf1 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/TrackerConflictHelperMockIntegrationShould.kt +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/tracker/importer/TrackerConflictHelperMockIntegrationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java index f6886a42e2..ba88cb9d57 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AccountManagerMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AuthorityCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AuthorityCollectionRepositoryMockIntegrationShould.java index b02db8f6f9..0b29504016 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AuthorityCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/AuthorityCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserCredentialsObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserCredentialsObjectRepositoryMockIntegrationShould.java index 9cf30cb494..a06ecd77ba 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserCredentialsObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserCredentialsObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserObjectRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserObjectRepositoryMockIntegrationShould.java index 84984563c8..666d19ee42 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserObjectRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/user/UserObjectRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/validation/ValidationRuleRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/validation/ValidationRuleRepositoryMockIntegrationShould.java index 7141eb0bac..e92c339c39 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/validation/ValidationRuleRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/validation/ValidationRuleRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/visualization/VisualizationCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/visualization/VisualizationCollectionRepositoryMockIntegrationShould.java index bad94406c2..0c8473bb11 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/visualization/VisualizationCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/visualization/VisualizationCollectionRepositoryMockIntegrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2.java b/core/src/main/java/org/hisp/dhis/android/core/D2.java index b098f952d2..64e5e534b6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2.java +++ b/core/src/main/java/org/hisp/dhis/android/core/D2.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Configuration.java b/core/src/main/java/org/hisp/dhis/android/core/D2Configuration.java index 1924d1b951..7d1739327b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Configuration.java +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Configuration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2ConfigurationValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/D2ConfigurationValidator.kt index d739d641b4..4362ce1abc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2ConfigurationValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2ConfigurationValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index aa4288f891..83d9f12734 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/NotClosedObjectsDetector.kt b/core/src/main/java/org/hisp/dhis/android/core/NotClosedObjectsDetector.kt index 239dff5c94..3b3b9df0ae 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/NotClosedObjectsDetector.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/NotClosedObjectsDetector.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsException.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsException.kt index 73c928abc4..dabe794764 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsException.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsException.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt index 399a9f697e..8f05f97e75 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsLegendStrategy.kt @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package org.hisp.dhis.android.core.analytics sealed class AnalyticsLegendStrategy { diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModule.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModule.kt index 281df57e4b..2b1648dbf3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModuleImpl.kt index a9a4dc15a2..2e83cb5bbc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsModuleImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsPackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsPackageDIModule.kt index cba24254d5..3b83583db4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsPackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/AnalyticsPackageDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt index e6d2e88132..20b4e49c91 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/LegendEvaluator.kt @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package org.hisp.dhis.android.core.analytics import javax.inject.Inject diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AggregatedEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AggregatedEntityDIModule.kt index 4b52b3cb30..d09cc869e4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AggregatedEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AggregatedEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt index 9498c90215..75beff5025 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsModel.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepository.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepository.kt index 6873c3984f..5d5f6e0dc6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepository.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsVisualizationsRepository.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsVisualizationsRepository.kt index 425f722f5e..252d1b4fde 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsVisualizationsRepository.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsVisualizationsRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt index e4c07741ce..131396be2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/DimensionalResponse.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt index b72d5d5d9b..f19970a67c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/GridAnalyticsResponse.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelper.kt index df4f60c327..3c352e0ce7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryImpl.kt index 4c5c7cf9a7..94564cbee9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryParams.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryParams.kt index 87499cffb2..a315b6f39a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryParams.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsRepositoryParams.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt index 8c17008a3e..c49908ce58 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelper.kt index db886168fb..1bbfbc4e6f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluationItem.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluationItem.kt index 4a28da7ae7..481b0b6e5d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluationItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluationItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt index 7af0bb287b..db2d2fedc6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceEvaluatorHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt index cf81c27966..2e97135b86 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryImpl.kt index 1dca554baa..ccb2ff0b37 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryParams.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryParams.kt index 95f8be516f..b2b9ca024e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryParams.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsRepositoryParams.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt index 7c27385ed8..ff2b97e9dc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelper.kt index cbc5afeb70..d984d4d423 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluator.kt index 44682372e7..16aeaba5ef 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluatorHelper.kt index 4202a9eb65..1235f2d5da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/AnalyticsEvaluatorHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluator.kt index db56b6d6f3..563102d880 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/DataElementSQLEvaluator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluator.kt index cbcf0eb5e3..abfec9c432 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorHelper.kt index 957a9cfd50..1626d20355 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorEvaluatorHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluator.kt index 42af05e226..fa8816adf5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/IndicatorSQLEvaluator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt index 535ebb219b..5a383a63cc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorHelper.kt index 5bcddb3fac..94c301942c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorEvaluatorHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorSQLEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorSQLEvaluator.kt index cf3c446f34..6101e9d947 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorSQLEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/ProgramIndicatorSQLEvaluator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorContext.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorContext.kt index 10e2b7aee2..ebcf4aeaeb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorContext.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorContext.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorEngine.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorEngine.kt index 035c62b258..27f0b54591 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorEngine.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorEngine.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt index 43b1c5aa63..274b475b4c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorParserUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorSQLEngine.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorSQLEngine.kt index f8b8cc2ba2..6928a3b852 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorSQLEngine.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/IndicatorSQLEngine.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/DataElementItem.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/DataElementItem.kt index 5941fe4cec..aa2701d19d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/DataElementItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/DataElementItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/ProgramIndicatorItem.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/ProgramIndicatorItem.kt index 55baeeccf7..77b1969c9f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/ProgramIndicatorItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/internal/evaluator/indicatorengine/dataitem/ProgramIndicatorItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/AggregatedSamples.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/AggregatedSamples.kt index 5bb22d7e13..6f6da13047 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/AggregatedSamples.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/AggregatedSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/DimensionalResponseSamples.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/DimensionalResponseSamples.kt index 8947026949..3efe23163d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/DimensionalResponseSamples.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/DimensionalResponseSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/GridAnalyticsResponseSamples.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/GridAnalyticsResponseSamples.kt index cbe4f738d4..edfe2601d2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/GridAnalyticsResponseSamples.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/GridAnalyticsResponseSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsRepository.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsRepository.kt index 81476341d4..b446e6000c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsRepository.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsVisualizationsRepository.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsVisualizationsRepository.kt index 7ff25820de..72a273376c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsVisualizationsRepository.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/aggregated/mock/MockAnalyticsVisualizationsRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListParams.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListParams.kt index 054b5da0a3..6fb67a7d41 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListParams.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListParams.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepository.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepository.kt index 867e1d3142..92170fe48a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepository.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt index 2a50675ee1..ff2642d542 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListService.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListService.kt index d68abc0308..35c0481f8a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt index fe0b3d9d72..d3f05e7696 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListServiceImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListEntityDIModule.kt index 77ba6432b6..08a9aea0dd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt index cf3cb190fc..a7553f08df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/analytics/linelist/LineListResponse.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/CookieAuthenticatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/CookieAuthenticatorHelper.kt index d383415ae0..0b66ec75e7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/CookieAuthenticatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/CookieAuthenticatorHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/OpenIDConnectAuthenticator.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/OpenIDConnectAuthenticator.kt index 1f0267b33d..4a83ba9db4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/OpenIDConnectAuthenticator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/OpenIDConnectAuthenticator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticator.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticator.kt index ea09af6b75..7c118b0a94 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/PasswordAndCookieAuthenticator.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/PasswordAndCookieAuthenticator.kt index 5c20fa6b9c..88d8cc026f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/PasswordAndCookieAuthenticator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/PasswordAndCookieAuthenticator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/UserIdAuthenticatorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/UserIdAuthenticatorHelper.kt index f479cba1c0..f5aa10d450 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/UserIdAuthenticatorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/authentication/internal/UserIdAuthenticatorHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt index 2e81397262..3fdb80e27f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallErrorCatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutor.java index d4fc901e34..4d45ff343d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java index 08b86f9138..026757a156 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloader.kt index 05cdcc9445..b6bd995e98 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt index 063d64951b..22b2ea85d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIDownloaderImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt index 721e45d493..56a2d08b2a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIErrorMapper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIExecutorsDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIExecutorsDIModule.java index 21ee87c75c..8142ee7bf0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIExecutorsDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/APIExecutorsDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutor.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutor.kt index 24d2f44cad..0fc9c62c5c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt index 3c654c34d9..ad3aeadbdf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/executors/internal/RxAPICallExecutorImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Field.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Field.java index 7d1349ddd5..09885cd0ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Field.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Field.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Fields.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Fields.java index 39e90426c3..e8c9d07c22 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Fields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Fields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverter.java index e18a205909..3151051668 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterFactory.java index 1c98df84f9..7c2ef08a8d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/NestedField.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/NestedField.java index 0dff676636..026aaca255 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/NestedField.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/NestedField.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Property.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Property.java index 7e8b723a85..a2941595ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Property.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/fields/internal/Property.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Filter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Filter.java index 3858ba9f65..757418e2c4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Filter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Filter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverter.java index d989c995a6..003c06e2ab 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterFactory.java index cd4c6dd707..aca3458130 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/InFilter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/InFilter.java index a02070e7ea..72b4393b4e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/InFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/InFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/SingleValueFilter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/SingleValueFilter.java index 7517be29e4..1e58a1e2d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/SingleValueFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/SingleValueFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Where.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Where.java index cf85aec0c5..bf9671ae95 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Where.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Where.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Which.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Which.java index 14984c3360..87695806bb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Which.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/filters/internal/Which.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/APIClientDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/APIClientDIModule.java index d61e1c1a54..9a0d4e35c9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/APIClientDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/APIClientDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/DynamicServerURLInterceptor.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/DynamicServerURLInterceptor.kt index 681c102ba2..ea3c26fe60 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/DynamicServerURLInterceptor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/DynamicServerURLInterceptor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/OkHttpClientFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/OkHttpClientFactory.java index cc722bd2c0..c2bd619951 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/OkHttpClientFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/OkHttpClientFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/PreventURLDecodeInterceptor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/PreventURLDecodeInterceptor.java index 9d0d86355c..ceeac57a5f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/PreventURLDecodeInterceptor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/PreventURLDecodeInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/RetrofitFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/RetrofitFactory.java index 9ac68c1902..bba4729192 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/RetrofitFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/RetrofitFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLVersionRedirectionInterceptor.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLVersionRedirectionInterceptor.kt index ce75da2ee4..30b7c3da05 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLVersionRedirectionInterceptor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLVersionRedirectionInterceptor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLWrapper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLWrapper.kt index 32a6fabcc6..3fcdc28c36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLWrapper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/ServerURLWrapper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/TLSSocketFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/TLSSocketFactory.java index 40310c9da0..64f5274421 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/TLSSocketFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/internal/TLSSocketFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngine.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngine.kt index 60eeb63faa..1df003868d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngine.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngine.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/Paging.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/Paging.java index a06275e6cc..4ce2fa7eb3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/Paging.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/paging/internal/Paging.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Pager.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Pager.java index e1056ffd92..2acda37715 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Pager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Pager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Payload.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Payload.java index 411d7a4a8b..8511ac99c4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Payload.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/payload/internal/Payload.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/api/ssl/internal/SSLContextInitializer.java b/core/src/main/java/org/hisp/dhis/android/core/arch/api/ssl/internal/SSLContextInitializer.java index f259b32304..6b27dad106 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/api/ssl/internal/SSLContextInitializer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/api/ssl/internal/SSLContextInitializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/D2Cache.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/D2Cache.kt index ca561e2768..16ac3322fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/D2Cache.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/D2Cache.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/ExpirableCache.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/ExpirableCache.kt index e0226c2bc1..1d16c19bc0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/ExpirableCache.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cache/internal/ExpirableCache.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/D2Progress.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/D2Progress.java index 239dae716d..3176d99c7e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/D2Progress.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/D2Progress.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/executors/internal/D2CallExecutor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/executors/internal/D2CallExecutor.java index a1dd82a41b..91ef6886e0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/executors/internal/D2CallExecutor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/executors/internal/D2CallExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCall.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCall.java index 9c6294d8cd..df7d434fc8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactory.java index a00c43a961..f2caff5598 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactoryImpl.java index 3c25a4ee3c..227f26becd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ListCallFactoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ObjectCall.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ObjectCall.kt index 6fe7c868ab..a1ebbb272c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ObjectCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/ObjectCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCall.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCall.kt index 586b8fb265..afe1159e3e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactory.java index dc079558c6..4a474093a6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactoryImpl.java index 435dc3d34d..46b3449b73 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/QueryCallFactoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCall.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCall.kt index 04cb4f0312..0a7dcbb71b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactory.java index d7f938e58a..17519bc924 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactoryImpl.java index e27161de47..e8a4710278 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/factories/internal/UidsCallFactoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/CallFetcher.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/CallFetcher.java index ce3968c850..af58689752 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/CallFetcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/CallFetcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/ListNoResourceWithErrorCatcherCallFetcher.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/ListNoResourceWithErrorCatcherCallFetcher.java index 0b2cacfe70..aab3029e48 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/ListNoResourceWithErrorCatcherCallFetcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/ListNoResourceWithErrorCatcherCallFetcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/PayloadNoResourceCallFetcher.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/PayloadNoResourceCallFetcher.java index c59bdd5d86..41f12e4f86 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/PayloadNoResourceCallFetcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/PayloadNoResourceCallFetcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/UidsNoResourceCallFetcher.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/UidsNoResourceCallFetcher.java index 133922839b..43868e1c9c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/UidsNoResourceCallFetcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/fetchers/internal/UidsNoResourceCallFetcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/CompletableProvider.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/CompletableProvider.java index 022cb6d594..e0faa4c687 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/CompletableProvider.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/CompletableProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/D2ProgressManager.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/D2ProgressManager.java index 2f14fef13e..669d443b2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/D2ProgressManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/D2ProgressManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/EndpointCall.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/EndpointCall.java index 361cd2f35a..84b9c922d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/EndpointCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/EndpointCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/GenericCallData.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/GenericCallData.java index e871fe628d..cb5529963b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/GenericCallData.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/GenericCallData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/SingleProvider.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/SingleProvider.java index 9177b8abd7..9731709497 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/SingleProvider.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/internal/SingleProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/CallProcessor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/CallProcessor.java index a4197a6f0f..3581e485a6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/CallProcessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/CallProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalNoResourceSyncCallProcessor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalNoResourceSyncCallProcessor.java index b926b11fc9..d2eed46b5d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalNoResourceSyncCallProcessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalNoResourceSyncCallProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalResourceSyncCallProcessor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalResourceSyncCallProcessor.java index 9477a4650b..0086fcb56b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalResourceSyncCallProcessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/processors/internal/TransactionalResourceSyncCallProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/BaseQuery.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/BaseQuery.java index 3ebea79951..4cf63185ab 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/BaseQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/BaseQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/EmptyQuery.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/EmptyQuery.java index fd42bc62b6..82153d3b65 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/EmptyQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/EmptyQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/UidsQuery.java b/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/UidsQuery.java index fcd63dfcc3..910e019230 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/UidsQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/call/queries/internal/UidsQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleaner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleaner.kt index cfe753ad6b..40cf5a52eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleaner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleaner.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleanerImpl.kt index 107400e2ce..0c8836aa9c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/CollectionCleanerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/DataOrphanCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/DataOrphanCleanerImpl.kt index 952b375abc..5f28a24af1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/DataOrphanCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/DataOrphanCleanerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt index 46697e0bd9..4bdb06d031 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleaner.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt index 10262a3e94..d31c7e4623 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/LinkCleanerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleaner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleaner.kt index d2632219c0..6f4b7428a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleaner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleaner.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleanerImpl.kt index f760ca3d66..3eb2bba2fc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/OrphanCleanerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/ParentOrphanCleaner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/ParentOrphanCleaner.kt index 5892aed5f4..adabc2ae64 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/ParentOrphanCleaner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/ParentOrphanCleaner.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleaner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleaner.kt index fe06bfe6c9..c63105647d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleaner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleaner.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleanerImpl.kt index 68d5addbe3..bebf11d3f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/cleaners/internal/SubCollectionCleanerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/AppContextDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/AppContextDIModule.java index 19495419c0..af318f25a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/AppContextDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/AppContextDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java index 77006301b3..977f0f45df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2DIComponent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2InternalModules.java b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2InternalModules.java index da102afd99..81870976aa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2InternalModules.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2InternalModules.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2Modules.java b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2Modules.java index f8def3b1b6..6b3128b596 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2Modules.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/d2/internal/D2Modules.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/dateformat/internal/SafeDateFormat.java b/core/src/main/java/org/hisp/dhis/android/core/arch/dateformat/internal/SafeDateFormat.java index 4bad5cf822..02475e9002 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/dateformat/internal/SafeDateFormat.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/dateformat/internal/SafeDateFormat.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java index 23eae8708d..744d3bbfec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseImportExport.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseImportExport.kt index cf86f42487..1406bb316f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseImportExport.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/DatabaseImportExport.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/Transaction.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/Transaction.java index 9fc62604be..f7c468ca48 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/Transaction.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/Transaction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java index 3b1fe1065b..4a5f29bea8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/BaseDatabaseOpenHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java index 251441774d..ba4f881d43 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseAdapterFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDIModule.java index 8f455803a3..8531b02ab2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseExport.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseExport.java index ad29fa2a24..2dff17f689 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseExport.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseExport.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt index 22bac7f65d..f30d6f5811 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseImportExportImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigration.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigration.kt index 15604ae0a5..de1600cb5d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigration.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigration.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt index 95f81e6b89..2fc3503a2a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationExecutor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationParser.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationParser.kt index 0da2bd4de0..53c1ad9b67 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationParser.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/DatabaseMigrationParser.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java index 92c6d99e7d..d8b75f13dc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java index 8db1b8ddeb..9553b36394 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedDatabaseOpenHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedStatementWrapper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedStatementWrapper.java index 02223a9bd1..8a923142d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedStatementWrapper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/EncryptedStatementWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java index 23d3946a9b..35cc15b18f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/ParentDatabaseAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImpl.java index 009e1a42bb..bf44f9c8ee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java index 3abad20dc0..47d2b8e684 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java index a37191e257..5d141f38a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseOpenHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedStatementWrapper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedStatementWrapper.java index 52d9d8490a..264d78f1ff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedStatementWrapper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedStatementWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AccessColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AccessColumnAdapter.java index 37278ad808..450f2beb1c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AccessColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AccessColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AnalyticsTeiWHONutritionGenderColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AnalyticsTeiWHONutritionGenderColumnAdapter.kt index cc0e5e7218..633c01cec4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AnalyticsTeiWHONutritionGenderColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/AnalyticsTeiWHONutritionGenderColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DBCaptureCoordinatesFromFeatureTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DBCaptureCoordinatesFromFeatureTypeColumnAdapter.java index b6f41bdb0a..a348fca66c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DBCaptureCoordinatesFromFeatureTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DBCaptureCoordinatesFromFeatureTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DateFilterPeriodColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DateFilterPeriodColumnAdapter.kt index 94567357f7..b3eef5d988 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DateFilterPeriodColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DateFilterPeriodColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbDateColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbDateColumnAdapter.java index 9aae781cfc..f6f6a67de9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbDateColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbDateColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbFormTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbFormTypeColumnAdapter.java index 42b1aeba35..12831c3c79 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbFormTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbFormTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryColumnAdapter.kt index d22536ecec..1620af2959 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryTypeColumnAdapter.java index e496061d85..3096644470 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbGeometryTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramRuleVariableSourceTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramRuleVariableSourceTypeColumnAdapter.java index 5ee42b439d..11a9f546e1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramRuleVariableSourceTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramRuleVariableSourceTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramTypeColumnAdapter.java index 4bee3671d4..cd29d498f2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbProgramTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbValueTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbValueTypeColumnAdapter.java index eedfbcdb2d..d35bb4ad54 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbValueTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DbValueTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DefaultAccessColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DefaultAccessColumnAdapter.java index e03be7bed8..b4ac17499d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DefaultAccessColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/DefaultAccessColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/EventQueryCriteriaColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/EventQueryCriteriaColumnAdapter.kt index 2cb202d2ca..c02aacd631 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/EventQueryCriteriaColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/EventQueryCriteriaColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/FilterPeriodColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/FilterPeriodColumnAdapter.kt index c843ddda82..1527676a46 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/FilterPeriodColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/FilterPeriodColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerArrayColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerArrayColumnAdapter.java index b9f70672cf..8e9a7e8164 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerArrayColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerArrayColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerListColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerListColumnAdapter.kt index 8880c8d478..f37c8511c1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerListColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IntegerListColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IsColumnNotNullColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IsColumnNotNullColumnAdapter.java index 7e931d6f08..a3a13b6e17 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IsColumnNotNullColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/IsColumnNotNullColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectColumnAdapter.kt index 3306335b08..ce66aa0468 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectListColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectListColumnAdapter.kt index 641899bb1e..2086a808b2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectListColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectListColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectSetColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectSetColumnAdapter.kt index 951a426ad0..bee4e7c389 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectSetColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/JSONObjectSetColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/LeftValidationRuleExpressionColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/LeftValidationRuleExpressionColumnAdapter.java index 6f417e4961..43c61605ed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/LeftValidationRuleExpressionColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/LeftValidationRuleExpressionColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt index cfd0b44d9f..90faaaf15c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/NewTrackerImporterUserInfoColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectStyleColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectStyleColumnAdapter.java index fc958cc40e..986ccf8e48 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectStyleColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectStyleColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectWithUidListColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectWithUidListColumnAdapter.kt index a233e40c79..fd069f9b13 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectWithUidListColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ObjectWithUidListColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEnrollmentColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEnrollmentColumnAdapter.java index 39c6c44f78..e6b03e2e81 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEnrollmentColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEnrollmentColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEventColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEventColumnAdapter.java index 818f1399f6..2bac9b7338 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEventColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemEventColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemTrackedEntityInstanceColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemTrackedEntityInstanceColumnAdapter.java index cb1aaf9946..0a6199dc95 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemTrackedEntityInstanceColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelationshipItemTrackedEntityInstanceColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelativePeriodsColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelativePeriodsColumnAdapter.kt index 02881ddc2c..3af338f60f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelativePeriodsColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RelativePeriodsColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RightValidationRuleExpressionColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RightValidationRuleExpressionColumnAdapter.java index fa890b908e..fd0e10734f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RightValidationRuleExpressionColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/RightValidationRuleExpressionColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/SectionRenderingColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/SectionRenderingColumnAdapter.kt index 6325979328..e70a037d36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/SectionRenderingColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/SectionRenderingColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringArrayColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringArrayColumnAdapter.java index a891652373..c0333b9ad3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringArrayColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringArrayColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringListColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringListColumnAdapter.kt index fd5566918b..8139d40caf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringListColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringListColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringSetColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringSetColumnAdapter.kt index 016e106324..119b7b76a6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringSetColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/StringSetColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ValidationRuleExpressionColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ValidationRuleExpressionColumnAdapter.java index 3c400c1370..13877b4f9a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ValidationRuleExpressionColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/custom/internal/ValidationRuleExpressionColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AccessLevelColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AccessLevelColumnAdapter.java index c72cea9cf0..50353b5ad9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AccessLevelColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AccessLevelColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AggregationTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AggregationTypeColumnAdapter.java index 59ae57ca93..8e342aa002 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AggregationTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AggregationTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsDhisVisualizationScopeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsDhisVisualizationScopeColumnAdapter.java index d341797b1a..065f2fb255 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsDhisVisualizationScopeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsDhisVisualizationScopeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsPeriodBoundaryTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsPeriodBoundaryTypeColumnAdapter.kt index 4f4c41911e..ac5244acca 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsPeriodBoundaryTypeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsPeriodBoundaryTypeColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsTypeColumnAdapter.kt index 485975042f..186220a7bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsTypeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AnalyticsTypeColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AssignedUserModeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AssignedUserModeColumnAdapter.java index 1b0cae94c8..9c9f650d20 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AssignedUserModeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/AssignedUserModeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ChartTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ChartTypeColumnAdapter.java index 56bdbad451..4f3dee0866 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ChartTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ChartTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorCodeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorCodeColumnAdapter.java index be365d3feb..7cb999f06a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorCodeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorCodeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorComponentColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorComponentColumnAdapter.java index dc77ccf13d..f43d71d1c4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorComponentColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/D2ErrorComponentColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataApprovalStateColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataApprovalStateColumnAdapter.java index aa0638774d..bfe0d4d168 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataApprovalStateColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataApprovalStateColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataDimensionItemTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataDimensionItemTypeColumnAdapter.kt index db0f93899e..9aceb7e799 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataDimensionItemTypeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataDimensionItemTypeColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataSyncPeriodColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataSyncPeriodColumnAdapter.java index 830b598eec..2d7d70086d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataSyncPeriodColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DataSyncPeriodColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DigitGroupSeparatorColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DigitGroupSeparatorColumnAdapter.kt index 8a284a38c3..dc5b0c0b2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DigitGroupSeparatorColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DigitGroupSeparatorColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DisplayDensityColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DisplayDensityColumnAdapter.kt index defcefe168..7f0677f07f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DisplayDensityColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DisplayDensityColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DownloadPeriodColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DownloadPeriodColumnAdapter.java index d8eb73f738..4498cb89c4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DownloadPeriodColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/DownloadPeriodColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentScopeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentScopeColumnAdapter.java index f970d4f45e..24bf686399 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentScopeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentScopeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentStatusColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentStatusColumnAdapter.java index 4d36a82e83..5d7c68212b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentStatusColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnrollmentStatusColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnumColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnumColumnAdapter.java index 129956b9b0..1edc7945b0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnumColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EnumColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EventStatusColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EventStatusColumnAdapter.java index ed01939e8a..bd3b234965 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EventStatusColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/EventStatusColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/FeatureTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/FeatureTypeColumnAdapter.java index a7efa5152c..51f68aea52 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/FeatureTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/FeatureTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/HideEmptyItemStrategyColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/HideEmptyItemStrategyColumnAdapter.kt index f48303e1e0..88731374b6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/HideEmptyItemStrategyColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/HideEmptyItemStrategyColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ImportStatusColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ImportStatusColumnAdapter.java index b75a00e63d..5a589577f6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ImportStatusColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ImportStatusColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/LimitScopeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/LimitScopeColumnAdapter.java index 59cc05910e..9484346c9a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/LimitScopeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/LimitScopeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MetadataSyncPeriodColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MetadataSyncPeriodColumnAdapter.java index 91e8a8f2fa..c2a86016ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MetadataSyncPeriodColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MetadataSyncPeriodColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MissingValueStrategyColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MissingValueStrategyColumnAdapter.java index 1240c05167..1f77a2c05a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MissingValueStrategyColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/MissingValueStrategyColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/NoteTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/NoteTypeColumnAdapter.java index fb366fb0dc..6a1cb536f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/NoteTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/NoteTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/OrganisationUnitModeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/OrganisationUnitModeColumnAdapter.kt index bf56815877..45050f546f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/OrganisationUnitModeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/OrganisationUnitModeColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/PeriodTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/PeriodTypeColumnAdapter.java index 9cf095c2b6..e1ae47bd28 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/PeriodTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/PeriodTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ProgramRuleActionTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ProgramRuleActionTypeColumnAdapter.java index 06e50260eb..6c87099b72 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ProgramRuleActionTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ProgramRuleActionTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipConstraintTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipConstraintTypeColumnAdapter.java index e494b15590..a22fb8c30a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipConstraintTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipConstraintTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipEntityTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipEntityTypeColumnAdapter.java index 08f695741d..df7d3c731e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipEntityTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/RelationshipEntityTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ResourceTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ResourceTypeColumnAdapter.java index fa9f7c6004..01bbd8f5fe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ResourceTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ResourceTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt index 3441a96291..a9e4904614 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSMetadataTypeColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt index f96675f2d3..ee12ce8ca1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SMSOngoingSubmissionColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/StateColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/StateColumnAdapter.java index dcef551863..6a24f34912 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/StateColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/StateColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SystemSettingKeyColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SystemSettingKeyColumnAdapter.java index 6497233949..04c59f1f97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SystemSettingKeyColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/SystemSettingKeyColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterObjectTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterObjectTypeColumnAdapter.kt index dcb71df9cd..6d55fed37c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterObjectTypeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterObjectTypeColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterVersionColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterVersionColumnAdapter.kt index baeaf874fa..c9341fbdd5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterVersionColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/TrackerImporterVersionColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleImportanceColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleImportanceColumnAdapter.java index c6c7336f05..b7082d23f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleImportanceColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleImportanceColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleOperatorColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleOperatorColumnAdapter.java index 50a04da24c..ba5b68834b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleOperatorColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValidationRuleOperatorColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValueTypeRenderingTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValueTypeRenderingTypeColumnAdapter.java index 763166374e..2c5cc93f19 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValueTypeRenderingTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/ValueTypeRenderingTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/VisualizationTypeColumnAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/VisualizationTypeColumnAdapter.kt index 58b7e16b5a..3e4d536c70 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/VisualizationTypeColumnAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/VisualizationTypeColumnAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionChartTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionChartTypeColumnAdapter.java index b270eb157a..634f8bbb3c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionChartTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionChartTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionComponentColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionComponentColumnAdapter.java index a4ecdc2533..35d50bb494 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionComponentColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/enums/internal/WHONutritionComponentColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramAttributeWithUidColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramAttributeWithUidColumnAdapter.java index 52148fe329..06a136fb86 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramAttributeWithUidColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramAttributeWithUidColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramDataElementWithUidColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramDataElementWithUidColumnAdapter.java index 4ee5bd062a..3bad64d842 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramDataElementWithUidColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataDimensionItemProgramDataElementWithUidColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataElementWithUidColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataElementWithUidColumnAdapter.java index 16c00d0e11..a2508d1361 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataElementWithUidColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/DataElementWithUidColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/IdentifiableObjectColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/IdentifiableObjectColumnAdapter.java index 3b54306a1e..09bd5ae47d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/IdentifiableObjectColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/IdentifiableObjectColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/ObjectWithUidColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/ObjectWithUidColumnAdapter.java index cd8038a8fc..e0437cc74e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/ObjectWithUidColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/ObjectWithUidColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityInstanceWithUidColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityInstanceWithUidColumnAdapter.java index cd5a795077..b996296160 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityInstanceWithUidColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityInstanceWithUidColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityTypeWithUidColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityTypeWithUidColumnAdapter.java index 9dcb65f6c1..ea00aaf879 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityTypeWithUidColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/identifiable/internal/TrackedEntityTypeWithUidColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/DataSetSyncSettingsColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/DataSetSyncSettingsColumnAdapter.java index 8fd6719f76..040a94e6ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/DataSetSyncSettingsColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/DataSetSyncSettingsColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsPeriodBoundaryListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsPeriodBoundaryListColumnAdapter.java index 01b5a27625..577741f158 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsPeriodBoundaryListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsPeriodBoundaryListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiDataColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiDataColumnAdapter.java index 2f96288f48..928137e38e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiDataColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiDataColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHODataItemColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHODataItemColumnAdapter.java index eda8571e51..000b245956 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHODataItemColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHODataItemColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHONutritionDataColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHONutritionDataColumnAdapter.java index 68f5a33791..9d4d59c59b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHONutritionDataColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAnalyticsTeiWHONutritionDataColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAttributeValuesListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAttributeValuesListAdapter.java index 310ec530de..1476b2617b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAttributeValuesListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreAttributeValuesListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreBooleanColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreBooleanColumnAdapter.java index 4ef55097e4..281f40dfbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreBooleanColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreBooleanColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryDimensionListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryDimensionListColumnAdapter.java index cc9ea128ac..cbf7b31c0a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryDimensionListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryDimensionListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryListColumnAdapter.java index d1ca2fb893..6c6a236fba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionComboListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionComboListColumnAdapter.java index 861302721b..4fdeac5c87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionComboListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionComboListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionListColumnAdapter.java index 81a9a63f7a..26609e4614 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCategoryOptionListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreColumnAdapter.java index bcb5d44429..b8f136c9df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCoordinatesColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCoordinatesColumnAdapter.java index 7ec834691a..9a39a5c8d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCoordinatesColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreCoordinatesColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataDimensionItemListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataDimensionItemListColumnAdapter.java index 58c76cfcbe..fe93624e59 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataDimensionItemListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataDimensionItemListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementListColumnAdapter.java index 8f93fc2057..f113ffda3e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementOperandListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementOperandListColumnAdapter.java index a6b4778a07..13f20d4663 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementOperandListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataElementOperandListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataInputPeriodListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataInputPeriodListColumnAdapter.java index 504cf45e11..a8f8a9aca7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataInputPeriodListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataInputPeriodListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSetElementListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSetElementListAdapter.java index 62da49545b..0f72e29688 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSetElementListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSetElementListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSyncPeriodColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSyncPeriodColumnAdapter.java index f49812fb03..584d40ce67 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSyncPeriodColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreDataSyncPeriodColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEnrollmentListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEnrollmentListColumnAdapter.java index 43516da4e6..5f04dd3ccf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEnrollmentListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEnrollmentListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventDataFilterListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventDataFilterListColumnAdapter.java index 22ed5c92f5..270eab931d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventDataFilterListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventDataFilterListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventListColumnAdapter.java index 6ac474faae..011c828ac3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreEventListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreExceptionAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreExceptionAdapter.java index d6f896bb04..927a4ee6fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreExceptionAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreExceptionAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreFeatureTypeColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreFeatureTypeColumnAdapter.java index d5c345dced..b9cfcada59 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreFeatureTypeColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreFeatureTypeColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreIndicatorListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreIndicatorListAdapter.java index df025a730e..8fc86022e2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreIndicatorListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreIndicatorListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendListColumnAdapter.java index 77af5f9f2e..df3e244f2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendSetListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendSetListColumnAdapter.java index cba8b0f0ab..6029ea3f72 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendSetListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreLegendSetListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreMetadataSyncPeriodColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreMetadataSyncPeriodColumnAdapter.java index 50c918ef4f..78969133db 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreMetadataSyncPeriodColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreMetadataSyncPeriodColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt index d63cc154ab..fa4d22415e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEnrollmentAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt index 350af968e0..f30602c887 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemEventAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt index aa72249cb7..493e04412d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewRelationshipItemTrackedEntityAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTackerImporterTrackedEntityDataValueListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTackerImporterTrackedEntityDataValueListColumnAdapter.java index 1059a0b49b..bb911737b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTackerImporterTrackedEntityDataValueListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTackerImporterTrackedEntityDataValueListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEnrollmentListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEnrollmentListColumnAdapter.java index f53e148ca0..68eb646510 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEnrollmentListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEnrollmentListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEventListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEventListColumnAdapter.java index 62d306f174..b18dc84d09 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEventListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterEventListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterNoteListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterNoteListColumnAdapter.java index ccf06c842e..1ea13f6ba0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterNoteListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterNoteListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterRelationshipItemAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterRelationshipItemAdapter.java index 4559d186fb..16b33f06a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterRelationshipItemAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterRelationshipItemAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterTrackedEntityAttributeValueListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterTrackedEntityAttributeValueListColumnAdapter.java index dede082fac..c77976c16f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterTrackedEntityAttributeValueListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNewTrackerImporterTrackedEntityAttributeValueListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNoteListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNoteListColumnAdapter.java index 68d5647eaf..cef1ee432e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNoteListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreNoteListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidColumnAdapter.java index 9dffb58e2a..b3e32d94c6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidListColumnAdapter.java index 147328c27c..ff6ab91af4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreObjectWithUidListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitGroupListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitGroupListAdapter.java index 5da1b2a12a..f8d9187320 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitGroupListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitGroupListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitListAdapter.java index 93a27cacb1..bce9075af5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreOrganisationUnitListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListAdapter.java index 8075136adb..ca3a44f2af 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListColumnAdapter.java index d5c7b1f378..cad57f3300 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramIndicatorListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleActionListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleActionListAdapter.java index a08baf2590..f05b80b05a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleActionListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleActionListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleListColumnAdapter.java index bc63b99d19..941e287d1f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleVariableListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleVariableListColumnAdapter.java index a4dbcf37b6..83ca1635f2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleVariableListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramRuleVariableListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramSectionListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramSectionListColumnAdapter.java index 8a62197e3b..453887f0f3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramSectionListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramSectionListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageDataElementListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageDataElementListColumnAdapter.java index 83daadd0fd..3ecaea2c58 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageDataElementListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageDataElementListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageListColumnAdapter.java index bd820e9e00..32a38f4e90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageSectionListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageSectionListColumnAdapter.java index 6e0a0db1d4..836262724e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageSectionListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramStageSectionListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramTrackedEntityAttributeListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramTrackedEntityAttributeListColumnAdapter.java index 4fe4b158ff..eb47af38b7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramTrackedEntityAttributeListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreProgramTrackedEntityAttributeListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipConstraintAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipConstraintAdapter.java index 4dee126444..c5609ae8f8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipConstraintAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipConstraintAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipItemAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipItemAdapter.java index bbf8dd4ac3..0f58b75c9b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipItemAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipItemAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipListColumnAdapter.java index 80ac14075f..42bafbbc0d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreRelationshipListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreSectionListAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreSectionListAdapter.java index cd356211bd..165678bff3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreSectionListAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreSectionListAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStateColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStateColumnAdapter.java index 87e345038d..139e647067 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStateColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStateColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStringColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStringColumnAdapter.java index 9a8c752662..6800214e36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStringColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreStringColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeListColumnAdapter.java index 9460de1c96..5436c7b8cb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeValueListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeValueListColumnAdapter.java index 297f7f9da0..aed7600703 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeValueListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityAttributeValueListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityDataValueListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityDataValueListColumnAdapter.java index d646c17cdd..d9df7fe54a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityDataValueListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityDataValueListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityInstanceEventFilterListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityInstanceEventFilterListColumnAdapter.java index 0d20dc4daa..dab43637d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityInstanceEventFilterListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityInstanceEventFilterListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityTypeAttributeListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityTypeAttributeListColumnAdapter.java index d4c3fa5a0e..df24a208f0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityTypeAttributeListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreTrackedEntityTypeAttributeListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserCredentialsAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserCredentialsAdapter.java index 146b200706..f3469fd126 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserCredentialsAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserCredentialsAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserRoleListColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserRoleListColumnAdapter.java index 1b31274c2d..bc8911294e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserRoleListColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreUserRoleListColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreValueTypeRenderingAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreValueTypeRenderingAdapter.java index f8a6087443..f28ac4f1df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreValueTypeRenderingAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/IgnoreValueTypeRenderingAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/ProgramSyncSettingsColumnAdapter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/ProgramSyncSettingsColumnAdapter.java index b1a002086b..cc84be593f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/ProgramSyncSettingsColumnAdapter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/adapters/ignore/internal/ProgramSyncSettingsColumnAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutor.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutor.kt index 5616eddac0..825862f96a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutorImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutorImpl.kt index 95ed29ad98..0c6e8e8ed2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutorImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/cursors/internal/CursorExecutorImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/MultipleTableQueryBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/MultipleTableQueryBuilder.java index 854e479016..61ba6dd11e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/MultipleTableQueryBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/MultipleTableQueryBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/OrderByClauseBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/OrderByClauseBuilder.java index 82d580b881..0a08c6f096 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/OrderByClauseBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/OrderByClauseBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/ReadOnlySQLStatementBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/ReadOnlySQLStatementBuilder.java index 3e03aa1051..3d32231802 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/ReadOnlySQLStatementBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/ReadOnlySQLStatementBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilder.java index 75b8e9aade..04b769fd51 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderImpl.java index 5db1415011..2159f82e56 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/WhereClauseBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/WhereClauseBuilder.java index eea24e094a..05863f2cf0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/WhereClauseBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/WhereClauseBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/sqlorder/internal/SQLOrderType.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/sqlorder/internal/SQLOrderType.java index 0435840ff6..32af4cca71 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/sqlorder/internal/SQLOrderType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/sqlorder/internal/SQLOrderType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableStatementBinder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableStatementBinder.java index 387d5dbf3c..12880c2f44 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableStatementBinder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableStatementBinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableWithStyleStatementBinder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableWithStyleStatementBinder.java index b9d4711432..c873c18589 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableWithStyleStatementBinder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/IdentifiableWithStyleStatementBinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableStatementBinder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableStatementBinder.java index f47c8d95cf..1a916b3d74 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableStatementBinder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableStatementBinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableWithStyleStatementBinder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableWithStyleStatementBinder.java index 0dcbf333e9..b3bbfb520e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableWithStyleStatementBinder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/NameableWithStyleStatementBinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementBinder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementBinder.java index bd6f7e5644..2001996f03 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementBinder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementBinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementWrapper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementWrapper.java index 0a4d62b591..869dd7c6e2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementWrapper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/StatementWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/WhereStatementBinder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/WhereStatementBinder.java index 5ae1b930eb..d2aaa1a4f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/WhereStatementBinder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/binders/internal/WhereStatementBinder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/DeletableStoreWithState.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/DeletableStoreWithState.kt index 476f8cfd58..ef0f78e63b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/DeletableStoreWithState.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/DeletableStoreWithState.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStore.kt index f4ea923ee7..72bdcabbe8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStoreImpl.kt index de2e3cbc1e..583d9d8cfa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDataObjectStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStore.kt index e579d97b69..3603069779 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStoreImpl.kt index 4da3fce445..e9d3adb422 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableDeletableDataObjectStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStore.kt index b1204aeceb..d3f62d0cdf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStoreImpl.kt index 405b938905..0b7c4878fa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/IdentifiableObjectStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStore.kt index aa5be921aa..d726bf5951 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStoreImpl.kt index 0cb13871fa..9300b1cd5f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkChildStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStore.kt index 9392f619a6..4f4c6ad61b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStoreImpl.kt index 0777435195..0c94a91650 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/LinkStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStore.kt index a52331d770..d7321e01f1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStoreImpl.kt index 6f1dc4f166..4c39630ac3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStore.kt index 4ed2756bf3..b5cf5bb61d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStoreImpl.kt index 25144e47a1..685a4bc78e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithUidChildStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStore.kt index d355e54d80..5832ea6123 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStoreImpl.kt index 6b482a08ce..38cc38a927 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ObjectWithoutUidStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStore.kt index 7d3b96e998..b203a11bff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStoreImpl.kt index ea9e5c8e18..2c9e826abe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/ReadableStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStore.kt index 5edf2093bf..ef8a7aedde 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStoreImpl.kt index 270e709762..daef7755d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/SingleParentChildStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreFactory.kt index d80c5a88b1..581530f77a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreUtils.kt index 6baaea5a80..0eb221bff5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreWithState.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreWithState.kt index 1cf4fb82cf..132394361c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreWithState.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/internal/StoreWithState.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/LinkTableChildProjection.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/LinkTableChildProjection.java index 5221e6f457..a6cc622f86 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/LinkTableChildProjection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/LinkTableChildProjection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/SingleParentChildProjection.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/SingleParentChildProjection.java index ed294171db..5573474f6e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/SingleParentChildProjection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/stores/projections/internal/SingleParentChildProjection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/db/tableinfos/TableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/arch/db/tableinfos/TableInfo.java index 13ae773594..c4c2f1bbdc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/db/tableinfos/TableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/db/tableinfos/TableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableEntityDIModule.java index d99ad8a01b..5bfec3434b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableStoreProvider.java b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableStoreProvider.java index eacccff01e..783c8a833a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableStoreProvider.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/IdentifiableStoreProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidEntityDIModule.java index a3b1d0578b..6b8efb2c5f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidStoreProvider.java b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidStoreProvider.java index 8126a33f2e..f270b8a874 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidStoreProvider.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/di/internal/ObjectWithoutUidStoreProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/fields/internal/FieldsHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/fields/internal/FieldsHelper.kt index d0b2250ef3..89803c4e04 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/fields/internal/FieldsHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/fields/internal/FieldsHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/file/IFileReader.java b/core/src/main/java/org/hisp/dhis/android/core/arch/file/IFileReader.java index 931a398455..b21b5c8218 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/file/IFileReader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/file/IFileReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/file/ResourcesFileReader.java b/core/src/main/java/org/hisp/dhis/android/core/arch/file/ResourcesFileReader.java index 71ad54e162..8a81be6cca 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/file/ResourcesFileReader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/file/ResourcesFileReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/DictionaryTableHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/DictionaryTableHandler.kt index 1e17a4f5c7..c0dd468d44 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/DictionaryTableHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/DictionaryTableHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandleAction.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandleAction.kt index 0c73a656af..81b193fe6a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandleAction.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandleAction.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Handler.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Handler.kt index 84467b9a26..624c2b6dd6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Handler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Handler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerBaseImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerBaseImpl.kt index 5d76364708..d54c41813e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerBaseImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerBaseImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerWithTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerWithTransformer.kt index 17daec3ebf..e2ac77be22 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerWithTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/HandlerWithTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt index 7161013dc3..63476ab810 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt index 6fe4b1042d..5dca90c3f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableHandlerImpl.kt index d0a2399b40..d33a519660 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableWithoutDeleteInterfaceHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableWithoutDeleteInterfaceHandlerImpl.kt index ca1b5f70f8..26f4a798a3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableWithoutDeleteInterfaceHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableWithoutDeleteInterfaceHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandler.kt index b9a006d6ab..e8c33eedfc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandlerImpl.kt index ad49241a7e..6f8b451eaf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/LinkHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/ObjectWithoutUidHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/ObjectWithoutUidHandlerImpl.kt index c4e3d5d1cf..b49a544a00 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/ObjectWithoutUidHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/ObjectWithoutUidHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandler.kt index 633a9ee2d9..23ade362ed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandlerImpl.kt index b01a9649f9..589507ed55 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/OrderedLinkHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Transformer.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Transformer.kt index b0de7f6501..4f912614cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Transformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/Transformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/AccessHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/AccessHelper.java index c624f86077..82a2d1d6f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/AccessHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/AccessHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CollectionsHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CollectionsHelper.java index 7f69e9ae4c..a113191cc9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CollectionsHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CollectionsHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelper.java index 49eeeafce1..fa2086f605 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/DateUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/DateUtils.kt index 8c605d8267..868c61bb09 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/DateUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/DateUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResizerHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResizerHelper.java index 86de63c1c9..1d7deaa21c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResizerHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResizerHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt index 6f09fff636..11dd5c017f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/FileResourceDirectoryHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelper.java index 3d26d16622..774766aec0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/Result.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/Result.kt index 163dbec7ca..52feda1072 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/Result.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/Result.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGenerator.java index 29f16c8b24..1bb135d9ce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGeneratorImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGeneratorImpl.java index 2db5dcd9f4..b50c6eee01 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGeneratorImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidGeneratorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidsHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidsHelper.kt index 6317e156dc..ecf59c1e46 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidsHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UidsHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UserHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UserHelper.java index ac95f38700..eb4262cfd1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UserHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/UserHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/BooleanWrapper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/BooleanWrapper.java index ee8dfdbd6e..d65dd1eb87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/BooleanWrapper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/BooleanWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/DataStateHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/DataStateHelper.kt index 0187a9d02c..27c34ed6e5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/DataStateHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/DataStateHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/EnumHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/EnumHelper.kt index e91d04860c..b0a8d9ebf7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/EnumHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/EnumHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/FunctionalCollectionHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/FunctionalCollectionHelper.java index c096088e45..74651ef286 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/FunctionalCollectionHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/FunctionalCollectionHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt index 258780aac5..59f35bc2aa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitioner.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/UrlLengthHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/UrlLengthHelper.kt index 75213a18f1..e56319d652 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/UrlLengthHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/helpers/internal/UrlLengthHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIAttributeDeserializer.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIAttributeDeserializer.kt index 44221516c2..daa02d0258 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIAttributeDeserializer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIAttributeDeserializer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIDataElementDeserializer.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIDataElementDeserializer.kt index f3154e2a71..0282059a5d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIDataElementDeserializer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIDataElementDeserializer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIIndicatorDeserializer.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIIndicatorDeserializer.kt index c0a4e243fe..4c2d176de1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIIndicatorDeserializer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/AnalyticsTEIIndicatorDeserializer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/DateMultiFormatDeserializer.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/DateMultiFormatDeserializer.kt index 37b229570b..5d90bb1a6d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/DateMultiFormatDeserializer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/DateMultiFormatDeserializer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeDeserializer.java b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeDeserializer.java index 3805bec340..b8d4d49db6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeDeserializer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeDeserializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeSerializer.java b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeSerializer.java index d694df57e3..6d06ee5f50 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeSerializer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/GeometryTypeSerializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JSONSerializationDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JSONSerializationDIModule.java index bfef162b70..48b460e76c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JSONSerializationDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JSONSerializationDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JsonElementStringConverter.java b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JsonElementStringConverter.java index e9752df9fb..5f809a8932 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JsonElementStringConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/JsonElementStringConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactory.kt index 80c26655bb..0c1d25681b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/StringJsonElementSerializer.java b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/StringJsonElementSerializer.java index 42afe1759a..5177138fa6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/StringJsonElementSerializer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/json/internal/StringJsonElementSerializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleByUidDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleByUidDownloader.java index be7d212b51..9c9f7c4f1f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleByUidDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleByUidDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleDownloader.java index ddae29e207..f9e07fba74 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/MetadataModuleDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/TypedModuleDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/TypedModuleDownloader.java index f44fc2c04e..4b2654c2ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/TypedModuleDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/TypedModuleDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/UntypedModuleDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/UntypedModuleDownloader.java index 7697417f7f..5f5747802a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/UntypedModuleDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/UntypedModuleDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/WithProgressDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/WithProgressDownloader.java index 9fb44b28f3..84fac6e6b0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/WithProgressDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/modules/internal/WithProgressDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java index e0960bfaa0..3c6065469f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppenderExecutor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppenderExecutor.java index 2585e55cd2..e031bd46e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppenderExecutor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenAppenderExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenSelection.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenSelection.java index 01af1143f7..622fb4d083 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenSelection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/children/internal/ChildrenSelection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/BaseRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/BaseRepository.java index 0f040b8533..fbc26a0ecd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/BaseRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/BaseRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryUpload.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryUpload.java index b1711cd7ca..1a48cafc66 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryUpload.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/CollectionRepositoryUpload.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepository.java index df88982e0f..696458c8a9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepository.java index 5bf59de3ad..bab83fcb71 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyIdentifiableCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyNameableCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyNameableCollectionRepository.java index 7d47eea52c..a0ff5ca916 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyNameableCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyNameableCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithDownloadObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithDownloadObjectRepository.java index a26a0f988d..d2a0988a4a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithDownloadObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithDownloadObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUidCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUidCollectionRepository.java index 82e0535a51..b4d32dc932 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUidCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUidCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUploadCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUploadCollectionRepository.java index 0929c30655..150660273c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUploadCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadOnlyWithUploadCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteCollectionRepository.java index 77889f2c27..e70e3a5f98 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUidCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUidCollectionRepository.java index efa69a592c..6d7455df1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUidCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUidCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUploadWithUidCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUploadWithUidCollectionRepository.java index 5d962c5cb2..c3451243d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUploadWithUidCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/ReadWriteWithUploadWithUidCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseReadOnlyWithUidCollectionRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseReadOnlyWithUidCollectionRepositoryImpl.java index 86ed98d970..4062e95756 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseReadOnlyWithUidCollectionRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseReadOnlyWithUidCollectionRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryFactory.java index 02026ba10f..6091479efb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryImpl.java index fd6a6a3a40..3e94b1ae35 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/BaseRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyCollectionRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyCollectionRepositoryImpl.java index a67fb147d4..a8ce0bcd98 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyCollectionRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyCollectionRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyIdentifiableCollectionRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyIdentifiableCollectionRepositoryImpl.java index 08596bc5d3..365f42256f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyIdentifiableCollectionRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyIdentifiableCollectionRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyNameableCollectionRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyNameableCollectionRepositoryImpl.java index 9ffaa3c89d..8dd147a3e2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyNameableCollectionRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyNameableCollectionRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyWithUidCollectionRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyWithUidCollectionRepositoryImpl.java index 075cf4e8c2..af69955e0b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyWithUidCollectionRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadOnlyWithUidCollectionRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadWriteWithUidCollectionRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadWriteWithUidCollectionRepositoryImpl.java index 426e56c507..a77b609155 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadWriteWithUidCollectionRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ReadWriteWithUidCollectionRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ScopedRepositoryFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ScopedRepositoryFactory.java index a6d725c01e..535f74b5cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ScopedRepositoryFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/collection/internal/ScopedRepositoryFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/di/internal/RepositoriesDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/di/internal/RepositoriesDIModule.java index 31424a2fe0..7f8c15a2b0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/di/internal/RepositoriesDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/di/internal/RepositoriesDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/AbstractFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/AbstractFilterConnector.java index 47b9446b56..26588508fc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/AbstractFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/AbstractFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseAbstractFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseAbstractFilterConnector.java index c89787637e..fe22d31b00 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseAbstractFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseAbstractFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseStringFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseStringFilterConnector.java index 5474e9c71a..42aea46a82 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseStringFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseStringFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseSubQueryFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseSubQueryFilterConnector.java index db8f4a12ff..204827b2fe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseSubQueryFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BaseSubQueryFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BoolFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BoolFilterConnector.java index dd28d4e0a3..c5183d486c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BoolFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BoolFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnector.java index 78452a6844..a6b91324e5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateFilterConnector.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateFilterConnector.kt index 2f07ea29e0..e0a6bc13eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateFilterConnector.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateFilterConnector.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateTimeFilterConnector.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateTimeFilterConnector.kt index a495ed034f..90ae9ff366 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateTimeFilterConnector.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DateTimeFilterConnector.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DeletedFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DeletedFilterConnector.java index 111640c52d..5fea0d4e2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DeletedFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DeletedFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java index d27a60435d..2dbd27a1af 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/DoubleFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EnumFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EnumFilterConnector.java index e9b82e29f4..9afe45fd7f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EnumFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EnumFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqFilterConnector.java index d01578dd58..3707094354 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqLikeItemFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqLikeItemFilterConnector.java index 8b1a966982..01cc7eb58b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqLikeItemFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/EqLikeItemFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/FilterConnectorFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/FilterConnectorFactory.java index 88b209f521..48666e7444 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/FilterConnectorFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/FilterConnectorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IdentifiableFilters.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IdentifiableFilters.java index 1143194485..56add42df8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IdentifiableFilters.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IdentifiableFilters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IntegerFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IntegerFilterConnector.java index 6794b45802..9f0f7ee644 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IntegerFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/IntegerFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ListFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ListFilterConnector.java index 617e7706e4..bd22804f15 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ListFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ListFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/LongFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/LongFilterConnector.java index b66714f16b..967c4259fb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/LongFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/LongFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/NameableFilters.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/NameableFilters.java index 43a1311327..d4d3562fae 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/NameableFilters.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/NameableFilters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/OrganisationUnitFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/OrganisationUnitFilterConnector.java index c29d08915b..7f0e6840d8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/OrganisationUnitFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/OrganisationUnitFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodFilterConnector.java index a6582d07e3..ddbadb573c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodsFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodsFilterConnector.java index b965158cca..7b8bd24084 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodsFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/PeriodsFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedFilterConnectorFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedFilterConnectorFactory.java index 1fd03838e8..13be657cb1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedFilterConnectorFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedFilterConnectorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedRepositoryFilterFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedRepositoryFilterFactory.java index 61afdf9f7f..5cc97d857f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedRepositoryFilterFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ScopedRepositoryFilterFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SimpleDateFilterConnector.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SimpleDateFilterConnector.kt index 67e2049d47..c7ced54044 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SimpleDateFilterConnector.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SimpleDateFilterConnector.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/StringFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/StringFilterConnector.java index a514e181d7..8557a907a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/StringFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/StringFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SubQueryFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SubQueryFilterConnector.java index ef27d77878..022c2c6beb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SubQueryFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/SubQueryFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnector.java index 4adb0d7329..770ad15f9c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ValueSubQueryFilterConnector.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ValueSubQueryFilterConnector.java index 7ff0db41bf..cc07b56875 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ValueSubQueryFilterConnector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/ValueSubQueryFilterConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyObjectRepository.java index fbbbc39f91..4661125c54 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyOneObjectRepositoryFinalImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyOneObjectRepositoryFinalImpl.java index 6b851486fc..5c7ae64c30 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyOneObjectRepositoryFinalImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadOnlyOneObjectRepositoryFinalImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteObjectRepository.java index 42d535863d..048ebd5f3a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteValueObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteValueObjectRepository.java index 4016b1bc25..a03ed9c5a1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteValueObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/ReadWriteValueObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ObjectRepositoryFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ObjectRepositoryFactory.java index c8f429bc8c..15780a689b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ObjectRepositoryFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ObjectRepositoryFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyAnyObjectWithDownloadRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyAnyObjectWithDownloadRepositoryImpl.java index 8419ee5d80..5db6ea39ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyAnyObjectWithDownloadRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyAnyObjectWithDownloadRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyFirstObjectWithDownloadRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyFirstObjectWithDownloadRepositoryImpl.java index 346d806c0b..87f5098cc1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyFirstObjectWithDownloadRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyFirstObjectWithDownloadRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyObjectRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyObjectRepositoryImpl.java index e65cc15fdf..faeb99ffb3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyObjectRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyObjectRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyOneObjectRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyOneObjectRepositoryImpl.java index caf3534c3f..369e99fab6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyOneObjectRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadOnlyOneObjectRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java index 8b09db083e..7021cf3010 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidDataObjectRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidObjectRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidObjectRepositoryImpl.java index 3597d6c334..1b13ac8847 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidObjectRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithUidObjectRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithValueObjectRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithValueObjectRepositoryImpl.java index 987694851e..1bc2331f05 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithValueObjectRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/object/internal/ReadWriteWithValueObjectRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryDataSource.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryDataSource.java index 0d7d8b08bc..4c364fd5ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryDataSource.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryDataSource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryPagingConfig.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryPagingConfig.java index 2307330b80..dd80dc5a58 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryPagingConfig.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/paging/internal/RepositoryPagingConfig.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/BaseScope.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/BaseScope.java index 89a8dc732c..304bfab689 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/BaseScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/BaseScope.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/RepositoryScope.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/RepositoryScope.java index e248a7fc6e..58d7e90418 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/RepositoryScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/RepositoryScope.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/BaseScopeFactory.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/BaseScopeFactory.java index 665ffa20db..be03dd58c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/BaseScopeFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/BaseScopeFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/FilterItemOperator.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/FilterItemOperator.java index 9a9c9a8ad8..b8356c4f78 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/FilterItemOperator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/FilterItemOperator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryMode.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryMode.java index 01d7134fcf..d4a564be05 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryMode.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryMode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeComplexFilterItem.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeComplexFilterItem.java index efb8aa5a5a..dd11a34f2f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeComplexFilterItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeComplexFilterItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeFilterItem.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeFilterItem.java index 78af72066a..7c6815736c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeFilterItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeFilterItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeHelper.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeHelper.java index ea9090529e..fe602d2e4b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeKeyOrderExtractor.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeKeyOrderExtractor.java index 34b23ac6dd..0dc8ebaf42 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeKeyOrderExtractor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeKeyOrderExtractor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeOrderByItem.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeOrderByItem.java index 4ef6775d63..0674467329 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeOrderByItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/RepositoryScopeOrderByItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/WhereClauseFromScopeBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/WhereClauseFromScopeBuilder.java index 72a8dffb51..fdf974d886 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/WhereClauseFromScopeBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/repositories/scope/internal/WhereClauseFromScopeBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidInsecureStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidInsecureStore.java index 26b448b7fb..b8a35f1527 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidInsecureStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidInsecureStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidSecureStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidSecureStore.java index bf357bce5c..d909772336 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidSecureStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/AndroidSecureStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ChunkedSecureStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ChunkedSecureStore.kt index 43afd8f2e3..927ff15056 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ChunkedSecureStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ChunkedSecureStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/Credentials.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/Credentials.kt index fcfedc1c5f..90ae599fea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/Credentials.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/Credentials.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStore.kt index 7b526a4fb2..5c8273b581 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStoreImpl.kt index df137f2147..7a85f7e533 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/CredentialsSecureStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemorySecureStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemorySecureStore.java index 424bc24dc0..392d643432 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemorySecureStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemorySecureStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemoryUnsecureStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemoryUnsecureStore.java index b5cc3fb941..f6f169c4eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemoryUnsecureStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InMemoryUnsecureStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InsecureStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InsecureStore.java index 2a0e31dfae..7c13a3fb6e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InsecureStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/InsecureStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/JsonKeyValueStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/JsonKeyValueStoreImpl.java index 30f372603b..e2df99ba6b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/JsonKeyValueStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/JsonKeyValueStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStorageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStorageDIModule.java index 7e2a630bab..6cf4922500 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStorageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStorageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStore.java index 5635748b08..d64e052055 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/KeyValueStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ObjectKeyValueStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ObjectKeyValueStore.java index d584159f52..75f70acc94 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ObjectKeyValueStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/ObjectKeyValueStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/SecureStore.java b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/SecureStore.java index dfb0265147..f07e3e53f7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/SecureStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/SecureStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/UserIdInMemoryStore.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/UserIdInMemoryStore.kt index 2f4505d828..541c516807 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/UserIdInMemoryStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/storage/internal/UserIdInMemoryStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/Attribute.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/Attribute.java index 886ca7cbeb..8190c08d11 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/Attribute.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/Attribute.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeTableInfo.java index cd0e5bf3a3..7de9eefd63 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValue.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValue.java index 37c62e76c7..98927c3938 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValue.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValueUtils.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValueUtils.java index 673bbd274a..ade684b259 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValueUtils.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/AttributeValueUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLink.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLink.java index 3b21300259..d8be4974a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLinkTableInfo.java index b8d0abd6a7..585eb78aa8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/DataElementAttributeValueLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLink.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLink.java index 5a433d9132..eda22f8eee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLinkTableInfo.java index 3b0cccd61f..194cb0ba3b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramAttributeValueLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLink.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLink.java index 1b6c0fe32b..861a80c591 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLinkTableInfo.java index b2bec2ada1..24f4807ff1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/ProgramStageAttributeValueLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeEntityDIModule.java index ff75706f52..dfecea627e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeFields.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeFields.java index 272411bb0a..2897c94a1b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeModuleWiper.java index 245b810d2c..539005bb8e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributePackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributePackageDIModule.java index 86dcd8f341..80852835dd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributePackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributePackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeStore.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeStore.java index e5503974ac..ec7eb20dff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeValuesFields.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeValuesFields.java index a6a5d11406..243740337f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeValuesFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/AttributeValuesFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStore.java index 52159bf9f5..1a2fd04fdd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/DataElementAttributeValueLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStore.java index 04597e5a62..c81f84cf2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramAttributeValueLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStore.java index e394786620..1dc5399a63 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/attribute/internal/ProgramStageAttributeValueLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/Category.java b/core/src/main/java/org/hisp/dhis/android/core/category/Category.java index 93b99d0b9a..a5b757ce13 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/Category.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/Category.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLink.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLink.java index 3950bfbafb..1a3e24d62f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLinkTableInfo.java index 2ebb63af17..cc57988472 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryComboLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLink.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLink.java index 60d7291015..2138c1a295 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLinkTableInfo.java index fcb58b0800..cc9ab0d6f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCategoryOptionLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCollectionRepository.java index 9f60d23140..76d03160c3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCombo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCombo.java index 96672a7bc9..ba7a100a8c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCombo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryCombo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboCollectionRepository.java index 2bdfd179ec..e549c4d8f1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboInternalAccessor.java index 8c66107043..1d2bd95905 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboTableInfo.java index 26f54cd646..f0b4ba2c75 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryComboTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryModule.java index 109cb806d3..6f70e02932 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOption.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOption.java index 1c6bc0987c..74725cf542 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOption.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOption.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCollectionRepository.java index 3a8f703dda..42b39caada 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCombo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCombo.java index 53b57733a2..e770f692ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCombo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionCombo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLink.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLink.java index bf24abea6a..6861883ef6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLinkTableInfo.java index df8d4708cd..c8f3ba253b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCategoryOptionLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCollectionRepository.java index 68ca3032dd..f9a4b16bc0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboService.kt b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboService.kt index e44640a221..15411bc4e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboTableInfo.java index 7f6e053155..86466a8145 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionComboTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java index 8f05ed1dfb..6738a92982 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java index 82e4a9686a..58ec6ab666 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnits.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnits.java index 9b5ea874a9..a0cc7f34da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnits.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnits.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionTableInfo.java index 4acdfc4bd3..c778a386a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryOptionTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryTableInfo.java index c69f840b7e..60f38d9e8b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/CategoryTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/CategoryTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCall.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCall.kt index 0604a7104b..194dcc67c2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java index 55bda70f41..908c27296b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboEntityDIModule.java index 70a86aacde..0e043ddf52 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStore.kt index bd2ce04a1d..d5be107fdd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryComboLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionChildrenAppender.java index 3fceb0402d..115b45c571 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionEntityDIModule.java index 29450095c0..56ad9d30fb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkPersistor.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkPersistor.kt index 510c5327ec..e8be2d851c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkPersistor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkPersistor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStore.kt index 4e52ddd066..8ea104e313 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryCategoryOptionLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboCall.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboCall.java index 76cf3f696c..b877c78316 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboEntityDIModule.java index a60ae82072..a93b939a05 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboFields.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboFields.java index 7445be7459..ba9bfb60b7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandler.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandler.java index 6613ff6bd5..2b0eb36c28 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboService.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboService.java index 52258c3474..8369f90c38 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboStore.kt index b3de0c50a2..65a77268f1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeeker.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeeker.java index 9120de8bda..7b7f361a5a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeeker.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryComboUidsSeeker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryEntityDIModule.java index 2ede292a75..015932df65 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryFields.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryFields.java index c5b55ae515..020fa91fdf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryInternalModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryInternalModule.java index eb2ffa51b5..404b2fcd91 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryInternalModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryInternalModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleDownloader.kt index 96ed8de1a7..d54ef3bd17 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleImpl.java index 58e9a27d70..62720dc0d9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleWiper.java index d0949de911..1c6fa5fe11 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionCall.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionCall.kt index f3ec13801a..36756c1e0d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionChildrenAppender.java index 3a90770b15..5260347c35 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionEntityDIModule.java index afa432456c..a25e9e0fe4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStore.kt index 341b619a1a..1a62118152 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboCategoryOptionLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboChildrenAppender.java index d3f4da4e74..96976c5ef3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboEntityDIModule.java index f7c266dbbb..0fec44ad42 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboFields.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboFields.java index 4490482125..11b4515d59 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboHandler.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboHandler.java index e8522531d4..20e205660c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStore.kt index abd44ccb67..0a780c1ccb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStoreImpl.kt index a62516061f..699116a0c7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionComboStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionEntityDIModule.kt index 483db825f8..8335f69f47 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionFields.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionFields.kt index 8c57088bea..3a4526dd87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionFields.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionHandler.kt index dc624f4181..79c0463560 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt index 9eb3006233..3b5475cf89 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt index fc38f1e464..4affc085f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt index bc18407750..e0f75966f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt index ca3ec937a5..6108708536 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionOrganisationUnitsCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionService.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionService.kt index 22432662ad..6b4d4593e4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionStore.kt index 3dbdf5b82f..6f141ffeb3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryOptionStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt index 0011c676c7..4ca111701f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryPackageDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryParentUidsHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryParentUidsHelper.kt index c94b3bf841..3e0bb2f611 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryParentUidsHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryParentUidsHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryService.java b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryService.java index 33f2f12dcf..0dd52e0d50 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryStore.kt b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryStore.kt index b4f48dc5c0..40086057ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/category/internal/CategoryStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/Access.java b/core/src/main/java/org/hisp/dhis/android/core/common/Access.java index b6561909ec..ed409d4573 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/Access.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/Access.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/AggregationType.kt b/core/src/main/java/org/hisp/dhis/android/core/common/AggregationType.kt index fd5dd5069c..2b5d0abb8e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/AggregationType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/AggregationType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/AnalyticsType.kt b/core/src/main/java/org/hisp/dhis/android/core/common/AnalyticsType.kt index 8b08e9a618..4267ef5fc8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/AnalyticsType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/AnalyticsType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/AssignedUserMode.java b/core/src/main/java/org/hisp/dhis/android/core/common/AssignedUserMode.java index a7c5f014e3..4374e6c1d8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/AssignedUserMode.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/AssignedUserMode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/BaseDataObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/BaseDataObject.java index 41a1163a28..2661c5474a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/BaseDataObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/BaseDataObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/BaseDeletableDataObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/BaseDeletableDataObject.java index 3ae329196e..595409f093 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/BaseDeletableDataObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/BaseDeletableDataObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java index 811d550518..09f7c0e41e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/BaseIdentifiableObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/BaseNameableObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/BaseNameableObject.java index 655f66a0a8..d1f9bb83b4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/BaseNameableObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/BaseNameableObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/BaseObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/BaseObject.java index 194f2bcd46..1a4991b50f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/BaseObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/BaseObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/Coordinates.java b/core/src/main/java/org/hisp/dhis/android/core/common/Coordinates.java index bbc8765e8d..e74dc9c1cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/Coordinates.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/Coordinates.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/CoreColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/CoreColumns.java index ad182165e2..7c07f11619 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/CoreColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/CoreColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/CoreObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/CoreObject.java index 4686fd3fea..de7f7a49d1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/CoreObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/CoreObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DataAccess.java b/core/src/main/java/org/hisp/dhis/android/core/common/DataAccess.java index 2bc441c242..71b83dc1b0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DataAccess.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DataAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DataColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/DataColumns.java index bf705725e4..3e27fcdee6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DataColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DataColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DataObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/DataObject.java index ec2aa87a6e..79688f7c62 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DataObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DataObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriod.java b/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriod.java index ee710b854c..78577f2cad 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelper.kt index d94b061619..a952ef06bf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DatePeriodType.java b/core/src/main/java/org/hisp/dhis/android/core/common/DatePeriodType.java index de2393339c..95d4176586 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DatePeriodType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DatePeriodType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DeletableColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/DeletableColumns.java index d7bda5f847..ab9dd6a126 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DeletableColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DeletableColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataColumns.java index 2be36453fb..dcee9cd424 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataObject.java index 9d00ada565..5e9c60af43 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/DeletableDataObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java b/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java index 8aa4c6152e..5aa0f3c472 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/FeatureType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/FilterPeriod.java b/core/src/main/java/org/hisp/dhis/android/core/common/FilterPeriod.java index dee801b6dd..7371326a7f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/FilterPeriod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/FilterPeriod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/FormType.java b/core/src/main/java/org/hisp/dhis/android/core/common/FormType.java index 0cb3d08f25..63ca12142b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/FormType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/FormType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/Geometry.java b/core/src/main/java/org/hisp/dhis/android/core/common/Geometry.java index 28ba0dc21c..97b41f4a64 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/Geometry.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/Geometry.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableColumns.java index 4ccadb46bd..108a2dc4be 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableObject.java index d82155ee5a..b0ab3c4afd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableWithStyleColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableWithStyleColumns.java index 832e2c9b2b..c9ae616712 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableWithStyleColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/IdentifiableWithStyleColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/NameableColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/NameableColumns.java index 6abbda587b..2a1d19b824 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/NameableColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/NameableColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/NameableObject.java b/core/src/main/java/org/hisp/dhis/android/core/common/NameableObject.java index 14e0024708..6ae78a4b8c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/NameableObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/NameableObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/NameableWithStyleColumns.java b/core/src/main/java/org/hisp/dhis/android/core/common/NameableWithStyleColumns.java index 7c0f7e2840..784c8acdab 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/NameableWithStyleColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/NameableWithStyleColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectStyle.java b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectStyle.java index 82403f8dee..e5fbaa483f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectStyle.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectStyle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithDeleteInterface.java b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithDeleteInterface.java index 8fe315c5d2..8c26b7adbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithDeleteInterface.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithDeleteInterface.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithStyle.java b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithStyle.java index 4c183020e1..07b75aa163 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithStyle.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithStyle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUid.java b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUid.java index 625c0cfa1a..0cb9d5e2e4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUid.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUid.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUidInterface.java b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUidInterface.java index ff7be25edd..7bd06dc816 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUidInterface.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ObjectWithUidInterface.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/OrganisationUnitFilter.kt b/core/src/main/java/org/hisp/dhis/android/core/common/OrganisationUnitFilter.kt index 6083ec2c1a..5af4cda219 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/OrganisationUnitFilter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/OrganisationUnitFilter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/RelativeOrganisationUnit.kt b/core/src/main/java/org/hisp/dhis/android/core/common/RelativeOrganisationUnit.kt index 3b9924be03..3518467865 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/RelativeOrganisationUnit.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/RelativeOrganisationUnit.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/RelativePeriod.kt b/core/src/main/java/org/hisp/dhis/android/core/common/RelativePeriod.kt index 71a994008b..c4086ccd31 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/RelativePeriod.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/RelativePeriod.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/State.kt b/core/src/main/java/org/hisp/dhis/android/core/common/State.kt index d6b43c531d..4ddcd2495d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/State.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/State.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/StorableObjectWithUid.java b/core/src/main/java/org/hisp/dhis/android/core/common/StorableObjectWithUid.java index 9c0af227ef..11d6b1531f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/StorableObjectWithUid.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/StorableObjectWithUid.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/Unit.java b/core/src/main/java/org/hisp/dhis/android/core/common/Unit.java index 3871720b09..1df4144e9f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/Unit.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/Unit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt b/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt index 25ca2d4a4d..bd267b9546 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRendering.java b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRendering.java index 788f0e3291..749ceeb383 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRendering.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRendering.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingTableInfo.java index 868957541b..f34bfbab61 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRendering.java b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRendering.java index f859225fcc..a1aa7eab50 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRendering.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRendering.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java index 4ce7b9ebff..e6af02498c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueTypeRenderingType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/AccessFields.java b/core/src/main/java/org/hisp/dhis/android/core/common/internal/AccessFields.java index a8d06a7589..e0b63db798 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/AccessFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/AccessFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonModuleWiper.java index 1061875c0b..5eda569803 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java index 57a34e13a0..db4769a552 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/CommonPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataAccessFields.java b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataAccessFields.java index 3bbe920b75..491fa0ad97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataAccessFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataAccessFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagator.kt index 25f30854e2..d21852429c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorImpl.kt index bdd2799c0b..d594a7af1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStatePropagatorImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStateUidHolder.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStateUidHolder.kt index 1870b270ad..1ae9697840 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStateUidHolder.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/DataStateUidHolder.kt @@ -1,3 +1,31 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package org.hisp.dhis.android.core.common.internal data class DataStateUidHolder( diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt index 16d31cef51..86e85f158d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt index 01312ca344..1eb3a32e38 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/objectstyle/internal/ObjectStyleFields.java b/core/src/main/java/org/hisp/dhis/android/core/common/objectstyle/internal/ObjectStyleFields.java index d2ebf5a165..27ff1d88d3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/objectstyle/internal/ObjectStyleFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/objectstyle/internal/ObjectStyleFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingEntityDIModule.java index a3a0b6b17a..0a0b6f6732 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingStore.java b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingStore.java index c94777d43f..0256640b0d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/devicerendering/internal/ValueTypeDeviceRenderingStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingEntityDIModule.java index a9ee1270a3..8f6366deba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandler.java b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandler.java index ddd3d54692..015a19cbdb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/BooleanFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/BooleanFailure.kt index 4e7f786b18..f180eb2d6f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/BooleanFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/BooleanFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/CoordinateFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/CoordinateFailure.kt index c23b438fc2..e4a37964c5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/CoordinateFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/CoordinateFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateFailure.kt index ec07cf21a7..caa453579a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateTimeFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateTimeFailure.kt index 4f1642b507..3cc751c8fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateTimeFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/DateTimeFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/EmailFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/EmailFailure.kt index cbb3493ffd..c72bb0679f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/EmailFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/EmailFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerFailure.kt index c3367d644c..857aa51cc1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerNegativeFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerNegativeFailure.kt index 561b523538..a575c08d3c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerNegativeFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerNegativeFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerPositiveFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerPositiveFailure.kt index ff3a4d2cc8..fdcd3e0389 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerPositiveFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerPositiveFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerZeroOrPositiveFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerZeroOrPositiveFailure.kt index 54114c16bd..16afc36d0a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerZeroOrPositiveFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/IntegerZeroOrPositiveFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LetterFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LetterFailure.kt index f04b65f447..a58796248e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LetterFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LetterFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LongTextFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LongTextFailure.kt index adba1bb8d6..9362459387 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LongTextFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/LongTextFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/NumberFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/NumberFailure.kt index 681cdd7fda..e9f95fe709 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/NumberFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/NumberFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PercentageFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PercentageFailure.kt index 9aceb4e551..8a9b693c51 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PercentageFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PercentageFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PhoneNumberFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PhoneNumberFailure.kt index 4b291084dd..41de8fb8b1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PhoneNumberFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/PhoneNumberFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TextFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TextFailure.kt index d9c05df377..2390949cb8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TextFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TextFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TimeFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TimeFailure.kt index aa3fb58e59..aa492787e6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TimeFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TimeFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TrueOnlyFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TrueOnlyFailure.kt index 1112c01fff..5626e750d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TrueOnlyFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/TrueOnlyFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UidFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UidFailure.kt index 7e64fc6c22..44f01e3207 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UidFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UidFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UnitIntervalFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UnitIntervalFailure.kt index 90e8ed6061..837b1d96da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UnitIntervalFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UnitIntervalFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UrlFailure.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UrlFailure.kt index 88c5af8a85..1ad1702baa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UrlFailure.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/failures/UrlFailure.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidator.kt index bee08e9d5d..51fa6babfe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidator.kt index aeba8d1e50..898ab2cb93 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidator.kt index c488e99032..d83c9a201f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidator.kt index 21b211785e..c6832a101b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidator.kt index 428783b844..d2dc03dce6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidator.kt index c3ac66d395..a0c3898007 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidator.kt index c7c20d631d..29da9e458c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidator.kt index d0e91d562a..8e209724be 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorBase.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorBase.kt index efe23bc9c0..20ebcbef79 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorBase.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorBase.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidator.kt index d6502d6893..6429846fbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidator.kt index fe587712cc..30e1f67c43 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidator.kt index 980784d165..79ed950eba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidator.kt index 312c54d6be..afcde43816 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidator.kt index 016a84f848..50b5bd9be0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidator.kt index f75b68c4f3..7a1e7adcde 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidator.kt index c3856fd5a7..9a2dea6b56 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidator.kt index dcf8b3bd07..9a5b1d914d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidator.kt index 5882d69cb1..ab61d8b6a7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidator.kt index 487dc3d447..6bc69d4ae2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidator.kt index 606a4d1f4e..51603670a7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidator.kt index 44fa402233..027cf9f0f3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidator.kt b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidator.kt index eeced85940..22750c51ee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/Configuration.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/Configuration.java index 513fe2e799..f2e1ddbf1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/Configuration.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/Configuration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationPackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationPackageDIModule.kt index 92436ea445..20521090b0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationPackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationPackageDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStore.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStore.java index 7e0905f68c..d3122a0fc3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationTableInfo.java index c1dabbb95d..e38e9afb1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ConfigurationTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseAccount.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseAccount.java index 36e93cb69a..28f107e214 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseAccount.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseAccount.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationHelper.kt index e8a94e6296..d93810aac3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationInsecureStore.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationInsecureStore.kt index 6b547941db..56c71c9fa5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationInsecureStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationInsecureStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt index 9462b5723b..37baca784b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationMigration.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationTransformer.kt index 049384eeca..cdff5a8a12 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseConfigurationTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordGenerator.java index c8fff5b3d0..ccbcdb6624 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordManager.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordManager.java index 8219a4d167..3795564a98 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseEncryptionPasswordManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt index 102de00766..083e962ab7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseRenamer.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseRenamer.kt index e51dc3649d..4f004530ba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseRenamer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabaseRenamer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java index deb96002f4..f31c3e5975 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DateProvider.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DateProvider.kt index 148bd729da..eaeb2bb305 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DateProvider.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/DateProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt index f25c2ca2c5..be2d30383c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt index 61eb64c486..c2727c8d44 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2Manager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParser.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParser.kt index e9bdb83c3d..c27ff418de 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParser.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParser.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/DatabaseConfigurationInsecureStoreOld.kt b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/DatabaseConfigurationInsecureStoreOld.kt index 5aa2b7bcac..9e253f0169 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/DatabaseConfigurationInsecureStoreOld.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/configuration/internal/migration/DatabaseConfigurationInsecureStoreOld.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/Constant.java b/core/src/main/java/org/hisp/dhis/android/core/constant/Constant.java index b92d060c6c..ffc94a9a76 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/Constant.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/Constant.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantCollectionRepository.java index 6232757511..264ea887d1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantModule.java b/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantModule.java index 342feb7bcf..129114cf3f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantTableInfo.java index 57877fed77..5cacefc304 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/ConstantTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantCallFactory.java index 75b1e238b5..25c19e5219 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantFields.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantFields.java index 42996dbfd4..cd4988d153 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantHandler.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantHandler.java index 31131025c0..e54e9936ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleDownloader.java index 31dae79d1c..3481ca230d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleImpl.java index 2e4db8e67a..0ba9b8570d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleWiper.java index 2e19b8611b..8a43c58196 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantPackageDIModule.java index 985485b0bd..da7d553d84 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantService.java b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantService.java index 2ddd1632af..9010236390 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantStore.kt b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantStore.kt index b6bf0695ae..38484477d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/constant/internal/ConstantStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApproval.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApproval.java index 322555a0bf..d5e454817f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApproval.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApproval.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalCollectionRepository.java index b61893ec42..e8f22e6587 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java index 54c71b3619..20ea2aa999 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalState.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalTableInfo.java index e3440cb925..69b628eef7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/DataApprovalTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalCall.kt index 139733ac05..4b7ccc0006 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalEntityDIModule.java index a8e29d1e30..93a8bbccd4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalFields.java index f3e690a0a8..34d115fac7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalPackageDIModule.java index 2cfe0ac548..78f374d5b5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalQuery.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalQuery.java index 55c182e819..b6bbe8d10f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalService.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalService.java index f08d5c1660..9892f90b62 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalStore.java index d922e9d277..9a3e6a1e5c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataapproval/internal/DataApprovalStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java index 3882068758..6dcdd77a07 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementCollectionRepository.java index 72cab25ca2..575b2e0cc0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementModule.java index 28dcf8195e..c30ca801ef 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperand.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperand.java index 78cb42ce0b..b13725d2d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperand.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperandTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperandTableInfo.java index 9f0e4fada3..d78ce4cfb5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperandTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementOperandTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementTableInfo.java index 2a7b1ab783..09d4cae362 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/DataElementTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementAttributeValueEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementAttributeValueEntityDIModule.java index 7ccdf74f9d..8f7e307c93 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementAttributeValueEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementAttributeValueEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallFactory.java index 1f186442b5..b449ab1f43 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEndpointCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEntityDIModule.java index 40f9cc429d..10d9636167 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java index edf4f78d37..c83d98cdba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java index 77c18ed6a4..4cfcf37730 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java index af99e9cd04..9c49a13123 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java index 2fbb6320e9..d368de2ecc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementLegendSetEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleImpl.java index 375ee15448..1f7a01e821 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleWiper.java index efe60d2367..530c011797 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandEntityDIModule.java index a1a2fb4391..1f1ace0b4a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandFields.java index 260ed80b4d..db6b829079 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStore.java index 7963f58341..9a94ffff96 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementOperandStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementPackageDIModule.java index 81fa7427f0..e146dcfd53 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementService.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementService.java index 2f4d9772ee..b9d86a1d9e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStore.java index b8a44122a9..e1c116e8c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataelement/internal/DataElementStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriod.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriod.java index d0683e2335..a8a22efa51 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriodTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriodTableInfo.java index 1ac1dec378..2fdb3bb1e9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriodTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataInputPeriodTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSet.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSet.java index f8649ab4c7..032494402f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSet.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCollectionRepository.java index 74b84c1510..f90a5294d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistration.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistration.java index a9cfe4e1c7..724c8bdc0b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistration.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationCollectionRepository.java index e9928386d3..9b93e8e25f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationObjectRepository.java index 270cd8e396..d6eb781bd9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationTableInfo.java index 70daf587ea..f337b7b592 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLink.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLink.java index 0326143720..6318a17a0e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLinkTableInfo.java index 14ee59ebe1..a674d10f94 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetCompulsoryDataElementOperandLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetDataElementLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetDataElementLinkTableInfo.java index 434a20d2f6..059fa185dc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetDataElementLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetDataElementLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElement.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElement.java index 6a7db906eb..1f3dd2989d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElement.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElementLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElementLinkTableInfo.java index 00cae7e09a..e478ceed4b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElementLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetElementLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstance.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstance.java index 3889f049d7..03a2506e5a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstance.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstance.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceCollectionRepository.java index f1edbdcc11..5476152887 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummary.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummary.java index a3c790e1a4..4fa9bed200 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummaryCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummaryCollectionRepository.java index dd6f0c7f93..3bef080be6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummaryCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInstanceSummaryCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInternalAccessor.java index 0f8c4373d8..3f9d791b18 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetModule.java index 9fa1199719..79bc276fea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLink.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLink.java index 57bec8025a..9f8debaea8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLinkTableInfo.java index 954733747c..0223bb04ee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetOrganisationUnitLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetTableInfo.java index 2b8c47c091..441a089689 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/DataSetTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/Section.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/Section.java index 83ca5de20b..b922a14f8e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/Section.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/Section.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionCollectionRepository.java index 3592f16eca..451cbbf2e7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLink.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLink.java index a8edd655ad..d2e779d6df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLinkTableInfo.java index 8e450df36d..12f84b893b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionDataElementLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLink.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLink.java index 5bac3eaeb0..e3bbc52023 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLinkTableInfo.java index 4c85329efa..634526451b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionGreyedFieldsLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionIndicatorLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionIndicatorLinkTableInfo.java index e85ddfa54f..0f7aa9d218 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionIndicatorLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionIndicatorLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionTableInfo.java index ddcf10014f..237e072bce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/SectionTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java index eab24901e6..4eee886cfa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodEntityDIModule.java index f71835dec1..26fbcd3763 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodFields.java index a61beb47ae..cc8bd86b86 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStore.java index 95292afa00..24a6a1d610 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataInputPeriodLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCall.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCall.kt index f57746e79d..85b3b1363f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallProcessor.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallProcessor.kt index fa9ca26d0f..2f6509ba51 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallProcessor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationCallProcessor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationEntityDIModule.java index 4335f5b02c..abb336c9f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationFields.java index da539c2dbe..c7303b3833 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandler.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandler.java index f2671eed0c..b2c576394f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPayload.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPayload.java index dd5bffcce9..dae2140ad5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPayload.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPayload.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt index 19e5e03ad7..d323ccba80 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationPostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationQuery.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationQuery.java index 573d09f3e4..6ac215935a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt index ecfead0036..b74d97ba01 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStore.java index 8b1bf81be5..626bdd48c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStoreImpl.java index d01f7d8b75..a480135aa7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandChildrenAppender.java index 4944d71939..fcc54cad48 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandEntityDIModule.java index f1a3f08481..378ae27a99 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStore.java index d3467c9a4a..4ada21b51a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompulsoryDataElementOperandLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStore.java index d66ce53dd2..033ac7ed61 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetDataElementLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementChildrenAppender.java index 73ca352cb3..16e8cae8ae 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementEntityDIModule.java index 05e74cc56c..8070e36dcf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementFields.java index a9d0516f7a..0f49f158f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetElementFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallFactory.java index e092964ac7..d96ae92f3b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEndpointCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java index ac5e270a7c..42f153560c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetFields.java index 680f5211fd..e57ca59520 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandler.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandler.java index 35bd161944..eece9c0cbf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceEntityDIModule.java index 83b4191b7e..fe49b66f68 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSQLStatementBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSQLStatementBuilder.java index a574a612a5..46ad81003f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSQLStatementBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSQLStatementBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceStore.java index 8fec6eb562..aaa30a90cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummarySQLStatementBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummarySQLStatementBuilder.java index c12522a81e..1427803ecd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummarySQLStatementBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummarySQLStatementBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummaryStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummaryStore.java index c5569ca088..77be58275f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummaryStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetInstanceSummaryStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleDownloader.kt index 047dd553cd..2ee780c902 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleImpl.java index d20c11e215..d39ff8b0d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleWiper.java index 2d86e2d86d..db26ecb31a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkEntityDIModule.java index 25a5916bf2..ccb82c4125 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStore.java index f03b8a72da..7b31c186d9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetOrganisationUnitLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetPackageDIModule.java index 96afcc2643..ff1ca7d6e2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetParentUidsHelper.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetParentUidsHelper.java index 109b819a3a..fbcd9ce8b5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetParentUidsHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetParentUidsHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetService.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetService.java index 8e9a2ad162..a34b733d87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetStore.java index 6590b93755..8fe33a7aa5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/DataSetStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementChildrenAppender.java index b53941b641..7c2b98a4a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementEntityDIModule.java index 95bb1b0b17..21b5fbce6b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStore.java index e4c64af222..41a08677f6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionDataElementLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionEntityDIModule.kt index 967fc277af..1d70f24d66 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionFields.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionFields.java index 179632f1df..b4b1ab707c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java index c165cb5b31..11b86a654a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsEntityDIModule.java index 522ee13038..55ae535995 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStore.java index 47cc5f449e..9eab381fe3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionGreyedFieldsLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionHandler.kt index f4620f4501..4489965710 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorEntityDIModule.kt index ab0c61007c..71b09f6ad8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLink.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLink.java index 8e84d037ee..7783c21372 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStore.kt index 75fd6c289f..82306db9b5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorsChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorsChildrenAppender.kt index fa9de2f548..14913efa14 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorsChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionIndicatorsChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionStore.java b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionStore.java index 2e2f68a442..460c2201bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/dataset/internal/SectionStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/DataStoreModule.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/DataStoreModule.kt index fbab9349f7..1e82115215 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/DataStoreModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/DataStoreModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/KeyValuePair.java b/core/src/main/java/org/hisp/dhis/android/core/datastore/KeyValuePair.java index 1a9bc3f43f..6d0c65fb92 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/KeyValuePair.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/KeyValuePair.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreCollectionRepository.java index 29a1f03085..366c802e00 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreObjectRepository.java index 58b3d61864..751547ffc3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreTableInfo.kt index 83ea923fc3..5ffd1cb8c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/LocalDataStoreTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStoreModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStoreModuleImpl.kt index 27c5f38e27..32ef9fa3d8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStoreModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStoreModuleImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStorePackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStorePackageDIModule.kt index 230924bf12..d6dc6d190d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStorePackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/DataStorePackageDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreEntityDIModule.kt index 13068cd50c..9f94f551c5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreModuleWiper.kt index a863c7cf08..ab7bf11cc2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreModuleWiper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt index 250c9b990d..d168828088 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datastore/internal/LocalDataStoreStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValue.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValue.java index 333441cd14..09660a8527 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValue.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueByDataSetQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueByDataSetQueryHelper.kt index 4f392c563a..366d6cc3fe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueByDataSetQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueByDataSetQueryHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueCollectionRepository.java index 79d2e35f04..68f7dfaa63 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflict.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflict.java index a2b19de9d3..8c128b8f71 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflict.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflict.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflictTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflictTableInfo.kt index 6b71154021..f67e9793c7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflictTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueConflictTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueModule.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueModule.java index 054c2f55d8..9fc9927c93 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueObjectRepository.java index a7c511d591..e048b31b0f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueTableInfo.java index f6094575e5..639553399c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/DataValueTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueCall.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueCall.kt index abd545aea3..515d70efbc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictDIModule.kt index b199f5c451..8d5a5bf77f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictParser.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictParser.kt index e037836e29..bb53141003 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictParser.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictParser.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStore.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStore.kt index 2d5175cf72..869140015e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueConflictStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEntityDIModule.java index 548f6e5533..dd73a400ed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueFields.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueFields.java index 5960f1907e..b649a03c02 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueHandler.kt index a69634d29b..1960565df7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandler.kt index ec06516e38..d04734c6ef 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleImpl.java index db7fea14f9..d47cb8ef0f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleWiper.kt index 2432cf5698..3e7b88787a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueModuleWiper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePackageDIModule.java index f39dfb1a1f..34902144ff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt index 21610de266..2b13f315ee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValuePostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueQuery.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueQuery.java index acd96f83f7..6b7ccb4dbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt index 1efa0ace7a..c2b2df3cbc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueSet.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueSet.kt index 03563a1528..9fd5a1bfa1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueSet.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueSet.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueStore.java b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueStore.java index 702d5a3f78..1c67f600f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/DataValueStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictItem.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictItem.kt index 777d1842a0..44e69ef92e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflict.kt index 4244420387..09586546f3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementType37Conflict.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementType37Conflict.kt index 129c837e90..6f06a5e909 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementType37Conflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementType37Conflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflict.kt index e518c25433..c13ef8fdb7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/LegacyDataValueImportConflictItem.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/LegacyDataValueImportConflictItem.kt index a4f62f1785..bf9d00f0cb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/LegacyDataValueImportConflictItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/LegacyDataValueImportConflictItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflict.kt index 1b71d6bcd2..83889a6238 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflict.kt index db5ec0dca9..c3c3095411 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/AggregatedModule.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/AggregatedModule.java index 64e77bbca7..b2dc896ef5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/AggregatedModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/AggregatedModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java index 5225611a1d..2df082b2a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundle.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundle.java index 348a121e65..4f47f66416 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundle.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactory.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactory.java index 03a22187fd..a30c2b549b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleKey.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleKey.java index 15cc2e338c..877040a497 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleKey.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleKey.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataModuleImpl.java index 0a355d3b63..2e09655776 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataPackageDIModule.java index 9c34f1e797..e3ff801316 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSync.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSync.java index 0aecc779f6..e2a426fb71 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSync.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSync.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncHashHelper.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncHashHelper.java index ec6733057f..4b23fc5397 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncHashHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncHashHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculator.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculator.java index 670828aa9f..48004cb669 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStore.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStore.java index d082ee6a47..539d7fb259 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncTableInfo.java index cc78c387a6..e0fa417eeb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/internal/AggregatedModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/internal/AggregatedModuleImpl.java index fc56e7b525..b26bf5b130 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/internal/AggregatedModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/aggregated/internal/AggregatedModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt index c0f03b42c9..cbcb3e7c83 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/MetadataCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataHelper.kt index 8b6b7ec3fb..65f2993c7e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataModuleImpl.java index 8f6fa0064a..62cbcd504d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/domain/metadata/internal/MetadataModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/Enrollment.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/Enrollment.java index 96efcb00b4..d76591934d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/Enrollment.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/Enrollment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentAccess.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentAccess.kt index 824085f568..d227899b3b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentAccess.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentAccess.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCollectionRepository.java index 0f433c8b9b..7d03eccaf2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCreateProjection.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCreateProjection.java index 7e7ff766b0..a70ecde70f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCreateProjection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentCreateProjection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentInternalAccessor.java index 24ef9290b0..228ff14020 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentModule.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentModule.java index da7ffa82f7..bcb33c0dc0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java index 8731193f3f..94a8b1aafa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt index c89c7c6406..b2ed27bd4b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentStatus.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentStatus.java index 9017806e5c..d168907368 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentStatus.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentStatus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentTableInfo.java index c70634ebd5..4143a51f00 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/EnrollmentTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollment.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollment.java index a0b3aefb2b..f4012d2dad 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollment.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt index 4ecb543687..c0c108f9eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/NewTrackerImporterEnrollmentTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentEntityDIModule.java index ab0ab3cf31..4496bb565c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java index 79812ef1ff..1116da2def 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt index 415ef9dc3a..9866fe2cd0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt index 7532f73d05..aad6f87073 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt index 539b306ba0..6441687a11 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleWiper.java index e97eee1d3c..b3d520b8d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPackageDIModule.java index 41a52018dc..a200b2eacd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt index 35786bcd1c..6c256e1a7c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentProjectionTransformer.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentProjectionTransformer.java index 5b480a9586..87691cb732 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentProjectionTransformer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentProjectionTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentService.java b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentService.java index ef7c67fc8b..35e2bf9160 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt index f9ab7339fa..f222874f56 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentServiceImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStore.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStore.kt index 6c5c4212e4..f935c805d2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreImpl.kt index eaf7ec69a4..7488fc4726 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/Event.java b/core/src/main/java/org/hisp/dhis/android/core/event/Event.java index 3363445eb6..6cddc5cd93 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/Event.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/Event.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java index 2cfd3de4af..c2df54df7e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventCreateProjection.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventCreateProjection.java index 95cb489235..04235e073d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventCreateProjection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventCreateProjection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilter.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilter.java index a980a9b98a..55fcd7c8ff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilterTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilterTableInfo.java index fb6d6635d3..1a052074ab 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilterTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventDataFilterTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventDownloader.java index 49561e226c..2d9385226f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventEditableStatus.kt b/core/src/main/java/org/hisp/dhis/android/core/event/EventEditableStatus.kt index 4aff18fef8..5c68e9c7a6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventEditableStatus.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventEditableStatus.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventFilter.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventFilter.java index 22a9ba721c..2326082cff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterCollectionRepository.java index 0784813a22..98c19ea1cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterTableInfo.java index 945a903152..d38cd13a61 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventFilterTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventInternalAccessor.kt b/core/src/main/java/org/hisp/dhis/android/core/event/EventInternalAccessor.kt index a21a5fd761..4ede1dc8d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventInternalAccessor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventInternalAccessor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventModule.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventModule.java index 72c21f1b70..3b95f15682 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventNonEditableReason.kt b/core/src/main/java/org/hisp/dhis/android/core/event/EventNonEditableReason.kt index d3f5a48706..e0a76fe036 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventNonEditableReason.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventNonEditableReason.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java index 96083631b3..499ae828f1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventQueryCriteria.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventQueryCriteria.java index 18961ca5cc..201283c154 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventQueryCriteria.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventQueryCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt b/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt index b11cb02ab9..4032bb54bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventStatus.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventStatus.java index 44714112cd..d3190723b9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventStatus.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventStatus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/EventTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/event/EventTableInfo.java index 189546edd9..977536d044 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/EventTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/EventTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java index c3c2d85860..f73073d3cf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt index 743d78a0bc..f95bb34c56 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/NewTrackerImporterEventTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/DateFilterPeriodFields.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/DateFilterPeriodFields.java index fcf1ee9d65..db8637d500 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/DateFilterPeriodFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/DateFilterPeriodFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterEntityDIModule.java index b3aa2480e0..1beef4357d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterFields.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterFields.java index d09a5dafeb..7e0ca88807 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStore.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStore.kt index 77e75759ab..7c1454505d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDataFilterStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDateUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDateUtils.kt index d01cd87f90..68b1a4483a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDateUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDateUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDownloadCall.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDownloadCall.kt index e2084bc7de..2af21a8f65 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDownloadCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventDownloadCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallFactory.kt index 16cdcaf102..af73a7b2bc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEntityDIModule.java index b525ba6677..5a79ae324c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java index 843778720e..5360a6b960 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterCall.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterCall.java index b8278e340b..d6792ce92f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEntityDIModule.java index 5865f04601..f0f6fcf2c2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java index 72ff43105b..0dbc269fa6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterEventDataFilterChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterFields.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterFields.java index 45c8c439f6..9a45e304ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterHandler.kt index 432fa9f586..975fe1dad7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterService.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterService.java index f7ef500c6c..5d39c76944 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterStore.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterStore.kt index e0aa6df820..7449c21d99 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventFilterStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt index f9f83e8b3b..5d36bc7b98 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt index f1435e56a4..9e29068faf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventImportHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventLastUpdatedManager.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventLastUpdatedManager.kt index f56066b2d8..2b98ec1bdc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventLastUpdatedManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventLastUpdatedManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt index 545e8537e3..5282d7069f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleWiper.java index 8dad560dd2..21f54fe83e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPackageDIModule.java index 7f31bfdb1a..344ad2db20 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPayload.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPayload.java index 829e168e0d..ee5755fa9e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPayload.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPayload.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt index 6d6a780a1c..c8639f29c2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostNoteStore.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostNoteStore.kt index 50aef2dd83..d868838000 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostNoteStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostNoteStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt index 1f66e8a3d7..fc3eea92f2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostParentCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGenerator.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGenerator.kt index a6b826a3d6..dcce6e0f31 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGenerator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostPayloadGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostStateManager.kt index a7ea02c9e0..0705570a75 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPostStateManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventProjectionTransformer.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventProjectionTransformer.java index 7806841a55..34731a54f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventProjectionTransformer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventProjectionTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQuery.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQuery.java index 571c458511..5aa9c993ca 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundle.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundle.java index 6fead12b59..276dcdedec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundle.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactory.kt index 6990178496..f574aebb80 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleInternalFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleInternalFactory.kt index 26bc0d2adb..6e06a3a333 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleInternalFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleInternalFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryCriteriaFields.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryCriteriaFields.java index 1200816bd4..822bd62da7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryCriteriaFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventQueryCriteriaFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventService.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventService.kt index ce17664808..f2f4772127 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt index 03fcf6b5fa..b7181dfcd6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventServiceImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStore.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStore.kt index b2d2fac0c6..1789e747b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStoreImpl.kt index 02cc551322..3dbe8eb8e9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSync.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSync.java index e303e22a97..f50eec2b65 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSync.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSync.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncEntityDIModule.java index 89d683a7fc..8eb01891fb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncStore.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncStore.java index 4cfdab42ad..fd645a42ca 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncTableInfo.java index 26573405ce..4162346992 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventSyncTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapter.kt b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapter.kt index 25aed980ef..f25b03b8ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepository.java index 6c393cd15a..e3565b75a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryEntityDIModule.kt index f327426a08..1885af030d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScope.java b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScope.java index 652b561635..02c96c2622 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScope.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelper.kt index fb559fa731..44d02446a1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderByItem.java b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderByItem.java index c77191e4e1..57822e07ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderByItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderByItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderColumn.java b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderColumn.java index 5e8210630d..635473a655 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderColumn.java +++ b/core/src/main/java/org/hisp/dhis/android/core/event/search/EventQueryScopeOrderColumn.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResource.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResource.java index 89953b14c6..9c74e587e6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResource.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceCollectionRepository.java index 95a1386cdf..608daf3840 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceModule.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceModule.java index b9e5176f42..5767f8697f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceObjectRepository.java index e424fd079f..a6029169c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceTableInfo.java index 835f29f3e8..bf45499116 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/FileResourceTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCall.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCall.kt index 9cb7d2aa7c..7bcbfb323b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallFactory.kt index be76efb09c..9ebcddd3d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceCallFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceEntityDIModule.kt index 37e5acc564..3b970e20f2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt index 6b880f9118..3b7d6efb0f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleDownloader.kt index 3e7d67a956..a72876ec16 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleImpl.kt index ae657af939..f77f302983 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt index 7ba71a1ff5..89347bb70e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceModuleWiper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePackageDIModule.kt index 782a4fe2cf..269a6d3d5a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePackageDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePostCall.kt index 827f0393e6..0c2f40a194 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourcePostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceProjectionTransformer.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceProjectionTransformer.java index 1e13e36d61..146067c51a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceProjectionTransformer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceProjectionTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceResponse.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceResponse.java index f503410752..40568fe702 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceService.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceService.kt index f972901f10..b761f9ba44 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreImpl.kt index 028719c212..5754cab6f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceType.java b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceType.java index 07cc94effd..a31ceacaa5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt index 87cfdf5f5c..2df74d9b3e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/fileresource/internal/FileResourceUtil.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/ImportStatus.java b/core/src/main/java/org/hisp/dhis/android/core/imports/ImportStatus.java index b160272ca4..cd3c736fcd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/ImportStatus.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/ImportStatus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflict.java b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflict.java index ec14785224..760ec7a31d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflict.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflict.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictCollectionRepository.java index 515b7951da..9715bb3252 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java index 12e9340132..259022ebbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerImportConflictTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerJobManager.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerJobManager.kt index 0feda13ae8..fa5279a1d2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerJobManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/TrackerJobManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaries.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaries.java index aac240cbde..0354abf74a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaries.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaries.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummary.java index 37b4ccb64f..c865b7ff57 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaryHelper.kt index 8eaa6b92b7..ad26438c9d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/BaseImportSummaryHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummary.java index 4a01d498ba..b354156372 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java index 662297d0c0..4d1583d7a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummaries.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummaries.java index 98820f840e..c87f64226b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummaries.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummaries.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummary.java index 2d3d612ff1..0d67fcef8f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt index e6dd966029..2986f1e981 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EnrollmentWebResponseHandlerSummary.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummaries.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummaries.java index ffe1f4abcc..b308524f42 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummaries.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummaries.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummary.java index f85f0ce841..68a5bd41d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventImportSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventWebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventWebResponse.java index 400e7d193f..10a69f1d4e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventWebResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/EventWebResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/HttpMessageResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/HttpMessageResponse.java index 1fe9efd436..44633250e6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/HttpMessageResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/HttpMessageResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportConflict.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportConflict.java index 83d7082c0a..85a15c95bb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportConflict.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportConflict.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportCount.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportCount.java index 3333c2b858..feed43280e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportCount.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportCount.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModule.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModule.java index b0044063b0..c3c6b36465 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleImpl.java index fd802aa9cc..819e0c5109 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleWiper.java index c55d95ff57..c3278241cc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportPackageDIModule.java index 20f2fe5bd5..f21684a18b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummaries.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummaries.java index 375678e0f6..caba486380 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummaries.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummaries.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummary.java index 9cd93062e7..9e1ddb35a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ImportSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt index 2eb4dca337..1e02a80e8f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/ItemsWithFileResources.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteSummary.java index df18032ff8..b06bd72efd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponse.java index 5135964b2f..d8ad5c5bba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummaries.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummaries.java index 86400ceaf2..7ea4191b36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummaries.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummaries.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummary.java index 1c365ec3e0..9d19b2ddd0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipImportSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponse.java index 3584f38aa2..c994c0477c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaries.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaries.java index b90711bc9d..598831aa6d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaries.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaries.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummary.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummary.java index f035d13242..430fd375d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponse.java index b51d249d12..b857507cb9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt index bd346ae362..9851fd5d6e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt index 3c29e52b87..f8bce85aaf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseHandlerSummary.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictEntityDIModule.java index a251d4941f..86c99c4636 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictParser.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictParser.kt index c34e971395..8f50a8e795 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictParser.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictParser.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStore.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStore.kt index ae3329888a..526dfe9f60 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreImpl.java index a330535812..eed89bd198 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/TrackerImportConflictStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/WebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/WebResponse.java index 3719ae753f..079dade74a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/WebResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/WebResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflict.kt index 1cc7dd057d..6bcc7869a3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflict.kt index eebe6d4bfc..2ddbda2472 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflict.kt index 3c40128a37..9b19074950 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflict.kt index ed41ac3fd7..b1aa98e69a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflict.kt index a25fa56227..498fb62338 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflict.kt index 6aab627c1b..e81de2e13b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflict.kt index b2b6b7b482..3eb9905048 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflict.kt index 95e1486965..48d34da82d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflict.kt index 1e508a323d..6f813071a8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflict.kt index 72e216296b..5d2b26e353 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflict.kt index 68354be95b..2f682d8d31 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflict.kt index 2c92acaedf..6671b0fd0f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflict.kt index b81a28ee49..020fa09914 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflict.kt index b02d9fb473..ee460df48e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflict.kt index 5969a6a963..bd56a1d0ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflict.kt index c1788d4bff..4805c44595 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflict.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflict.kt index 6af8320dc4..34d73573d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflict.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflict.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItem.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItem.kt index f3adf064ab..818303b8a3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItemContext.kt b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItemContext.kt index 4aced5c2e6..5a5c6747ba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItemContext.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackerImportConflictItemContext.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLink.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLink.java index 2ac9ba3a28..0a26aaeea9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLinkTableInfo.java index 9dae06ac45..584e4453d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/DataSetIndicatorLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java index 4837bec51b..adc83b6c7d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/Indicator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorCollectionRepository.java index 222f34ba91..fbeb9bd062 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorLegendSetLinkTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorLegendSetLinkTableInfo.kt index c03da81cee..03b55e70dd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorLegendSetLinkTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorLegendSetLinkTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorModule.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorModule.java index 625c6ded47..f30175db20 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTableInfo.java index 804584d4b4..7b513ecd0a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorType.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorType.java index 4b7ded6aff..2e911799e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeCollectionRepository.java index cbe2cbbb3f..947ca2c4a9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeTableInfo.java index 8b2ecdf697..60b00316d9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/IndicatorTypeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngine.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngine.kt index 0f08a75022..e0992c5934 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngine.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngine.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngineImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngineImpl.kt index e3d05e3a93..1eac370488 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngineImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEngineImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluator.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluator.kt index e654b57616..e441bf4995 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/IndicatorEngineEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/IndicatorEngineEntityDIModule.kt index d62ece44a4..9aa00b29b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/IndicatorEngineEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/IndicatorEngineEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java index c8ce26d416..66c157cf55 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorEntityDIModule.java index 1aff056451..8c7206f2fe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStore.java index 60f10b7ef4..09b478cb6e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/DataSetIndicatorLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEndpointCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEndpointCallFactory.java index fafa511927..9b8fb183e6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEndpointCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEndpointCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEntityDIModule.java index c606941083..54407fa170 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java index da815ef30c..1b5b073506 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt index d60a8789b6..b09c85bca6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt index 8312324741..f78c90b74b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorLegendSetChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleDownloader.kt index d047a4e4d2..08715b41cc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleImpl.java index 8216557174..852e744cd7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleWiper.java index bb4ac59a6b..7660d0a4cb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorPackageDIModule.java index caa921daeb..e52af0046a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorService.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorService.java index 3472d4beb7..031bcadff8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStore.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStore.java index 264452d8a9..cf99812afc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEndpointCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEndpointCallFactory.java index 199990225d..7fc314fdde 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEndpointCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEndpointCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEntityDIModule.java index 823aa1c52c..b8f3191a79 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeFields.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeFields.java index 22f492bac0..ebaf047849 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeService.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeService.java index 988729138b..5acac1260e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeStore.java b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeStore.java index c067d226b7..237ebac159 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorTypeStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorUidsSeeker.kt b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorUidsSeeker.kt index 5375889aec..8193f783ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorUidsSeeker.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/indicator/internal/IndicatorUidsSeeker.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLink.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLink.java index f74bab2931..a2339d9081 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkTableInfo.java index 269274d7f7..9670498e60 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/DataElementLegendSetLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLink.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLink.java index 2625fce67f..8e58afaf9c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/IndicatorLegendSetLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/Legend.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/Legend.java index f1146a6afd..047fedbc68 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/Legend.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/Legend.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendCollectionRepository.java index ead2e80639..e969cb2a90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSet.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSet.java index b14173848b..8dcd7603b4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSet.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetCollectionRepository.java index 5911700498..18ffc54078 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetModule.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetModule.java index ca3bc9993b..31cd6e7ef9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetTableInfo.java index fc0a2641d6..ab218bd35a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendSetTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendTableInfo.java index 98a5e5142e..deb0aac10d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/LegendTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLink.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLink.java index 0c40568e99..fdfc8c3e7c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkTableInfo.java index 6259b4f806..bd1a255bc3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/ProgramIndicatorLegendSetLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/DataElementLegendSetLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/DataElementLegendSetLinkStore.java index 45a57f2a3a..acaa37431c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/DataElementLegendSetLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/DataElementLegendSetLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt index 25d071ad31..e2572097d6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetLinkStore.kt index 0a9f2ba7bf..f900a28ed4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/IndicatorLegendSetLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java index 7dc241f1e4..5f16c35c9b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendEntityDIModule.java index 16e1f88c99..dd3b9ea2d6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendFields.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendFields.java index 33eaecb2b5..2d584f654c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java index b98506701d..738515ecc5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetEntityDIModule.java index f282e39b81..b9e078cd39 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java index d1ec418f35..03b353a71c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandler.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandler.java index 9a673663fb..45ddd03a3c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleImpl.java index 2a9e649ec5..74e6882444 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleWiper.java index 26735e4da9..4f9124ab2d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStore.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStore.java index aac0a5dad5..202dfafc9c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendSetStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendStore.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendStore.java index d8b3a2be14..afd36f9b03 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/LegendStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/ProgramIndicatorLegendSetLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/ProgramIndicatorLegendSetLinkStore.java index 8402fcc80d..1971b2dc68 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/ProgramIndicatorLegendSetLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/legendset/internal/ProgramIndicatorLegendSetLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2Error.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2Error.java index 6418531b53..aed1ef09b4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2Error.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2Error.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java index 3041757c74..231f04c08f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCollectionRepository.java index ac3ac42051..c44faa3f2a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorComponent.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorComponent.java index c36ad79d94..53fcde0f45 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorComponent.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorComponent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorTableInfo.java index 4af349da11..f71762814d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/D2ErrorTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolation.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolation.java index 62256f18cf..74a6969c19 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolation.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationCollectionRepository.java index 7433f90d26..939fee98df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationTableInfo.java index 1ad4827931..cc5b2a2c20 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/ForeignKeyViolationTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/MaintenanceModule.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/MaintenanceModule.java index 25589fef48..95ed8e74ad 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/MaintenanceModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/MaintenanceModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsService.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsService.java index 9062ddf153..c55a49f27c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorEntityDIModule.java index 5d335d1ff8..352078c2e9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStore.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStore.java index 4e90295906..ae6dd191f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/D2ErrorStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleaner.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleaner.java index 5c5b4778cf..6cc7d76a95 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleaner.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleaner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerImpl.java index 635ba57140..0bba022e42 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyCleanerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationEntityDIModule.java index fde0525ab3..f3d81ca62f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStore.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStore.java index df7cf20647..4fdc7443fa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/ForeignKeyViolationStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleImpl.java index 8b866d3538..abb704040a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleWiper.java index 76f046163e..0ecf72c408 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenanceModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenancePackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenancePackageDIModule.java index 5ff94bccda..16eb60de1d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenancePackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/maintenance/internal/MaintenancePackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2Dispatcher.java b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2Dispatcher.java index 6d699373ba..45e77ea043 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2Dispatcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2Dispatcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java index 63d3ce56b4..d76b3afb59 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/Dhis2MockServer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/ResponseController.java b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/ResponseController.java index ea03a2f407..94e6f0ae83 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/ResponseController.java +++ b/core/src/main/java/org/hisp/dhis/android/core/mockwebserver/ResponseController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNote.java b/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNote.java index fe7deee173..ca2b99d938 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNote.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNote.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNoteTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNoteTransformer.kt index 4a06511cce..e5b34d9cb6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNoteTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/note/NewTrackerImporterNoteTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/Note.java b/core/src/main/java/org/hisp/dhis/android/core/note/Note.java index d91ec82079..01e812ed87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/Note.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/Note.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/NoteCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/note/NoteCollectionRepository.java index 22180203eb..7d8bfd83f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/NoteCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/NoteCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/NoteCreateProjection.java b/core/src/main/java/org/hisp/dhis/android/core/note/NoteCreateProjection.java index 1071421839..51e32f88ee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/NoteCreateProjection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/NoteCreateProjection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/NoteModule.java b/core/src/main/java/org/hisp/dhis/android/core/note/NoteModule.java index c5ea0fe0d7..a15147e131 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/NoteModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/NoteModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/NoteTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/note/NoteTableInfo.java index 78a18f18f5..2d02b0b942 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/NoteTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/NoteTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java index 4e9eaac7b7..af800f3f62 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteDHISVersionManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteEntityDIModule.java index e37a395eef..4f96ebcdcd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteFields.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteFields.java index d1e9df82b9..5997f5a146 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java index 4a639d8356..85c503ae5e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEnrollmentChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEventChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEventChildrenAppender.java index dcb9184d6a..da6a6f2753 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEventChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteForEventChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteModuleImpl.java index aa408e2058..c3915f9931 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NotePackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NotePackageDIModule.java index 3fbfd8e275..87a2a7af36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NotePackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NotePackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteProjectionTransformer.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteProjectionTransformer.java index 42f18943d4..02a9beca08 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteProjectionTransformer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteProjectionTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteStore.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteStore.java index 8512e3c23d..67a7678a02 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteUniquenessManager.java b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteUniquenessManager.java index 819cae9364..03049a17c1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteUniquenessManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/note/internal/NoteUniquenessManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/Option.java b/core/src/main/java/org/hisp/dhis/android/core/option/Option.java index dcbfe63f63..4b7865a1be 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/Option.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/Option.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionCollectionRepository.java index 5d1f0b8e7b..25c1f19775 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroup.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroup.java index e887c109a6..65b7811966 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroup.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupCollectionRepository.java index 1091da6bb7..61085d4af6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLink.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLink.java index ba0e3d4c19..c298d0109f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLinkTableInfo.java index 3e882976e9..333afdab87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupOptionLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupTableInfo.java index 78cdb18b71..158bcccdd3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionGroupTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionModule.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionModule.java index c0040dd2d6..c6b4546435 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionSet.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionSet.java index 1c9bb216aa..e8dceff8f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionSet.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetCollectionRepository.java index 4ad42d981c..02e9812d72 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetTableInfo.java index 2536349fca..4362c14a8c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionSetTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/OptionTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/option/OptionTableInfo.java index 71769c8fa1..14e9a57f81 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/OptionTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/OptionTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionCall.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionCall.java index e1fc02bfaf..4f99059661 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionEntityDIModule.java index f4b81e5305..8f60576273 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionFields.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionFields.java index 90adf64e9f..58b23ad127 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java index 35cf780067..f6804118a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupEntityDIModule.java index 585b0ba96b..2e18f20ec0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupFields.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupFields.java index 1541dcd760..db191661ee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupHandler.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupHandler.java index d5dedab841..16c06f1836 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java index 5eb11dbb37..56352f2931 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionEntityDIModule.java index 2cc51e14d6..696133e34b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStore.java index e6a41383cd..457e2e5a4b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupOptionLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupService.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupService.java index d97cb81e15..3cea121505 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupStore.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupStore.java index c7ea7d7394..013755ab6b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionGroupStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionHandler.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionHandler.java index 959ced8a92..32df2c8d72 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleImpl.java index 34b99ab060..98b02f0228 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleWiper.java index d9cd770372..7127fb0b1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionPackageDIModule.java index c20fe1bd33..f58e85e943 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionService.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionService.java index 48fb5eca9a..cfe2e3cf76 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetCall.kt b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetCall.kt index 02084d14bf..a0866e1d08 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetEntityDIModule.java index 7f7fefa217..16a6e24d95 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetFields.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetFields.java index 818356af04..dc037a85c3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetService.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetService.java index 3e3b10b410..0a32c20da3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetStore.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetStore.java index ddeb31e60b..621a8b5b1c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionSetStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionStore.java b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionStore.java index 91a0d6619b..a893410587 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/option/internal/OptionStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnit.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnit.java index 2402165be4..be62c773c1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnit.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnit.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitCollectionRepository.java index 4f28cb0c24..3ca247a315 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroup.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroup.java index 77e0578d0e..00fb8fe580 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroup.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupCollectionRepository.java index cb1a701c81..8d9e8fce5d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupTableInfo.java index a3363e9f91..0a1def305e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitInternalAccessor.java index 29d087631c..caa46aecc9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevel.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevel.java index f32ca78aa5..2ffce62c87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevel.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelCollectionRepository.java index 490801870d..d2c964f520 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelTableInfo.java index 0c16caca8a..6028078e7f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitMode.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitMode.java index c1821c6b38..f5103ee6f1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitMode.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitMode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitModule.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitModule.java index b9e1bc6b4f..fd70118e11 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLink.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLink.java index 7e81c4d3fe..a59f5d1835 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLinkTableInfo.java index b10d440a7e..fd93745f75 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitOrganisationUnitGroupLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLink.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLink.java index 4c29b1afee..a9861d3aea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLinkTableInfo.java index 6622eff094..948044ff40 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitProgramLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitService.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitService.kt index 04887df9ef..fa7340923c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTableInfo.java index 9d106e4f28..b2623c8a69 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTree.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTree.java index 9a0aa813e7..ea8bcac147 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTree.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTree.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCall.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCall.java index def77af6fd..e4bfe8020e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java index a040c3a323..4c2cc28f8d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDataSetChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGenerator.java index b53a69eb89..87cc302d7c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathTransformer.kt index 7b89d0f1e5..9aa63db66c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitEntityDIModule.java index e85ac64b6c..df2f0ccd60 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitFields.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitFields.java index b8518b437b..dc7e1f0a5a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupEntityDIModule.java index 033f9ecba6..5fb0999231 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupFields.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupFields.java index 1c345ea245..ad2629054e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStore.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStore.kt index 19b8c4d146..cb8d448d84 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitGroupStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandler.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandler.java index 4d8db6ee67..13490498b5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerImpl.java index 6181321069..8dc594b204 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEndpointCall.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEndpointCall.java index 4859697e22..75d03a5cf6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEndpointCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEndpointCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEntityDIModule.java index 599206c0da..b9f443ad4d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelFields.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelFields.java index cbd662b145..2fa2f00fc5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelService.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelService.java index 0c00f0da57..87b2f0549a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStore.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStore.kt index ce33b82e37..d15497c4d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitLevelStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt index 4176c531c4..15793949fe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleImpl.java index 67f8e81393..01760b9a63 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleWiper.java index d4a60ea051..75a2eadc5f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkEntityDIModule.java index db184f0101..00a210d6c3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStore.kt index 342712e6ec..9244c4fbf1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupProgramChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupProgramChildrenAppender.java index 9621dcbcb4..eff545aa77 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupProgramChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitOrganisationUnitGroupProgramChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitPackageDIModule.java index 4810f6f0ca..e17ab50bbb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramChildrenAppender.java index 52525bc772..9025d2558a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkEntityDIModule.java index 190affb5da..07f191c8b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStore.java index 918e2539f6..65e8f8e6ae 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitProgramLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitService.java b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitService.java index 34eee73180..0a7c40719b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStore.kt b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStore.kt index 0c8eb47e80..f1f9de927c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java index f59572ccd8..8e06afc29a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonExpressionVisitor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonParser.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonParser.java index 7c4b53a8de..52961d67ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonParser.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/CommonParser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItem.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItem.java index 2772667e4e..f6aa1fd379 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItemMethod.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItemMethod.java index 8fb9158209..3584ac2670 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItemMethod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionItemMethod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ParserUtils.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ParserUtils.java index 00f2404199..a42b004528 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ParserUtils.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/ParserUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionFirstNonNull.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionFirstNonNull.kt index 133203edbb..ab33a00611 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionFirstNonNull.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionFirstNonNull.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatest.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatest.kt index eb0e78edba..3087c718c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatest.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatestOrLeast.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatestOrLeast.kt index 787e82f514..77f793207d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatestOrLeast.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionGreatestOrLeast.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIf.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIf.kt index de884fa0c2..6b23c6010c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIf.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIf.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNotNull.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNotNull.kt index b199bb6751..027c8ac116 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNotNull.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNotNull.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNull.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNull.kt index 2a09d1034d..993773cb85 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNull.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionIsNull.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLeast.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLeast.kt index bea30dd592..0562785bce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLeast.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLeast.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog.java index c67bb93141..7c436359ba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog10.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog10.java index f7fad0365b..238a7fe0cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog10.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/function/FunctionLog10.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/literal/RegenerateLiteral.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/literal/RegenerateLiteral.java index 183784fe44..39af708dcb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/literal/RegenerateLiteral.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/literal/RegenerateLiteral.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareEqual.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareEqual.java index e0c18e4635..cfc79ef051 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareEqual.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareEqual.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThan.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThan.java index 3e98a06842..5ce0c4862f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThan.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThan.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThanOrEqual.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThanOrEqual.java index d6456aa35d..a00210ba9a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThanOrEqual.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareGreaterThanOrEqual.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThan.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThan.java index e6a06ae3ca..271f981a14 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThan.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThan.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThanOrEqual.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThanOrEqual.java index d95a0bb750..e4a35fc606 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThanOrEqual.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareLessThanOrEqual.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareNotEqual.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareNotEqual.java index 8846488e55..c7585d210f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareNotEqual.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorCompareNotEqual.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorGroupingParentheses.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorGroupingParentheses.java index 05f66c1ce5..c695f81e25 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorGroupingParentheses.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorGroupingParentheses.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalAnd.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalAnd.java index e49db09572..45d07c4503 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalAnd.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalAnd.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalNot.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalNot.java index ada2b0914a..9987f74de2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalNot.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalNot.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalOr.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalOr.java index 3d87835c2e..0398e75805 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalOr.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorLogicalOr.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathDivide.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathDivide.java index 7cc14bc232..4b317e6eff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathDivide.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathDivide.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMinus.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMinus.java index c3f59a53d7..3894a72020 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMinus.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMinus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathModulus.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathModulus.java index f8a8a7b56a..a667362e9b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathModulus.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathModulus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMultiply.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMultiply.java index 59359b5a0e..900c69a125 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMultiply.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathMultiply.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPlus.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPlus.java index df6a4ca966..e783b01ade 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPlus.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPlus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPower.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPower.java index a2754c4232..c97c403e79 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPower.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/expression/operator/OperatorMathPower.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java index 5c4fd7ed34..29a80ef80d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/ExpressionService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimItemDataElementAndOperand.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimItemDataElementAndOperand.java index bca1c9e2d8..bb02ed346e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimItemDataElementAndOperand.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimItemDataElementAndOperand.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItem.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItem.java index 815900fc4f..a8555469c0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemId.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemId.java index 290e84cfde..e59453918e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemId.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemId.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemType.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemType.kt index 03dcd9c059..2ac41d3af7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/DimensionalItemType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemConstant.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemConstant.java index 7c427315b4..35046a2283 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemConstant.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemConstant.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemDays.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemDays.kt index 7e5b5bcad0..96a0c42bb7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemDays.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemDays.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemOrgUnitGroup.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemOrgUnitGroup.java index 13aeb3b1d0..bc3f2d136e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemOrgUnitGroup.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataitem/ItemOrgUnitGroup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementObject.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementObject.java index d9485edc88..b53d48c79e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementOperandObject.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementOperandObject.java index 9756ddea38..b128e2b619 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementOperandObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DataElementOperandObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DimensionalItemObject.java b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DimensionalItemObject.java index 4dc21db9c2..c9e119779c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DimensionalItemObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/dataobject/DimensionalItemObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelper.kt index 1b8b737cbb..e87e3e7b03 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/DatePeriod.java b/core/src/main/java/org/hisp/dhis/android/core/period/DatePeriod.java index 5a399a885d..75acfcf716 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/DatePeriod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/DatePeriod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/Period.java b/core/src/main/java/org/hisp/dhis/android/core/period/Period.java index d3d1ee354d..bf3d5eb253 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/Period.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/Period.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodCollectionRepository.java index dafea35fcf..58efa4ecd4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodEntityDIModule.java index 1b9e9f6080..8043c642f1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodModule.java b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodModule.java index e6b8835b20..5356cb54b5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodTableInfo.java index b1c313d7ec..57945c6c73 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodType.java b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodType.java index 093316454f..3013791e16 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/PeriodType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/PeriodType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGenerator.java index fb09de539c..890274a4d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiMonthlyPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiMonthlyPeriodGenerator.java index e58590960c..c474a78dbf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiMonthlyPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiMonthlyPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGenerator.java index 8ca8bcd7d1..7fd3579f1a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProvider.kt b/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProvider.kt index b874735aee..cc11548789 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProvider.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProviderFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProviderFactory.kt index b1d69c48a9..1c307af4f3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProviderFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarProviderFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarUtils.kt index a3d2f06c53..d7938e9297 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/CalendarUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGenerator.java index 61122869eb..bfb7a19683 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/FixedCalendarProvider.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/FixedCalendarProvider.java index e72dc923e7..44f6e75c20 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/FixedCalendarProvider.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/FixedCalendarProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelper.kt index a929c44765..38514c485d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGenerator.java index 2236d5f237..f881c6c24e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerator.java index 1a4a41ff96..a87c4a5bf9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGeneratorFactory.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGeneratorFactory.java index 859834f5d7..9edad8ad2a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGeneratorFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGeneratorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerators.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerators.java index 082542b7dd..1a22f688df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerators.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/NMonthlyPeriodGenerators.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGenerator.kt b/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGenerator.kt index 68efc628c7..7b495f08e9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGenerator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImpl.kt index 05dbb9c174..d87ae5bef7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodForDataSetManager.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodForDataSetManager.java index fb83e29fc0..7b0a66befe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodForDataSetManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodForDataSetManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodGenerator.java index 14492d9d24..942a042e20 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHandler.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHandler.java index 539b76b9c3..b4d49d1c76 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHelper.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHelper.java index 1037dfbfa6..01f3fd395f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleImpl.java index 1a49453d6e..d44bb8516f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleWiper.java index 06ddda4bcd..c5a2f141ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodPackageDIModule.java index befc49670f..401809537b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodParser.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodParser.java index 8fe0b7f890..2af0168e87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodParser.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodParser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStore.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStore.java index 039e5483fa..0da1738a48 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStoreImpl.java index 38a59e7df0..2ee507cc6b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/PeriodStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/RegularCalendarProvider.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/RegularCalendarProvider.java index cbae2a0ba3..f6803842ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/RegularCalendarProvider.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/RegularCalendarProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerator.java index 8c2f3b056b..2f6f389854 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorFactory.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorFactory.java index 1815aa50ff..d4dd43af8f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerators.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerators.java index 3e56597c82..aae979f94f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerators.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGenerators.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerator.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerator.java index ccb90fb94b..4a2ab33e98 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGeneratorFactory.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGeneratorFactory.java index 8dd15ebd9c..2ccd2377da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGeneratorFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGeneratorFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerators.java b/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerators.java index ba380eea0b..be4d1ad5f6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerators.java +++ b/core/src/main/java/org/hisp/dhis/android/core/period/internal/YearlyPeriodGenerators.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/AccessLevel.java b/core/src/main/java/org/hisp/dhis/android/core/program/AccessLevel.java index 5478f43a5e..b90e64d4e0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/AccessLevel.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/AccessLevel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundary.java b/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundary.java index a02508669d..bcce10d922 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryTableInfo.kt index c59b503942..e713ec8887 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryType.kt b/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryType.kt index d3702a0803..39f7497e47 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/AnalyticsPeriodBoundaryType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/BoundaryTargetType.kt b/core/src/main/java/org/hisp/dhis/android/core/program/BoundaryTargetType.kt index 9505e3f8fe..b0c64f5e9e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/BoundaryTargetType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/BoundaryTargetType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/Program.java b/core/src/main/java/org/hisp/dhis/android/core/program/Program.java index bbf9ae4fef..5735943a53 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/Program.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/Program.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramCollectionRepository.java index 40ab2e1627..cdb11172a7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java index b81936f94d..f6bb1ea716 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorCollectionRepository.java index 3e1ff9c16c..d0b3fca5f0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorTableInfo.kt index ab6fcd6cdc..9634b1705a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramIndicatorTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramInternalAccessor.java index 5274852f43..f36e2259bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramModule.java index 7c4e67efa3..9af73a372e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRule.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRule.java index 38320d0a95..4a3094c157 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleAction.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleAction.java index ba84a22873..7910eea20e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleAction.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionCollectionRepository.java index cae4e6e142..b9930085ad 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionTableInfo.java index f00f1229bb..4b4d8c213d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionType.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionType.java index d2654ddb7b..cb13af6ef3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleActionType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleCollectionRepository.java index 00fb37f235..3900e2c570 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleTableInfo.java index e653ea74ce..753d2f47c3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariable.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariable.java index bfea13a167..152d5804c0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariable.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableCollectionRepository.java index 10feabcfe2..204dbdfdc0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableSourceType.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableSourceType.java index 83c2dc6f25..b8cade4aff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableSourceType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableSourceType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableTableInfo.java index 44166076a0..f416a5aca8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramRuleVariableTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSection.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSection.java index 167a30cfe0..62bbe69ed8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLink.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLink.java index 75f1c9ed52..edb332c6a1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLinkTableInfo.java index 6f6784ce8d..dc059525b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionAttributeLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionCollectionRepository.java index e67c24466f..e82d64f870 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionTableInfo.java index 16c20d3825..f1c3cbe181 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramSectionTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStage.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStage.java index 6e19424baf..264e3457f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStage.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStage.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageCollectionRepository.java index 2d90929040..1a8e921df8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElement.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElement.java index f073a7e234..79e0baba08 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElement.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementCollectionRepository.java index b1b975496f..7874675c77 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementTableInfo.java index 1ca1ff18b4..ae7f303526 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageDataElementTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageInternalAccessor.java index 8d2cedf62e..fc641e8c0f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSection.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSection.java index 0216fccb1b..d9fda53f36 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLink.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLink.java index c17ff5d507..a80042e2c3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLinkTableInfo.java index b999dd371b..12ff0d86f3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionDataElementLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLink.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLink.java index 4d977e74cf..57f62aaa21 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLinkTableInfo.java index 680c95ec9c..a11126ee1f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionProgramIndicatorLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionTableInfo.java index 5e87f946b4..7a59757064 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionsCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionsCollectionRepository.java index 9dbaeedfd4..80c3a1aa1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionsCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageSectionsCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageTableInfo.java index bb464203be..c657e866c7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramStageTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTableInfo.java index 676adaf049..82b198a5da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttribute.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttribute.java index 3c32b30b99..e138ffa4f8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttribute.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttribute.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeCollectionRepository.java index 7a3fb340e3..0b3bde7e32 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeTableInfo.java index d56fdf2965..fb30391e0e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramType.java b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramType.java index d144ef1d93..52c29ad698 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/ProgramType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/ProgramType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/SectionDeviceRendering.java b/core/src/main/java/org/hisp/dhis/android/core/program/SectionDeviceRendering.java index 856427d565..8ad4682385 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/SectionDeviceRendering.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/SectionDeviceRendering.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/SectionRendering.java b/core/src/main/java/org/hisp/dhis/android/core/program/SectionRendering.java index a294c0b023..1da097c1a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/SectionRendering.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/SectionRendering.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/SectionRenderingType.java b/core/src/main/java/org/hisp/dhis/android/core/program/SectionRenderingType.java index cf7cfb2b22..e7328ca448 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/SectionRenderingType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/SectionRenderingType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryEntityDIModule.java index 339d1291b1..7c998485cb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryFields.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryFields.kt index 7e8f0e1e37..54e04ddbf7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryFields.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStore.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStore.kt index 92a2efced2..2bbc7a1a6b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/AnalyticsPeriodBoundaryStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/DataElementValueTypeRenderingChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/DataElementValueTypeRenderingChildrenAppender.java index daa8c14e3e..e67ac33efb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/DataElementValueTypeRenderingChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/DataElementValueTypeRenderingChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramAttributeValueEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramAttributeValueEntityDIModule.java index 979eb64e33..9a1772cc1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramAttributeValueEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramAttributeValueEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramCall.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramCall.java index 8e9ef8778c..3c757578e5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramDataDownloadParams.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramDataDownloadParams.java index 0082dc0288..9ff3a63dd0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramDataDownloadParams.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramDataDownloadParams.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java index c709336fee..1f2bd83bdc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramFields.java index 50ce22fe8e..91a26fa0d2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramHandler.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramHandler.java index 88081348a1..885feaaf97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorAnalyticsPeriodBoundaryChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorAnalyticsPeriodBoundaryChildrenAppender.kt index f8a415d56a..e1805d3e67 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorAnalyticsPeriodBoundaryChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorAnalyticsPeriodBoundaryChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorEntityDIModule.kt index c6b37162d2..49bf95bb57 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt index 7f0c706419..8b18a65751 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorFields.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt index 6eb774ce6d..ad694ba741 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java index 0849f9a0a2..51e225664e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java index 2c5e0d7409..38e7eeef08 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorLegendSetEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStore.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStore.kt index 980e602fa9..2b8ac3b257 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloader.java index af4222bc7b..1e9470a1da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleImpl.java index 9806a98ea9..9a47ded47f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleWiper.java index 232349b520..a2207d7a95 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramOrphanCleaner.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramOrphanCleaner.java index f57039ae6c..1c0638e156 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramOrphanCleaner.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramOrphanCleaner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramPackageDIModule.java index f2589c77bb..3fa7371626 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramParentUidsHelper.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramParentUidsHelper.java index 6264aa1ccc..b0fd88c0f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramParentUidsHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramParentUidsHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionChildrenAppender.java index 3f552e96a1..c905c080ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionEntityDIModule.java index e120177a9d..9f4d401ddf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionFields.java index 910ed4784b..bf4b4ef9be 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStore.java index e760816373..29d3715944 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleActionStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleCall.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleCall.java index 6087ba46d8..45f10ca7ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleEntityDIModule.java index 450c27d67b..ece0e137ba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleFields.java index e6e7c31781..8601d70ca9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandler.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandler.java index 650efaef9a..dfc912e9b8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleService.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleService.java index 44e348bdcc..bf43bafa6a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStore.java index ced9848374..d055bbf08e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableEntityDIModule.java index e7db2ea706..71858015c5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableFields.java index d7465f8b79..dc9b84af66 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStore.java index 238181b309..82d8769712 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramRuleVariableStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeChildrenAppender.java index 8f54adab70..05122d7d32 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeEntityDIModule.java index e009e96d2f..fb29d68e00 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStore.java index 1dfb70a383..6d04017868 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionAttributeLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionEntityDIModule.java index 908b279642..4eb647223f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionFields.java index 2a4e93c196..dc467eb9da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandler.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandler.java index 93db37d2dc..895bcd1c05 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStore.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStore.kt index ab1e6bf3e4..d62fab7e28 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramSectionStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramService.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramService.java index e83980d63c..9b653d37d8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueChildrenAppender.java index eea3bae2db..f085709c51 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueEntityDIModule.java index 4029b41c11..1f9e416b10 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageAttributeValueEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageCall.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageCall.java index 37e467102c..45452cd49b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementChildrenAppender.java index f14e64d59e..b96b678c06 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementEntityDIModule.java index 1673df8312..6189176ae7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementFields.java index cdbe24a640..d3d1951780 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandler.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandler.java index 52208492f3..6c4f8b7a4d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStore.java index 79af87ba1b..7e7be58609 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageEntityDIModule.java index 8907ff9c87..0d6172d743 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageFields.java index fdbe2baa8d..cac559bd90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandler.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandler.java index 0682edaa08..d1e882cc52 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementChildrenAppender.java index 4ef2820319..5ce565a1e6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementEntityDIModule.java index 12e9d8b59b..f45d3c3242 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStore.java index 9d481416c9..dc77647714 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionDataElementLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionEntityDIModule.java index 09bcb4e836..ec015c33c7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionFields.java index 33b07398b2..58a7b564fb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandler.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandler.java index 8303505d81..1b7ea1ab97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorChildrenAppender.java index a69a3ee7ca..10f71c5eb5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorEntityDIModule.java index 8d2d408c08..d4f6aa77e5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorLinkStore.java index 74e6046b77..1ca9e30290 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionProgramIndicatorLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStore.kt b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStore.kt index 684cb9fd60..5173446104 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageService.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageService.java index 7684caae9a..9598ed5a77 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageStore.java index 7ca63a8db2..57541fb318 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStageStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStore.java index 7b607f76bd..6eb1cd086b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStoreInterface.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStoreInterface.java index 00ef8f1525..5215448846 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStoreInterface.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramStoreInterface.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeEntityDIModule.java index 7d14f41b41..bb94cdef15 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeFields.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeFields.java index 5d16ad6bc4..c77ad47a62 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandler.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandler.java index b4c833c228..668ccdb725 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStore.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStore.java index f02f91af6a..6256bd1cef 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeValueTypeRenderingChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeValueTypeRenderingChildrenAppender.java index e93ce25369..e7a6231b8a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeValueTypeRenderingChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeValueTypeRenderingChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityTypeChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityTypeChildrenAppender.java index c896cea987..cb4dfd6fb0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityTypeChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityTypeChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ValueTypeRenderingChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ValueTypeRenderingChildrenAppender.java index e59ad44024..f486d12580 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/internal/ValueTypeRenderingChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/internal/ValueTypeRenderingChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngine.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngine.java index 028ccc4af1..69380abed6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngine.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/ProgramIndicatorEngine.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramExpressionItem.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramExpressionItem.kt index 7914961913..e37ac42549 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramExpressionItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramExpressionItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorContext.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorContext.kt index 7f09e864c9..f4e8d19641 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorContext.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorContext.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineEntityDIModule.kt index e2bb72bc4c..a612464f29 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt index 5a6fad6d54..6514d901c6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorEngineImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt index a881ce0629..70bea6b74f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorItemIdsCollector.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorItemIdsCollector.kt index 1f4fa06f7e..de7d550959 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorItemIdsCollector.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorItemIdsCollector.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorParserUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorParserUtils.kt index 6a8e6055ac..321efd87db 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorParserUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorParserUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLContext.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLContext.kt index 744bbd8fe6..92b340852c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLContext.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLContext.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLExecutor.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLExecutor.kt index c4cfe9131e..3c5c5674b9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLExecutor.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLExecutor.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLUtils.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLUtils.kt index ddf7587e79..e86c04ee28 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLUtils.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorSQLUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemAttribute.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemAttribute.kt index d465886584..48a8ece376 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemAttribute.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemAttribute.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemPsEventdate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemPsEventdate.kt index d35d66207c..b4d986717b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemPsEventdate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemPsEventdate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemStageElement.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemStageElement.kt index 0f0dc724b4..7995c2af4e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemStageElement.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/dataitem/ProgramItemStageElement.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDays.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDays.kt index 868f523b9d..6c3f793ae7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDays.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDays.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Ceil.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Ceil.java index 5ca7140fe3..3b2db8385f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Ceil.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Ceil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Concatenate.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Concatenate.java index e24d8c5995..333413e73c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Concatenate.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Concatenate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Condition.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Condition.kt index 6e5ed557c9..5f9577fec3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Condition.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Condition.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Count.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Count.kt index 8e84f1098c..7894d54635 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Count.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Count.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfCondition.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfCondition.kt index 009a00c017..a32e32f60b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfCondition.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfCondition.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfValue.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfValue.kt index 351aba1261..dc86a52489 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfValue.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CountIfValue.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetween.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetween.kt index bb5a1f39df..60dd66866a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetween.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetween.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Floor.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Floor.java index 378f86f682..442551d817 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Floor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Floor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2HasValue.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2HasValue.kt index f535b5f9d2..c233913bd9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2HasValue.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2HasValue.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Left.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Left.java index 1a8dbc5fd0..c534bc512d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Left.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Left.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Length.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Length.java index cb3126411e..da53246381 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Length.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Length.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetween.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetween.kt index b091e1a225..7180dd9430 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetween.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetween.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Modulus.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Modulus.java index f6687208c6..d045d1ebc7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Modulus.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Modulus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetween.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetween.kt index ba63c71ad9..28bf0314f6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetween.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetween.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Oizp.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Oizp.kt index 339b7265a4..00e4a65911 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Oizp.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Oizp.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Right.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Right.java index 3613f84497..f5f5476350 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Right.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Right.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Round.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Round.java index c344cc07a6..f06bc5f502 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Round.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Round.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Split.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Split.java index 806645a444..504542da76 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Split.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Split.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Substring.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Substring.java index 2cf4fe9cb7..6a1bbb5172 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Substring.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Substring.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePattern.java b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePattern.java index cdf03b5303..a71cf7c60e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePattern.java +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePattern.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetween.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetween.kt index adc369bb04..3bdd78d1a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetween.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetween.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetween.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetween.kt index cf35cc1609..11f3d9c4e1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetween.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetween.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zing.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zing.kt index 8e5da83048..81c696567d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zing.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zing.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zpvc.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zpvc.kt index 618509d7a4..3cebbcbe24 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zpvc.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2Zpvc.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramBetweenDatesFunction.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramBetweenDatesFunction.kt index 51dfe6f63a..93ff72dc43 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramBetweenDatesFunction.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramBetweenDatesFunction.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramCountFunction.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramCountFunction.kt index c687c918d5..ba6f300912 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramCountFunction.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/ProgramCountFunction.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/literal/ProgramIndicatorSQLLiteral.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/literal/ProgramIndicatorSQLLiteral.kt index a0c7afded0..ff656b4517 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/literal/ProgramIndicatorSQLLiteral.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/literal/ProgramIndicatorSQLLiteral.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt index 1d74520dcc..a00836038b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/ProgramVariableItem.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCompletedDate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCompletedDate.kt index 1fef0997b9..2839f6176a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCompletedDate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCompletedDate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCreationDate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCreationDate.kt index 3afe1eb530..f32e8aa448 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCreationDate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCreationDate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCurrentDate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCurrentDate.kt index b4f690fa1c..78e9c7d2e1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCurrentDate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VCurrentDate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VDueDate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VDueDate.kt index f30acb1155..9180062024 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VDueDate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VDueDate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentCount.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentCount.kt index 121bfae665..9167cd885d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentCount.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentCount.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentDate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentDate.kt index f6547c63b7..4b6a41fcba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentDate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentDate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentStatus.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentStatus.kt index 72daaa972c..db9a3168a1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentStatus.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEnrollmentStatus.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventCount.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventCount.kt index 39bf798757..996e2570fa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventCount.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventCount.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventDate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventDate.kt index 41327cf32e..262435cdf1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventDate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventDate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventStatus.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventStatus.kt index bcb8d0083d..1bd950a16e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventStatus.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VEventStatus.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VIncidentDate.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VIncidentDate.kt index 4190191201..4212959f73 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VIncidentDate.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VIncidentDate.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt index b1ec862314..b9afd5cade 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageId.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt index 93cf6ec13a..b553ed37fc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VProgramStageName.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VTeiCount.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VTeiCount.kt index 46232b1b7c..4fb0ecca86 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VTeiCount.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VTeiCount.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VValueCount.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VValueCount.kt index e630aa376b..324e457d99 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VValueCount.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VValueCount.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VZeroPosValueCount.kt b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VZeroPosValueCount.kt index ec75b7274a..c43876f0ef 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VZeroPosValueCount.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/variable/VZeroPosValueCount.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/BaseRelationship.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/BaseRelationship.java index 76f5b11d2d..e4538d2696 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/BaseRelationship.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/BaseRelationship.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationship.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationship.java index be6137df6c..82bd751f16 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationship.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationship.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java index 66c07aa409..e4ad98d455 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java index 0394bd3956..aca9fa12a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEnrollment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java index d5dd32354d..488328676b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java index 3872eee785..61d8f1b723 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipItemTrackedEntity.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt index 5e15b5b23b..bff10598e8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/Relationship.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/Relationship.java index ba37d4998e..c8b41746f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/Relationship.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/Relationship.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepository.java index e52d023339..b98e098341 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraint.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraint.java index c4a9ce0fd2..09b9d6de2c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraint.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraint.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintTableInfo.java index 06b063c845..c560458736 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintType.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintType.java index 78d77f615c..b64e2209d3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipConstraintType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipEntityType.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipEntityType.java index 45973b4c43..3f380375a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipEntityType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipEntityType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java index 1aee6397b6..c4c43ab299 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipHelper.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipHelper.java index 6e8d755152..a3bdf569b8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItem.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItem.java index 450ef694d3..f4e4c59f6a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEnrollment.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEnrollment.java index 4485cf67dc..b68c8c30a1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEnrollment.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEnrollment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEvent.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEvent.java index 0207a13002..eb01348974 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEvent.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTableInfo.java index 1bc04e3553..9048426413 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTrackedEntityInstance.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTrackedEntityInstance.java index 4eb5f78e1b..ffe9a9ee02 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTrackedEntityInstance.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipItemTrackedEntityInstance.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipModule.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipModule.java index e9da74734a..dc431d9359 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java index 8d15e6d8b7..45043b4881 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTableInfo.java index fb359e507d..babaa9ae1c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipType.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipType.java index 165115fad2..c934746fe2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt index 868fddbfaa..a55f87cabf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeCollectionRepository.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeTableInfo.java index 39178918ea..e8546b5432 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/RelationshipTypeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EnrollmentRelationshipOrphanCleanerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EnrollmentRelationshipOrphanCleanerImpl.java index 13b88c86e6..3271601a6c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EnrollmentRelationshipOrphanCleanerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EnrollmentRelationshipOrphanCleanerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EventRelationshipOrphanCleanerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EventRelationshipOrphanCleanerImpl.java index 7615f36572..bc8af7a4e0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EventRelationshipOrphanCleanerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/EventRelationshipOrphanCleanerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java index cbff0b035e..43dcb3950f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintEntityDIModule.java index e2b6a1e4f2..46aba27208 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintFields.java index 688ed00165..fc67f7d4df 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStore.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStore.java index 6316cc491b..aa5e381965 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipConstraintStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java index 5c7fd2a22e..9d1857ae37 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java index 5b000c0635..7c8efc6e38 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDownloadAndPersistCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipEntityDIModule.java index 92dd15dd25..3f743b7515 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandler.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandler.java index 9f561a6fff..c71be68800 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt index c4961b8e80..c9749faf40 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandler.kt index 83befbc5dc..432353dadd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt index b907fecaa3..8ec940e2f8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelector.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelector.java index f653d7f374..57e4785e76 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelector.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelectorImpl.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelectorImpl.java index 1a385d5448..296264fa58 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelectorImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemElementStoreSelectorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEnrollmentFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEnrollmentFields.java index 9e790c7005..68e54ba7b2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEnrollmentFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEnrollmentFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEntityDIModule.java index 7134e1f2ab..98f4dc0712 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEventFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEventFields.java index f08b0dafda..200cc3289f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEventFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemEventFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemFields.java index dee33e528b..ae8df40128 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemRelatives.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemRelatives.java index f8b490050f..5093a58179 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemRelatives.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemRelatives.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStore.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStore.kt index fda3d9c239..cacde5bec8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreImpl.kt index f4bbaa1933..a9399be4cc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemTrackedEntityInstanceFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemTrackedEntityInstanceFields.java index 33bcd400e5..c38447fbe3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemTrackedEntityInstanceFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipItemTrackedEntityInstanceFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipManager.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipManager.kt index 61911d6d2e..abbab3fb93 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleImpl.java index 95c8663480..7b30c28402 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleWiper.java index 730145c6ae..ee7af353aa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipOrphanCleanerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipOrphanCleanerImpl.java index 41b3c4f7da..0bcf423253 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipOrphanCleanerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipOrphanCleanerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPackageDIModule.java index 3cb8d8ddf8..78b0e8335e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPayload.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPayload.java index deb8889780..eed9dd74e8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPayload.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPayload.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt index 9bf8ff8fe6..b9ef8b614f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipPostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipService.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipService.kt index adcc2ec12b..ad2c9e113d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStore.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStore.kt index 174349b413..650b046635 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreImpl.kt index 411c22dad7..761febf556 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeBuilder.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeBuilder.java index 95bc05bff2..f911c3478b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeBuilder.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java index 5c5ca3aafb..6a88b63089 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelper.kt index 8922d7488c..05fcca9103 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeEntityDIModule.kt index 4ce4b6d178..5cc1bb6269 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeFields.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeFields.java index 89b66d8cae..7b66f8e9a3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeHandler.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeHandler.java index cefbd1bd2a..abb264078a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeService.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeService.java index 4fc2713a06..72d3eccd68 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeStore.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeStore.java index 79aa904776..bb54e260ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java index 051ceb89c1..daf6ab1c9b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/relationship/internal/TEIRelationshipOrphanCleanerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/Resource.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/Resource.java index 34333adca2..634654d1b9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/Resource.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/Resource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceEntityDIModule.java index 83354ea6ed..9fb2c131d8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceHandler.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceHandler.java index 3c19493fe1..ebf15e5fa6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceModuleWiper.java index e815290603..962b83c589 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourcePackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourcePackageDIModule.java index 3cdf4e2de1..b44bfc6b3b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourcePackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourcePackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStore.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStore.java index b3fff3a260..9c14596048 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreImpl.java index 9ba92b70b7..a1ba5a05c3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceTableInfo.java index 1a639979c7..89ed06e2b8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/resource/internal/ResourceTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualization.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualization.java index 8c775a14f5..0bb2de3d58 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualization.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualization.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationScope.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationScope.kt index 3cadd747ff..293b326964 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationScope.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationScope.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationTableInfo.kt index e6bcc2a6c9..eeca3a0926 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsGroup.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsGroup.java index 2bf1bd7328..659ba442cd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsGroup.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsGroup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsHelper.kt index 8f9c61ea84..fb38b56dae 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSetting.java index c9fd41071e..9a19a35144 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSettingObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSettingObjectRepository.java index f85926f08e..e6d7c72870 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSettingObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsDhisVisualizationsSettingObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettingObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettingObjectRepository.java index a8eace8eb8..369459495f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettingObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettingObjectRepository.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettings.java index fae283baba..f75d66d561 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttribute.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttribute.java index 24734b6a0d..ec9a2326fe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttribute.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttribute.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttributeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttributeTableInfo.java index 5788f0c71b..5240553e1a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttributeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiAttributeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiData.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiData.java index dbda24b649..62e40e0feb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiData.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElement.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElement.java index f63487800b..2010ad1a37 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElement.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElementTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElementTableInfo.java index 3627ac633c..6f0ee7ebec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElementTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiDataElementTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicator.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicator.java index 16215d4481..996b43eb70 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicatorTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicatorTableInfo.java index c0995782bb..8ed3e66835 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicatorTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiIndicatorTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSetting.java index a4e7987242..3f79944019 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingCollectionRepository.java index ccfb412fac..f85d65d42b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingCollectionRepository.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingTableInfo.java index 3e19fd975c..03e3810784 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionData.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionData.java index ce69673d6b..f52ef2c7f8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionData.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionDataTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionDataTableInfo.java index 415468e722..8fbcbd44bc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionDataTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionDataTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGender.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGender.java index 1bfb6c435e..e014b93e66 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGenderValues.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGenderValues.java index bc4d558609..48732cd8a8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGenderValues.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionGenderValues.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionItem.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionItem.java index 3b3a647757..f8b56f8f96 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AnalyticsTeiWHONutritionItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AppMetadata.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AppMetadata.java index 0e0f94eb4a..99397e7603 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AppMetadata.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AppMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java index 9829ccdb33..d233616170 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java index 87424568d5..c1dbf41b70 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/AppearanceSettingsObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ChartType.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/ChartType.kt index 28758c6e17..c4067107da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ChartType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ChartType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinner.java b/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinner.java index 2f06694f05..aa044ab3e4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinner.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinnerSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinnerSetting.java index b64e221944..a706d2482b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinnerSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/CompletionSpinnerSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilter.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilter.java index 46b2159c7e..eb3c4fa971 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilters.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilters.java index f511566e36..0788a1441e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilters.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetFilters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSetting.java index 447c83357c..cd6595d85a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingTableInfo.java index 09a99dbe4b..1ae2e3689e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettings.java index d41932c304..3f51a6afc1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingsObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingsObjectRepository.java index 85fd634739..0182f93881 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingsObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSetSettingsObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSyncPeriod.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSyncPeriod.java index 460451eae1..363a8d176f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DataSyncPeriod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DataSyncPeriod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/DownloadPeriod.java b/core/src/main/java/org/hisp/dhis/android/core/settings/DownloadPeriod.java index c6f426ff69..648282b0d8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/DownloadPeriod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/DownloadPeriod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/EnrollmentScope.java b/core/src/main/java/org/hisp/dhis/android/core/settings/EnrollmentScope.java index 08eedb5614..283d72ebdc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/EnrollmentScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/EnrollmentScope.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSetting.java index 70c26dfdec..16620ead0d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSettingTableInfo.java index 6ecd98f60e..cc19680e6a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSorting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSorting.java index 0a1e78f0b7..80dd5ff23a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSorting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/FilterSorting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingObjectRepository.java index 1459ffb55e..b4d5b44edf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java index 1c0c9d447e..615cb90ffa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java index 1dcef6475c..65ddaac4ed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/GeneralSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/HomeFilter.java b/core/src/main/java/org/hisp/dhis/android/core/settings/HomeFilter.java index 53faa858e8..5f0a80431b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/HomeFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/HomeFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/LimitScope.java b/core/src/main/java/org/hisp/dhis/android/core/settings/LimitScope.java index 76e9cff632..c18b49e9c8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/LimitScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/LimitScope.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/MetadataSyncPeriod.java b/core/src/main/java/org/hisp/dhis/android/core/settings/MetadataSyncPeriod.java index 89e01635f1..31ce900e1c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/MetadataSyncPeriod.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/MetadataSyncPeriod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java index 434fe7273f..ad5ab48710 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettingTableInfo.java index 16cad36612..afd77dbcaa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java index 8429dd1301..4668530d04 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramConfigurationSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilter.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilter.java index b9c5c30d9b..2f6c49156e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilters.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilters.java index a789883ff7..235d2916e5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilters.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramFilters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSetting.java index 72437330d7..15beeeed2b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingTableInfo.java index 89ebcbdcd7..43c54c6cf7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettings.java index d7009b267c..e03354b448 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingsObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingsObjectRepository.java index b152bdd338..9f98cfdaf6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingsObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/ProgramSettingsObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SettingModule.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SettingModule.java index b736390ac1..8e820063eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SettingModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SettingModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SettingsAppInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SettingsAppInfo.java index e69152c549..246100e9e4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SettingsAppInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SettingsAppInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingObjectRepository.java index c0728549df..71cc26c7fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingTableInfo.java index 6f6d4cec63..9a498234c7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettings.java index bc3e2b175e..03f1ffb3d6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SynchronizationSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSetting.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSetting.java index db11ff74b6..a647ccc534 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingCollectionRepository.java index e93ba26adc..ccef2fc78d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingTableInfo.java index 0b17b48504..00256534a6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettings.java index 59e51f6ea4..feb0c69ad6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/SystemSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettings.java b/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettings.java index 311d6b5bc7..50b022e9da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettings.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsObjectRepository.java index ff08693a91..ae87dd519c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsTableInfo.java index 9227418978..6291b27c85 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/UserSettingsTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionChartType.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionChartType.kt index e81847cd3f..2dbbbb4910 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionChartType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionChartType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionComponent.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionComponent.kt index b1bc65dc72..a78130d08c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionComponent.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/WHONutritionComponent.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationSettingHandler.kt index 3b1d5772ef..6fd0091cd3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStore.kt index 1f465868af..a2dd0bd3f3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsDhisVisualizationStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCall.kt index b32c577b97..49958f5797 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingEntityDIModule.kt index c2ea345bad..a090033f96 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStore.kt index 40189a1114..5ff25c05a5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiAttributeStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataChildrenAppender.kt index fafcf86ae2..71550ec3d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStore.kt index 6efbbc3621..abdb4bc909 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiDataElementStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStore.kt index 919cee753c..ecad9b0a12 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiIndicatorStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandler.kt index c82f60403e..8f7421bf7f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStore.kt index 7d3cdab089..e092bcfcff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandler.kt index 8166e4fa7f..09dd5e4d7b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStore.kt index e3eb0bb4fb..3fc564c7c1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt index eed3b637de..e126a7e4d1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/BaseSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/BaseSettingCall.kt index e5f4702205..0e461950f6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/BaseSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/BaseSettingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCall.kt index 336c6f2b2c..4b9cbe4b23 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingEntityDIModule.java index c9e90ee70c..28c0561bfa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandler.kt index 841405fade..c1b7232642 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStore.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStore.java index b244d9a904..3fb1b74dce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingEntityDIModule.kt index 5e90b26704..799800b773 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandler.kt index 1e1bf1a729..27dc13a4b5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStore.kt index 3801e38273..8f4bd0b9fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/FilterSettingStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCall.kt index ef34b01283..065cdee072 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingEntityDIModule.kt index 53de44320e..8d534fc39d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingHandler.kt index 4875ef9ba5..8d741e1a50 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt index c82ef42333..7b47545539 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingEntityDIModule.kt index 64317ecda7..ceea519870 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandler.kt index add9c12120..983279c8c3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStore.kt index 5b708b3abf..657fbb9388 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCall.kt index d764eba44f..72db1b7778 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingEntityDIModule.java index b3b0099a60..01243d5203 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandler.kt index 4e034635b6..6f4c462f22 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStore.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStore.java index 3054232242..767d9ec195 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingAppService.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingAppService.kt index 97f6ae4289..6d3fcff9eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingAppService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingAppService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleDownloader.kt index 3bd7d6e77d..c09af33c77 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleImpl.java index 6e53bc8043..ff9c7f4400 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java index 3bfbae3d6f..0d032393c7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt index c41f00ee10..78753e07f8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingPackageDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingService.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingService.kt index 7473061ecd..0a1e49d20d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppDataStoreVersion.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppDataStoreVersion.kt index 5625ef5a1d..b45969ee1e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppDataStoreVersion.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppDataStoreVersion.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt index 766025bf8b..d5371be07b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCall.kt index 2e98c7310f..e2c87295ad 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManager.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManager.kt index 217de95d1f..7ed3c80fa1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerImpl.kt index bf361dc49b..b3b9ffa449 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppVersion.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppVersion.kt index 51eade956f..0ff4a9f81e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppVersion.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SettingsAppVersion.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCall.kt index 3d6f2e40fb..8254197d3f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingEntityDIModule.kt index 23b1132afd..24d249067b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingHandler.kt index c4a4abfad5..a0f8585da7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingStore.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingStore.kt index 36a535686a..6f3381cd17 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingCall.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingCall.java index a0139528d3..3ea64e0818 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingEntityDIModule.java index fcc9f5375a..187c7f7fcd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStore.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStore.java index a193b810d6..30df05e03f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsFields.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsFields.java index 53273884fc..e711d24b3f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsSplitter.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsSplitter.java index 7423c40179..bd674e920f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsSplitter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/SystemSettingsSplitter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsCall.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsCall.kt index ac4c8c031d..44c94b5fcb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsEntityDIModule.java index b4220ad68b..a4b606f99c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsFields.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsFields.java index 4a0e401501..2ef02363e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsHandler.kt index 5fded1e11f..48be432f5f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStore.java b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStore.java index 05330521b3..bc1e934d97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/settings/internal/UserSettingsStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/SmsModule.java b/core/src/main/java/org/hisp/dhis/android/core/sms/SmsModule.java index 7051e4b3bf..87f5074d89 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/SmsModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/SmsModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/internal/DeviceStateRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/internal/DeviceStateRepositoryImpl.java index 58afe21a5f..e922fccfe8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/internal/DeviceStateRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/internal/DeviceStateRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/DataSetsStore.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/DataSetsStore.java index 1c619c6d38..a0e6ec9cd7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/DataSetsStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/DataSetsStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java index c6d9854690..936e9cb48b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt index aea9771aec..7f630c0331 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/LocalDbRepositoryImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt index e2db8135e7..4506bc8e42 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/MetadataIdsStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt index a565ed94a5..2bfa2f9db2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/OngoingSubmissionsStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt index 66a4bb3d32..a63cdb7d62 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigKey.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt index 51d3e16326..87ad258148 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt index 47c3df5164..09f6960dbf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt index 783799229a..de510abe61 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSConfigTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java index 164c2d2834..3b6f925ddf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataId.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt index 6bd5155b99..e7319e4395 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt index fddb8eae37..1d8f6f1d2b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSMetadataIdTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java index 63983e285b..f41e6d0f53 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmission.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStore.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStore.kt index 3207271e01..8ac23167b4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt index c1ae64e305..da090e7b91 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/SMSOngoingSubmissionTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SendingStateReceiver.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SendingStateReceiver.java index 9bcbe90cf7..c6393573bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SendingStateReceiver.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SendingStateReceiver.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsReader.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsReader.java index 2178a7b0fd..638efd830f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsReader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsReader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsRepositoryImpl.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsRepositoryImpl.java index e72e903823..f8f2c8b050 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsRepositoryImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/SmsRepositoryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/Utility.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/Utility.java index c126f10eba..388db44ddb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/Utility.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/smsrepository/internal/Utility.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/ApiService.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/ApiService.kt index 1f7e59d824..d392fabaac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/ApiService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/ApiService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/MetadataResponse.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/MetadataResponse.java index 823f2de1df..b48fa65060 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/MetadataResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/MetadataResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImpl.kt index 639db06012..e232bc4583 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/Converter.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/Converter.java index bb89ecad5a..1c8de22625 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/Converter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/Converter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/ConverterUtils.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/ConverterUtils.java index 83bd412f71..d8671b6389 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/ConverterUtils.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/ConverterUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DatasetConverter.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DatasetConverter.java index d9d1ae369d..4981f0bc15 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DatasetConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DatasetConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DeletionConverter.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DeletionConverter.java index 089ee41b6f..7606714784 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DeletionConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/DeletionConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/EnrollmentConverter.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/EnrollmentConverter.java index 315dfe9339..0fdbf90aa4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/EnrollmentConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/EnrollmentConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/RelationshipConverter.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/RelationshipConverter.java index 421f9bfbec..f4fcd78dbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/RelationshipConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/RelationshipConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/SimpleEventConverter.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/SimpleEventConverter.java index 231cf119d4..02f49a5a77 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/SimpleEventConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/SimpleEventConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/TrackerEventConverter.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/TrackerEventConverter.java index 631f13c738..fb33648804 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/TrackerEventConverter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/converter/internal/TrackerEventConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/ConfigCase.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/ConfigCase.java index a933251916..1ef540e15c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/ConfigCase.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/ConfigCase.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/QrCodeCase.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/QrCodeCase.java index a9ab73b62c..c1f5d76870 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/QrCodeCase.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/QrCodeCase.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/SmsSubmitCase.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/SmsSubmitCase.java index 456e88d4b9..5e0c632e10 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/SmsSubmitCase.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/interactor/SmsSubmitCase.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/model/internal/SMSDataValueSet.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/model/internal/SMSDataValueSet.java index 29c6826529..1a98f45777 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/model/internal/SMSDataValueSet.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/model/internal/SMSDataValueSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/SmsRepository.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/SmsRepository.java index 0165558ce3..445b2fc8bf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/SmsRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/SmsRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/WebApiRepository.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/WebApiRepository.java index d5d7c52fdc..ba59a245f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/WebApiRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/WebApiRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/DeviceStateRepository.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/DeviceStateRepository.java index f18fd027be..be3fdff8f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/DeviceStateRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/DeviceStateRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java index d19582ac21..f4f58e067f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/LocalDbRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/SubmissionType.java b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/SubmissionType.java index d6431e9ab8..dcffb15cde 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/SubmissionType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/domain/repository/internal/SubmissionType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt index c9850f9043..8fec24b30c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SMSModuleWiper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java index aaebe6e04c..0442a6d950 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsModuleImpl.java index d13a300a4d..768aebe7dc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/internal/SmsModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java index 929ec999fd..20bcb15f7c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISPatchVersion.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java index edad47c024..626f572c43 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersion.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java index 94e6729fbe..fad693d992 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/DHISVersionManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SMSVersion.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SMSVersion.java index 550f3183f0..d1b082fae8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SMSVersion.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SMSVersion.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfo.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfo.java index d267b8a699..80fb4f450a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModule.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModule.java index 0814390c16..4dd778d362 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoObjectRepository.java index c2779a6bb5..1f878f8a66 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoTableInfo.java index 246df65c9c..ba5e88900d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/SystemInfoTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java index 175c4d2d5b..af9da460a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingCall.kt b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingCall.kt index 31f6d05e18..509aaf3f9e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingEntityDIModule.kt index 429e85aef4..8cd4ca1772 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingService.kt b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingService.kt index 0f6b339a5d..69cd8614b2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/PingService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCall.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCall.java index c0a1b41186..b69503acf6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoEntityDIModule.java index 03264234c9..9fb5fa6870 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoFields.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoFields.java index d309bd27c7..95942a9482 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleDownloader.kt index c1f7fc7477..3cb788fefe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleImpl.java index a0acafdd01..c9b43603a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleWiper.java index c8074d7aa5..70cc900157 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoPackageDIModule.java index 16332a36af..a6012166b4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoService.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoService.java index 87725ba9b9..380a049c5c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStore.java b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStore.java index e5186279b1..d269af385f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntity.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntity.java index 0bb119a4a7..3b9bd4593e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntity.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntity.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValue.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValue.java index 93ee588f4b..0ad9cba439 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValue.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValueTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValueTransformer.kt index 52021dc56b..63e9f54feb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValueTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityAttributeValueTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValue.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValue.java index 2df4962d70..a59cde0805 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValue.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValueTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValueTransformer.kt index bc73030678..4ed75d81b8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValueTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTrackedEntityDataValueTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTranckedEntityTransformer.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTranckedEntityTransformer.kt index a858c88ba9..526caaff38 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTranckedEntityTransformer.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/NewTrackerImporterTranckedEntityTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSetting.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSetting.java index 851cb1f792..694fc4b674 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSetting.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSettingTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSettingTableInfo.java index 079df02b65..1277b9dc2f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSettingTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSettingTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSummary.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSummary.java index 9a0297ef19..9264489c84 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSummary.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ReservedValueSummary.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttribute.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttribute.java index c84d18c314..a80f527836 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttribute.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttribute.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeCollectionRepository.java index af2e0a2778..5036ae9e47 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValue.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValue.java index cc588dbd7d..a9e97d924a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValue.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManager.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManager.java index ae100cf8e1..6e34a13239 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManager.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueTableInfo.java index de1d86a6cb..cfa524ccd5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeTableInfo.java index bbc02c4855..e0a2236648 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValue.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValue.java index e2fbb8c698..bece627690 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValue.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueCollectionRepository.java index d3365a22f1..43888fe8b0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueObjectRepository.java index 961d1f18ac..38571fe2a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueTableInfo.java index cabca118c3..9af4a7a2e8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeValueTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValue.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValue.java index 98162a323d..71963159a3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValue.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueCollectionRepository.java index b778b8df9b..6bcc2427ec 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueObjectRepository.java index 4f8c204cf7..7a91f89a22 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueTableInfo.java index 7c0d44dc2f..4c8816e7a8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java index b693a00864..0ded47c45e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstance.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java index 44abf47513..5f06550f32 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCreateProjection.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCreateProjection.java index 353800b58b..0af3379d97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCreateProjection.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceCreateProjection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilter.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilter.java index 9d38ab4cf4..0e9c190259 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilterTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilterTableInfo.java index 248be528c2..d2d4579f2a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilterTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceEventFilterTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilter.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilter.java index d4d4929c34..276c7d930a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterCollectionRepository.java index 56a5ad36f1..01523acfbe 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterTableInfo.java index d55ee5b503..c9f25e68ba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java index ee7bf5258d..3e99efb826 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java index 124d269944..77021c16de 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceService.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceService.java index 7b4e28504c..f90b32bffc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceTableInfo.java index b5ecd4d2a0..688ab67b49 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java index 6691ff3225..4f9741af50 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java index fd13368fba..aa6aaf1605 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityType.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityType.java index e7840d6180..7613f5e648 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityType.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttribute.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttribute.java index a432d398a2..a73d386629 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttribute.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttribute.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeCollectionRepository.java index b428006424..6cc491e12a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeTableInfo.java index b5d9dc22d8..9d3991bac1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepository.java index 24ebc09b22..5ffe453d91 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeTableInfo.java index 6bf29611cb..439e6c141b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayload.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayload.kt index f79f2df6e5..4926c427af 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayload.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayload.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayloadWrapper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayloadWrapper.kt index e069acdddb..f19dce7a30 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayloadWrapper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterPayloadWrapper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostPayloadGenerator.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostPayloadGenerator.kt index 4ae099bd02..b8354a9327 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostPayloadGenerator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostPayloadGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt index 48dcfbd2d8..132e7cfb22 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/NewTrackerImporterTrackedEntityPostStateManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ObjectWithUidWebResponse.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ObjectWithUidWebResponse.java index 89bd682336..49ee2fd2db 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ObjectWithUidWebResponse.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ObjectWithUidWebResponse.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt index ef1cd669be..1c691b884a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterFileResourcesPostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayload.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayload.kt index 9894f88f9b..e354b58435 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayload.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayload.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt index 4b51d7319d..24d86f7205 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPayloadGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt index 55aadb00e0..dea6d3ab12 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/OldTrackerImporterPostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingDIModule.java index 199387bea6..24e01c6d51 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStore.kt index 5a82e18df5..c207eba9d4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/ReservedValueSettingStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/StatePersistorHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/StatePersistorHelper.kt index 76878b54fd..3bad2e01b9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/StatePersistorHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/StatePersistorHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeCall.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeCall.java index 15e1b48115..fd7b7e1b3d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeEntityDIModule.java index b94aef6ef7..3d4928e2b3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeFields.java index 0bdf6b693e..b0af7a893d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandler.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandler.java index d664524a2a..1202d6a2fd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java index e6759a442c..5f73d0a697 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallErrorCatcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallProcessor.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallProcessor.java index bf3a4238aa..afe3373353 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallProcessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueCallProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallFactory.java index 67281616f1..c5aaf41155 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEndpointCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEntityDIModule.java index 0ff77f0d54..9b23d3c3f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueQuery.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueQuery.java index ff3527260f..31e479ca93 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueService.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueService.java index 3b5ec8b410..b5a0bd3d6f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStore.java index 4da9c93768..354dc72280 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreInterface.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreInterface.java index 492610b3bf..a2f7dfb55f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreInterface.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueStoreInterface.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelper.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelper.java index dbedd7a171..31035ddc17 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeService.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeService.java index 10ec90b4c3..faf486297f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStore.java index e4ae08ede1..1b60832d48 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java index be19454f94..0a187757ad 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueEntityDIModule.java index 9cedb4ab26..f88cc05e95 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueFields.java index 8293ee61a6..6bcbaacd4f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt index 5efcc95fdd..35710f4071 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt index 10d399251c..f3832be214 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt index af90f1cd04..3932037bc9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java index 7e1c066133..8bde3967f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueEntityDIModule.java index 4bfc87c3db..432afd7025 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueFields.java index 15956ded81..5138ee22be 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueHandler.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueHandler.java index 51cef16a9e..02d2aaa13b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStore.java index 93479f6e64..5da5f07f0e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreImpl.java index 25c05a786e..9135480b52 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityDataValueStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt index 71a6b10e5a..39b8338efd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceCallErrorCatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadCall.kt index 75c0fd4d5e..7bd69feaef 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index 4bf9b8528d..b2e6d78d85 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloader.java index ee377cbcbc..7e9c6b612c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java index d73a3c029d..996ae3acc1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterEntityDIModule.java index a0a46f8019..ec40299f5d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterFields.java index bfb5a2a7ac..457b2fd84c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStore.kt index bc928d5622..1e8cd8c0be 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEventFilterStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java index 7df0ba6d86..daf00718a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterCall.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterCall.java index 9897518a85..c18dd0f301 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEntityDIModule.java index fe6e58361b..bde1783f0b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEvenFilterChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEvenFilterChildrenAppender.java index ca73cfaf62..b59d8999eb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEvenFilterChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterEvenFilterChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterFields.java index 6209b779aa..63825b1ad2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandler.kt index 242649d25a..593b50846c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterService.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterService.java index 8056496d3e..a30e15c934 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStore.kt index 0e44163a6a..2f2811572b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt index b3487770c9..fd52c032ce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt index 543150f2d9..fb62f87282 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceLastUpdatedManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceLastUpdatedManager.kt index 1a34c8d003..ef4bac4b90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceLastUpdatedManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceLastUpdatedManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePayload.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePayload.java index 797f742023..ae70930c9d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePayload.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePayload.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt index f890b2a5af..e202391c67 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt index 0cc75a2419..1edca6391a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePostParentCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceProjectionTransformer.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceProjectionTransformer.java index 4ca05b7d1e..35d3984a9c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceProjectionTransformer.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceProjectionTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt index 56cbd9f988..9fe903a3fa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStore.java index 41698677f3..3d650c51c4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreImpl.java index 5ffdc5e5ce..e14154a91d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSync.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSync.java index 9c1830e38e..d35f0ed93b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSync.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSync.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncEntityDIModule.java index c59be650d1..c073b67172 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStore.java index 50f06ef5b9..876ce47e57 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncTableInfo.java index 32a992b1e3..de5ba48470 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelper.kt index d5e0bd97b9..6ea35c98e7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperImpl.kt index 2f1361d0d6..77d318581e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt index e416c92fbd..13a861fa0f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancesEndpointCallFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt index 753e07b9f6..892c4a1320 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt index 8f522d6721..8ca8524c9b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityModuleWiper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeChildrenAppender.java index cecef5ea5f..bad83cae8f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeEntityDIModule.java index c06679b1e9..d5db63c1ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeFields.java index 8fd4ce09cc..83c8d7302d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStore.java index 921bee6202..359b066ef7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeAttributeStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeCall.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeCall.java index d45ab68a7f..31ce5f391d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeEntityDIModule.java index a44fb002eb..de5c671f90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeFields.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeFields.java index bd57b7cd63..d71bebd35d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeHandler.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeHandler.java index 0f06592210..36a37ed889 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeService.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeService.java index 437d2cf8bf..fd0a4fa157 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStore.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStore.java index beba9d90fc..ee18bc816c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityTypeStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSync.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSync.java index a15687c4df..3658405148 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSync.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSync.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSyncColumns.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSyncColumns.java index 03cf0a7d42..85dcf73599 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSyncColumns.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerBaseSyncColumns.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt index a48f0d11cf..2a269d5386 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerPostStateManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java index 0fcd382f76..704f6a79b8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQuery.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundle.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundle.java index ca5a171c85..f342b1e65b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundle.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundle.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleFactory.kt index 7c6f47915d..e564f21d13 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt index 4ef6c22eda..2a12ccd3b0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryBundleInternalFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt index 496a4435c8..9000a9611d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryCommonParams.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactory.kt index b49ee830c6..ba499e4c39 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt index 5e5ab8dd58..b59a3bd181 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryFactoryCommonHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryInternalFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryInternalFactory.kt index 830d5d233f..20a41979ed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryInternalFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerQueryInternalFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerSyncLastUpdatedManager.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerSyncLastUpdatedManager.kt index bae9e4f0be..412582da96 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerSyncLastUpdatedManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackerSyncLastUpdatedManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt index 4bb549bfc0..31d1701005 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt index e56941fe09..84d917a063 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java index f000acfb07..0cfa60cdff 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt index 49da771b34..a9f72f68e5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt index c2d012bf4b..b6cce0c9bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/ownership/ProgramTempOwnerTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGrid.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGrid.java index 078606a57c..9ed860381b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGrid.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGrid.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridHeader.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridHeader.java index 664e8b44eb..9322f170af 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridHeader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridHeader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapper.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapper.java index 030a0767c5..7f2f0ce97a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMetadata.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMetadata.java index ad38839613..ac9e5747d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMetadata.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt index 33db10f8da..33a9855f4a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallFactory.java index 7665f07d90..ad33f3f351 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java index f1099fbdea..5812674113 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt index 4cf1c3815d..45924af9cf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSource.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSource.kt index 17fb680712..b462e7a366 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSource.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSource.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceResult.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceResult.kt index c08e6e53fb..0ec6b0a704 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceResult.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceResult.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEntityDIModule.java index a8ef925fa0..4482401903 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt index bee9f376fd..8e5e762e97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcher.kt @@ -1,29 +1,29 @@ /* - * Copyright (c) 2004-2019, University of Oslo - * All rights reserved. + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.hisp.dhis.android.core.trackedentity.search diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEventFilter.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEventFilter.java index 788c352b45..3df9ce4fee 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEventFilter.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryEventFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnline.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnline.java index 58cdb49ac0..ce92bd1039 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnline.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnline.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt index b9a969f6dd..29cc165c5c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java index e643b72724..09aa9d77f9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelper.kt index d19cf4613a..c5f9e227c2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java index 41672b9a5c..bb26a05bed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderByItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java index 804f1071b6..97fb486ff3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryScopeOrderColumn.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerImporterVersion.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerImporterVersion.kt index 696c05b676..39ff728b06 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerImporterVersion.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerImporterVersion.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt index f25a808361..5f3ebd4430 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/TrackerPostParentCallHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/ImporterError.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/ImporterError.kt index 42dc554b14..6b17a63cfd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/ImporterError.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/ImporterError.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt index 6e876a2967..69f26b661f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt index 095aed0216..9d96b53b94 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobQueryErrorCatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReport.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReport.kt index 0a3406395f..e45e15b293 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReport.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReport.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt index fd7b9830b6..0dadf85d34 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEnrollmentHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt index 876434b919..6e1a4cf54e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportEventHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt index d02bba30ca..6ab8122385 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportFileResourceHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt index 7f9d5d3ccb..76bd569b6f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt index 7feb8f51bd..00a522331c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportRelationshipHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt index e1b2709ee8..33c4fae9b4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTrackedEntityHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt index aad0b73afc..258b29a520 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/JobReportTypeHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerConflictHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerConflictHelper.kt index c9970c012d..475553d4aa 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerConflictHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerConflictHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt index 0acd8601d1..ae9e0597ca 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt index 73aa8c69c0..01aa7a2c9a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterFileResourcesPostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterObjectType.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterObjectType.kt index e60663b2cd..b0248e00f4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterObjectType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterObjectType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPackageDIModule.java index 66330da190..aa8821f6f0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt index b89d238cd5..e59cbea7bf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterPostCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterService.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterService.kt index 5c076d5785..0bdbb20939 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobModuleWiper.kt index a8e324320a..aad35b7074 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobModuleWiper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObject.java b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObject.java index 274ce15d94..8f5c9e34e3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObject.java +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStore.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStore.kt index 73ab602b88..8b37ccdb69 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectTableInfo.java index af879c6bf3..bfad216346 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerJobObjectTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/DefaultInterpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/DefaultInterpreter.kt index 42eb5f9d95..d9a16ac085 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/DefaultInterpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/DefaultInterpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1000Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1000Interpreter.kt index b4a850465b..866e473225 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1000Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1000Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1001Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1001Interpreter.kt index 53b7f97c48..a19d12c009 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1001Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1001Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1002Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1002Interpreter.kt index fcbe4ccd8d..7ebbca2322 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1002Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1002Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1003Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1003Interpreter.kt index ad80951c2c..6e115f982f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1003Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1003Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1005Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1005Interpreter.kt index 25a17ca6b5..90bcd7d4ab 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1005Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1005Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1006Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1006Interpreter.kt index d4bdf72d49..b195fa8340 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1006Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1006Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1007Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1007Interpreter.kt index 947d0d3405..dd8e3a95d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1007Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1007Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1008Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1008Interpreter.kt index 4b72afa583..f2f749e815 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1008Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1008Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1009Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1009Interpreter.kt index cce4e61f52..276ab327b8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1009Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1009Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1032Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1032Interpreter.kt index 14064c88cd..43d4a16a54 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1032Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1032Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1063Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1063Interpreter.kt index a027e904c5..0d455f449a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1063Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1063Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1064Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1064Interpreter.kt index cc2e561551..7c3db0a222 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1064Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1064Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1069Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1069Interpreter.kt index aa79138f29..afdbff723c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1069Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1069Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1081Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1081Interpreter.kt index f4d18e7df4..509bea6eba 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1081Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1081Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1084Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1084Interpreter.kt index 2d427ae52a..46672e660c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1084Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1084Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1100Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1100Interpreter.kt index b16cef4a68..9a08439873 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1100Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1100Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1103Interpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1103Interpreter.kt index e44f16444e..4d4608037c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1103Interpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/E1103Interpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/ErrorCodeInterpreter.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/ErrorCodeInterpreter.kt index aabbd5434c..08c0fe88cf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/ErrorCodeInterpreter.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/ErrorCodeInterpreter.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterHelper.kt index 5dd6a52eb0..d278ea8169 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterSelector.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterSelector.kt index 1cd46b68aa..8fb9e3a932 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterSelector.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/interpreters/InterpreterSelector.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index 4c6e0a430e..2e6a07aa97 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUser.java b/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUser.java index 12d72d7c46..70e8dc34c2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUser.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserObjectRepository.java index 9736f48334..92cbbf0a73 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserTableInfo.java index c848cbd54b..d22a8251c9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AuthenticatedUserTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/Authority.java b/core/src/main/java/org/hisp/dhis/android/core/user/Authority.java index adc58acddd..32e6d6af23 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/Authority.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/Authority.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityCollectionRepository.java index 07c673a4ca..f054703ea5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityTableInfo.java index 50c214612e..c007ebeb7b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AuthorityTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/User.java b/core/src/main/java/org/hisp/dhis/android/core/user/User.java index 9115863f87..438ebe998b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/User.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/User.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentials.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentials.java index b3dc66916a..96be21b20b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentials.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentials.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsObjectRepository.java index 1adc862a07..7a9c65571c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsTableInfo.java index 07f87955c5..83d8277d3d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserCredentialsTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserInternalAccessor.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserInternalAccessor.java index bf81dc077f..5201cf2192 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserInternalAccessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserInternalAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java index 844af96a67..223292b2ed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserObjectRepository.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserObjectRepository.java index 9214f81780..6685d425a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserObjectRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserObjectRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLink.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLink.java index 2ac2ac77f4..3aeed156da 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLinkTableInfo.java index 8a7def4980..bf2c44b0f7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserOrganisationUnitLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserRole.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserRole.java index c5eee5c26f..6ea27e5d93 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserRole.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserRole.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleCollectionRepository.java index cbc4e36fd5..a680810779 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleTableInfo.java index 86c150265e..d1b9973c33 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserRoleTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/UserTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/user/UserTableInfo.java index 2571976e21..7c48de45bd 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/UserTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/UserTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index bfcba581d6..43c9dfdc8a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserEntityDIModule.java index e5daf1146d..df82220b30 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStore.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStore.java index c200738123..8b6940f78b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthenticatedUserStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallFetcher.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallFetcher.java index 9e8dbc03f2..f025610788 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallFetcher.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallFetcher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallProcessor.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallProcessor.java index 0b19cb028a..d7989e9a7d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallProcessor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityCallProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallFactory.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallFactory.java index 98fdcd726b..ce0a84db9d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEntityDIModule.java index 3c80f72b1f..653b9af686 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityService.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityService.java index b85ac25af5..d06f69aba3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityStore.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityStore.java index 44ff8e59db..c3081ef726 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AuthorityStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableFactory.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableFactory.java index 4f52878b56..96fe83d498 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableFactory.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index 8b3ebeb522..a74ddd0c04 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInDatabaseManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInDatabaseManager.kt index 2b168ac86a..8eed5b8997 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInDatabaseManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInDatabaseManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInExceptions.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInExceptions.kt index ff3d647fe0..cb1b9d417a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInExceptions.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInExceptions.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogOutCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogOutCall.kt index 6b9ab31cf6..cb2b93c486 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogOutCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogOutCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index 127210383b..7adb5d8478 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt index b96230b14c..1dcfcd84cc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAuthenticateCallErrorCatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCall.kt index d3f8cdf362..3f6bcf6da6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsEntityDIModule.java index 3e5ca879fa..a2ec0fe543 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java index afcc2bbd1e..adf043d7ed 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStore.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStore.java index e269cf67b1..18f8aa3ec9 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStoreImpl.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStoreImpl.java index a1254fea97..2ef877f124 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStoreImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserCredentialsStoreImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserEntityDIModule.java index 61c980ba9f..438a62dad7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserFields.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserFields.java index 9ebd669cfd..e6eb2b3bd0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserHandler.kt index 8bf7c6114a..d65b5d0390 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserInternalModule.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserInternalModule.kt index bb2dee8eae..58344a8993 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserInternalModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserInternalModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleDownloader.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleDownloader.java index cb9db4b47c..e7806d703a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleDownloader.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleDownloader.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java index 4538a2110e..71e840387c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleWiper.java index 93e829e25f..7e43c057cc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt index 512dc73963..2d9ef6e441 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkHelper.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkHelper.java index 10e834d5fc..1e0dba073a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkHelper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt index 358731ff92..84ac2e73de 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt index f42996248a..8709ba5f8d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserOrganisationUnitLinkStoreImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserPackageDIModule.java index 30bcc8e0af..0705dbb47e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleChildrenAppender.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleChildrenAppender.java index 58796a9e55..18b218b5af 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleChildrenAppender.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleChildrenAppender.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleEntityDIModule.java index 449138919f..40dc3efd4f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleFields.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleFields.java index 5e0cfab368..52134a35a1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleStore.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleStore.java index f5ae21fe1d..4204f269f6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserRoleStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserService.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserService.java index f6eca3bb43..97e04ece61 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserStore.java b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserStore.java index aa5f62b8f6..69db2bf70f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/openid/IntentWithRequestCode.kt b/core/src/main/java/org/hisp/dhis/android/core/user/openid/IntentWithRequestCode.kt index f2dd1b49a5..c261419a2e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/openid/IntentWithRequestCode.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/openid/IntentWithRequestCode.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectConfig.kt b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectConfig.kt index ec49b2a4c7..08da46ab2f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectConfig.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectConfig.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandler.kt index b31d75d13f..cb25fa1d5c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandlerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandlerImpl.kt index afdff166eb..90a62a7914 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandlerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectHandlerImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectLogoutHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectLogoutHandler.kt index 5868a75c69..1af145f13f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectLogoutHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectLogoutHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectRequestHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectRequestHelper.kt index 2bd1b590b5..9c5cf2a5d6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectRequestHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectRequestHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectTokenRefresher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectTokenRefresher.kt index 1e0565f609..082c89e6dc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectTokenRefresher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/openid/OpenIDConnectTokenRefresher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLink.java b/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLink.java index 50cb570cda..0150949cdb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLinkTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLinkTableInfo.java index 923ba2c247..a59d6cc830 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLinkTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/DataSetValidationRuleLinkTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/MissingValueStrategy.java b/core/src/main/java/org/hisp/dhis/android/core/validation/MissingValueStrategy.java index f37fe9e0a4..8e1166a53c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/MissingValueStrategy.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/MissingValueStrategy.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationModule.java b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationModule.java index 4853ee4b1e..901133fbea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRule.java b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRule.java index bfe9a08d5a..848d4d2ecf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleCollectionRepository.java index 6ce2e36c6d..dd8cb600a2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleExpression.java b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleExpression.java index 48459f373d..d6b31165a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleExpression.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleExpression.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleImportance.java b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleImportance.java index 5776b1ebc3..750e55f1d0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleImportance.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleImportance.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleOperator.java b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleOperator.java index 56f5badd7a..f2d990c699 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleOperator.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleOperator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleTableInfo.java b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleTableInfo.java index 5efac7dd59..96a930096b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleTableInfo.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/ValidationRuleTableInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationEngine.java b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationEngine.java index b4c8394c8a..38d3594211 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationEngine.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationEngine.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResult.java b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResult.java index 2d55b12400..261a61b130 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResult.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResult.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultSideEvaluation.java b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultSideEvaluation.java index e51338fefe..ae3a620510 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultSideEvaluation.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultSideEvaluation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultViolation.java b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultViolation.java index 96dbdd6531..362ead45fb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultViolation.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/ValidationResultViolation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineEntityDIModule.java index ba416ceb88..f0eb9cc206 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineImpl.java b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineImpl.java index 4b7517ac75..4caa99b46a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationEngineImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationExecutor.java b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationExecutor.java index 03322c4ff1..e2d1447775 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationExecutor.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/engine/internal/ValidationExecutor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkEntityDIModule.java index 7f62999c2c..a96b6081ea 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkStore.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkStore.java index cded59c037..37836d6d84 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/DataSetValidationRuleLinkStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleImpl.java index 79b145ca9e..2c8ab26e6f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleWiper.java index 709e70e1d1..df8a393018 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationPackageDIModule.java index 58808a5a06..7b7858c829 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleCall.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleCall.java index a424192f81..e1c31caeb1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleEntityDIModule.java index 51408013f6..eae5e6df68 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleEntityDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleExpressionFields.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleExpressionFields.java index 871ac8804f..c2d0a7f847 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleExpressionFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleExpressionFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleFields.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleFields.java index 8accb62523..901f70d2e2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleFields.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleFields.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleHandler.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleHandler.java index 30a9d9b74d..bafa7da654 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleHandler.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleService.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleService.java index 89fff1c0de..afe47fb6e1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleService.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStore.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStore.java index 44f2b6165f..1d68fb5242 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStore.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCall.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCall.java index 34fa0a1155..ba264b8608 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCall.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCall.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCallImpl.java b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCallImpl.java index dc7fa7b702..f4baf0f9b1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCallImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/validation/internal/ValidationRuleUidsCallImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/CategoryDimension.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/CategoryDimension.java index 2cfb87c924..4e1249c070 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/CategoryDimension.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/CategoryDimension.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItem.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItem.java index a036c9d181..b285d8d939 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItem.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramAttribute.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramAttribute.java index 1b5055e046..2f233ee43d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramAttribute.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramAttribute.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramDataElement.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramDataElement.java index e52382cd7b..7b55ff2f08 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramDataElement.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemProgramDataElement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemTableInfo.kt index 7b734bce8f..893d575c8b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemType.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemType.kt index c883f4dd91..90f405792e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/DataDimensionItemType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/DigitGroupSeparator.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/DigitGroupSeparator.kt index dcd0ab8dd8..b44a23bf8e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/DigitGroupSeparator.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/DigitGroupSeparator.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/DisplayDensity.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/DisplayDensity.kt index de46799620..5c31228fcf 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/DisplayDensity.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/DisplayDensity.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/HideEmptyItemStrategy.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/HideEmptyItemStrategy.kt index c4bc87875d..319c762df5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/HideEmptyItemStrategy.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/HideEmptyItemStrategy.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/Visualization.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/Visualization.java index 904445ee72..839eb5b55c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/Visualization.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/Visualization.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLink.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLink.java index 6761aad2dd..6a7d2d495f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLink.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLinkTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLinkTableInfo.kt index e79c35e78e..ad8ae4cb23 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLinkTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCategoryDimensionLinkTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java index c29e488993..62cd3a2cf6 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationCollectionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationModule.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationModule.kt index 93c6f23ed2..b2fc309ae3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationTableInfo.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationTableInfo.kt index 5f96281426..64a7894be7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationTableInfo.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationTableInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt index c374a1ab3e..4700e70690 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/VisualizationType.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/CategoryDimensionFields.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/CategoryDimensionFields.kt index dfb6d5d0ef..8dfad78186 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/CategoryDimensionFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/CategoryDimensionFields.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -7,8 +7,8 @@ * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * - * Redistributions in binary form must reproduce the above copyright notice), - fh.field(* this list of conditions and the following disclaimer in the documentation + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * Neither the name of the HISP project nor the names of its contributors may * be used to endorse or promote products derived from this software without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemEntityDIModule.kt index 03409a119c..27c2b263d3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemFields.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemFields.kt index 464f134479..0e768e4ccc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemFields.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -7,8 +7,8 @@ * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * - * Redistributions in binary form must reproduce the above copyright notice), - fh.field(* this list of conditions and the following disclaimer in the documentation + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * Neither the name of the HISP project nor the names of its contributors may * be used to endorse or promote products derived from this software without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeFields.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeFields.kt index 8492ea5099..12ce4fc884 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramAttributeFields.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -7,8 +7,8 @@ * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * - * Redistributions in binary form must reproduce the above copyright notice), - fh.field(* this list of conditions and the following disclaimer in the documentation + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * Neither the name of the HISP project nor the names of its contributors may * be used to endorse or promote products derived from this software without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementFields.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementFields.kt index e288662de8..b85b3fdf15 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemProgramDataElementFields.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -7,8 +7,8 @@ * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * - * Redistributions in binary form must reproduce the above copyright notice), - fh.field(* this list of conditions and the following disclaimer in the documentation + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * Neither the name of the HISP project nor the names of its contributors may * be used to endorse or promote products derived from this software without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStore.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStore.kt index a33be162f3..332c280d28 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/DataDimensionItemStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt index f1dbf13960..ac5668d25e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCall.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionChildrenAppender.kt index 8d7d267494..d9bb4f3147 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionEntityDIModule.kt index c96544b9f6..f28dafd997 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStore.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStore.kt index c558e1772f..7089bfc04a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationCategoryDimensionLinkStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationDataDimensionItemChildrenAppender.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationDataDimensionItemChildrenAppender.kt index 98cb5adfcf..3159915a4f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationDataDimensionItemChildrenAppender.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationDataDimensionItemChildrenAppender.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEntityDIModule.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEntityDIModule.kt index 2677d3e564..e27a109529 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEntityDIModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationEntityDIModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt index aea2af873a..4a5f75b2a7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationFields.kt @@ -7,8 +7,8 @@ * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * - * Redistributions in binary form must reproduce the above copyright notice), - fh.field(* this list of conditions and the following disclaimer in the documentation + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * Neither the name of the HISP project nor the names of its contributors may * be used to endorse or promote products derived from this software without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandler.kt index 0ff6ce0ca7..b7670e2f26 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationInternalModule.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationInternalModule.kt index 2394af507a..8c2d995d28 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationInternalModule.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationInternalModule.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleDownloader.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleDownloader.kt index 716f7ad638..a551093c14 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleDownloader.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleDownloader.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleImpl.kt index 07010c03f6..d46be35d79 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleImpl.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleWiper.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleWiper.kt index 8312f83f22..c57732e3f3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleWiper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationModuleWiper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationPackageDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationPackageDIModule.java index 001857209a..c48d9cfb29 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationPackageDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationPackageDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt index f3c7ef1a72..cc47b8d0a7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationService.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStore.kt b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStore.kt index 6881329d69..6041954a8a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/visualization/internal/VisualizationStore.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/D2ModuleWipers.java b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/D2ModuleWipers.java index cddb9356a8..bbeeb490d5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/D2ModuleWipers.java +++ b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/D2ModuleWipers.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/ModuleWiper.java b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/ModuleWiper.java index 8d704bbeb7..8a80b5ba8c 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/ModuleWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/ModuleWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/TableWiper.java b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/TableWiper.java index 784e72a26d..2ca4f7028d 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/TableWiper.java +++ b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/TableWiper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeDIModule.java index b73ceaac20..210f68e92b 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeDIModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModule.java b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModule.java index c9610d12f4..e058b4d4a0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleImpl.java b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleImpl.java index 916a4c7471..7009aeb300 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleImpl.java +++ b/core/src/main/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/AttributeSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/AttributeSamples.java index 57934cd044..9428789c9d 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/AttributeSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/AttributeSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/DataElementAttributeValueLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/DataElementAttributeValueLinkSamples.java index d80994ccbb..bbe8a24715 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/DataElementAttributeValueLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/DataElementAttributeValueLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramAttributeValueLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramAttributeValueLinkSamples.java index 5aae8f680c..57e4940caa 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramAttributeValueLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramAttributeValueLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramStageAttributeValueLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramStageAttributeValueLinkSamples.java index cae2ca7223..1a4a043b2a 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramStageAttributeValueLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/attribute/ProgramStageAttributeValueLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryComboLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryComboLinkSamples.java index cb5abf8e15..105b357776 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryComboLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryComboLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryOptionLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryOptionLinkSamples.java index 261fafd006..6df932be5a 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryOptionLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryCategoryOptionLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryComboSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryComboSamples.java index e72ba818b0..4f07f7a805 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryComboSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryComboSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboCategoryOptionLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboCategoryOptionLinkSamples.java index 80eb91d36f..f37ea7847a 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboCategoryOptionLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboCategoryOptionLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboSamples.java index a81faf1658..be3bf3d992 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionComboSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionSamples.java index 5bc2fd77e2..ad51239338 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/category/CategoryOptionSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/common/ValueTypeDeviceRenderingSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/common/ValueTypeDeviceRenderingSamples.java index 3d936fb8d6..920d38ca95 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/common/ValueTypeDeviceRenderingSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/common/ValueTypeDeviceRenderingSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/configuration/ConfigurationSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/configuration/ConfigurationSamples.java index 0f8fbb8d45..98c6a5f985 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/configuration/ConfigurationSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/configuration/ConfigurationSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/constant/ConstantSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/constant/ConstantSamples.java index 3cc283ce14..bb5014edf6 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/constant/ConstantSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/constant/ConstantSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementOperandSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementOperandSamples.java index 710acbb2ff..177b101172 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementOperandSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementOperandSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementSamples.java index f27a2553cc..456f1ffc69 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataelement/DataElementSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataInputPeriodSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataInputPeriodSamples.java index b060116eef..5992488cd7 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataInputPeriodSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataInputPeriodSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompleteRegistrationSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompleteRegistrationSamples.java index 4bdf8362b0..08267a2cf7 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompleteRegistrationSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompleteRegistrationSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompulsoryDataElementOperandLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompulsoryDataElementOperandLinkSamples.java index 428436a28d..0c9aab8207 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompulsoryDataElementOperandLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetCompulsoryDataElementOperandLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetElementSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetElementSamples.java index 42de938a71..35aa011fce 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetElementSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetElementSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetOrganisationUnitLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetOrganisationUnitLinkSamples.java index c309a20aeb..8cfc83ba26 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetOrganisationUnitLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetOrganisationUnitLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetSamples.java index d49483c550..7b4c95d522 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/DataSetSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionDataElementLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionDataElementLinkSamples.java index d4c9893eaf..de517b4b26 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionDataElementLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionDataElementLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionGreyedFieldsLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionGreyedFieldsLinkSamples.java index 4bf43fda10..ebd46dd303 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionGreyedFieldsLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionGreyedFieldsLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionIndicatorLinkSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionIndicatorLinkSamples.kt index bc4a7a32f0..9246160d7a 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionIndicatorLinkSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionIndicatorLinkSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionSamples.java index a67d712e5b..b58f0fc28d 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/dataset/SectionSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datastore/KeyValuePairSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datastore/KeyValuePairSamples.kt index 4263a1a2e9..db7e19c02b 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datastore/KeyValuePairSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datastore/KeyValuePairSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueConflictSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueConflictSamples.kt index d96550f294..829aacdeb8 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueConflictSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueConflictSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueSamples.kt index 600ccdc3c0..8133d301d4 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueUtils.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueUtils.java index a30c0a9fd6..ea71784c87 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueUtils.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/datavalue/DataValueUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/enrollment/EnrollmentSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/enrollment/EnrollmentSamples.java index 5ec34bd0b4..29221dc57f 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/enrollment/EnrollmentSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/enrollment/EnrollmentSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventDataFilterSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventDataFilterSamples.java index a4503e1a48..329120683e 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventDataFilterSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventDataFilterSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventFilterSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventFilterSamples.java index b28dd0032e..9853015510 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventFilterSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/event/EventFilterSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/FileResourceSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/FileResourceSamples.kt index 94baa5f430..2f5eb44e59 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/FileResourceSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/FileResourceSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/RandomGeneratedInputStream.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/RandomGeneratedInputStream.java index a46d6326f8..0125e41eec 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/RandomGeneratedInputStream.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/fileresource/RandomGeneratedInputStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/imports/TrackerImportConflictSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/imports/TrackerImportConflictSamples.java index e1e654a8a3..41a1837a17 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/imports/TrackerImportConflictSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/imports/TrackerImportConflictSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/DataSetIndicatorLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/DataSetIndicatorLinkSamples.java index 90ca0314e4..82c0009a68 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/DataSetIndicatorLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/DataSetIndicatorLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/IndicatorSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/IndicatorSamples.java index 1749d48d0b..8342d7d9e8 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/IndicatorSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/indicator/IndicatorSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/DataElementLegendSetLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/DataElementLegendSetLinkSamples.java index 7cdbe1337c..7d88a843ea 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/DataElementLegendSetLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/DataElementLegendSetLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/IndicatorLegendSetLinkSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/IndicatorLegendSetLinkSamples.kt index df788547aa..04c5ece9fe 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/IndicatorLegendSetLinkSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/IndicatorLegendSetLinkSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSamples.java index a87336685b..31aa5c0743 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSetSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSetSamples.java index 3bfac7cd5b..701057a71e 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSetSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/LegendSetSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/ProgramIndicatorLegendSetLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/ProgramIndicatorLegendSetLinkSamples.java index 66790a5f3e..5a9b1efc88 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/ProgramIndicatorLegendSetLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/legendset/ProgramIndicatorLegendSetLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/D2ErrorSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/D2ErrorSamples.java index ecd25fd7ad..c6760a74d0 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/D2ErrorSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/D2ErrorSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/ForeignKeyViolationSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/ForeignKeyViolationSamples.java index 28a333d7fa..bbaeafde58 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/ForeignKeyViolationSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/maintenance/ForeignKeyViolationSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/note/NoteSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/note/NoteSamples.java index 2c8f6c317a..0a479e9220 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/note/NoteSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/note/NoteSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupOptionLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupOptionLinkSamples.java index 307683d1d7..66939a5bc0 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupOptionLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupOptionLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupSamples.java index 27edfee1d2..235440b327 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/option/OptionGroupSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitGroupSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitGroupSamples.java index 92b5bc5505..e10f9d3d11 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitGroupSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitGroupSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitLevelSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitLevelSamples.java index b94962450f..90010a2520 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitLevelSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitLevelSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitOrganisationUnitGroupLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitOrganisationUnitGroupLinkSamples.java index d089d1329b..fbbfedc8d1 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitOrganisationUnitGroupLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitOrganisationUnitGroupLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitProgramLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitProgramLinkSamples.java index cfa3f1ddf4..de7bb36111 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitProgramLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitProgramLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitSamples.java index 372d458e80..10fa784720 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/organisationunit/OrganisationUnitSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/period/PeriodSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/period/PeriodSamples.java index ec0fc0fae5..82a1e63f76 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/period/PeriodSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/period/PeriodSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/AnalyticsPeriodBoundarySamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/AnalyticsPeriodBoundarySamples.java index ef8abb9ae5..903922c873 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/AnalyticsPeriodBoundarySamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/AnalyticsPeriodBoundarySamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramIndicatorSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramIndicatorSamples.java index 83da7b8d43..5e9986aba0 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramIndicatorSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramIndicatorSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleActionSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleActionSamples.java index 9ddca1ac24..b593a7d136 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleActionSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleActionSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleSamples.java index 49a1dcaaf7..6c49f2d966 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleVariableSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleVariableSamples.java index 433317015c..ca6fe2f783 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleVariableSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramRuleVariableSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSamples.java index 090b68c64d..1fcbfa985a 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionAttributeLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionAttributeLinkSamples.java index 1c8d8f89a4..9b1425d749 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionAttributeLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionAttributeLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionSamples.kt index 7eb28354bf..7c66379336 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramSectionSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageDataElementSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageDataElementSamples.java index 6413fd3dc0..7c37836be8 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageDataElementSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageDataElementSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSamples.java index 51b31e2bca..40ed8cce22 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionDataElementLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionDataElementLinkSamples.java index 0f92c6fa04..b493bc426a 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionDataElementLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionDataElementLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionSamples.kt index 7133785d03..45f08e7ddc 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramStageSectionSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramTrackedEntityAttributeSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramTrackedEntityAttributeSamples.java index 13431cef03..0197396e48 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramTrackedEntityAttributeSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/program/ProgramTrackedEntityAttributeSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipConstraintSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipConstraintSamples.java index f675ad3ca6..2a056ef7b7 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipConstraintSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipConstraintSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipItemSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipItemSamples.java index c5340b4515..0fd16ad045 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipItemSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipItemSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java index cbc59e9f3f..5a5429e53c 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipTypeSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipTypeSamples.java index 4f938ae649..f07a7c6297 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipTypeSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/relationship/RelationshipTypeSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/resource/ResourceSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/resource/ResourceSamples.java index 2322b57f40..a22ab13c77 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/resource/ResourceSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/resource/ResourceSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/AnalyticsSettingsSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/AnalyticsSettingsSamples.kt index 2867d9eff7..e361b0d898 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/AnalyticsSettingsSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/AnalyticsSettingsSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/DataSetSettingSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/DataSetSettingSamples.java index 4810e12f6a..eeec7e3bda 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/DataSetSettingSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/DataSetSettingSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/FilterSettingSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/FilterSettingSamples.java index 477ceee69c..a7a5c959b9 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/FilterSettingSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/FilterSettingSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java index 1714a8ff40..d0d603f736 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/GeneralSettingsSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramConfigurationSettingSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramConfigurationSettingSamples.java index cf14a81f02..3b96ed6139 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramConfigurationSettingSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramConfigurationSettingSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramSettingSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramSettingSamples.java index 3679cc8899..f2cae3a6ee 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramSettingSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/ProgramSettingSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SynchronizationSettingsSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SynchronizationSettingsSamples.java index 1d73afe752..5f8fa5adf4 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SynchronizationSettingsSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SynchronizationSettingsSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SystemSettingSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SystemSettingSamples.java index 63039c45f0..f8e97cdd28 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SystemSettingSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/SystemSettingSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/UserSettingsSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/UserSettingsSamples.java index a4c3154765..41aa885517 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/UserSettingsSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/settings/UserSettingsSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt index f9c6ae8422..b9c739cac2 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSMetadataIdSample.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt index 49157c047b..9b603de7e3 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/sms/SMSOngoingSubmissionSample.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/systeminfo/SystemInfoSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/systeminfo/SystemInfoSamples.java index 4edc24db25..8c8abf988a 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/systeminfo/SystemInfoSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/systeminfo/SystemInfoSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/EventSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/EventSamples.java index fb90f48ac6..bb87851f51 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/EventSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/EventSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ReservedValueSettingSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ReservedValueSettingSamples.java index f452ba5aae..2676a9a6ba 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ReservedValueSettingSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ReservedValueSettingSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeSamples.java index 02e083fcc5..f26ebf47d4 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeValueSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeValueSamples.java index 3ba377f5e7..f3bde98cc4 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeValueSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityAttributeValueSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityDataValueSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityDataValueSamples.java index e2576d7a9e..96e680c957 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityDataValueSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityDataValueSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceEventFilterSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceEventFilterSamples.java index d3a1b5ad72..5101514836 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceEventFilterSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceEventFilterSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceFilterSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceFilterSamples.java index 600847dcd3..1782746e89 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceFilterSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceFilterSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceSamples.java index 4e8e179a51..6c5a73e028 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityInstanceSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeAttributeSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeAttributeSamples.java index 7d93fcb3ea..d759958784 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeAttributeSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeAttributeSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeSamples.java index 7d297ecb0c..b329b49866 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/TrackedEntityTypeSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt index 20ac07ff63..57290befc9 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/internal/TrackerQueryCommonParamsSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt index 9aacc52088..aad5370901 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/trackedentity/ownership/ProgramTempOwnerSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/tracker/importer/internal/TrackerJobObjectSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/tracker/importer/internal/TrackerJobObjectSamples.kt index 037ffcfd55..a4507574f2 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/tracker/importer/internal/TrackerJobObjectSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/tracker/importer/internal/TrackerJobObjectSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthenticatedUserSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthenticatedUserSamples.java index 328a49f988..3ab194b0e7 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthenticatedUserSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthenticatedUserSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthoritySamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthoritySamples.java index 0401db24e7..c8784f838b 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthoritySamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/AuthoritySamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserCredentialsSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserCredentialsSamples.java index 78646c718f..b18a66f811 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserCredentialsSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserCredentialsSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserOrganisationUnitLinkSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserOrganisationUnitLinkSamples.java index eaeb1f5b64..74e654a27b 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserOrganisationUnitLinkSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserOrganisationUnitLinkSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserRoleSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserRoleSamples.java index 219e34a859..32b553da33 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserRoleSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserRoleSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserSamples.java index 1ef25be3be..403c7860cd 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/user/UserSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/utils/FillPropertiesTestUtils.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/utils/FillPropertiesTestUtils.kt index 0acfdcc30a..9769363f86 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/utils/FillPropertiesTestUtils.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/utils/FillPropertiesTestUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/validation/ValidationRuleSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/validation/ValidationRuleSamples.java index aff2261862..de525f5e9e 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/validation/ValidationRuleSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/validation/ValidationRuleSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/DataDimensionItemSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/DataDimensionItemSamples.kt index 0d9a86af28..3958c6a412 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/DataDimensionItemSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/DataDimensionItemSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationCategoryDimensionLinkSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationCategoryDimensionLinkSamples.kt index 51d3161136..5d8c711ce6 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationCategoryDimensionLinkSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationCategoryDimensionLinkSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationSamples.kt index 85664fa089..bf9939eafa 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/data/visualization/VisualizationSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictSamples.kt index 967127832b..16daa5f768 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/DataValueImportConflictSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncSamples.java index 929d3bd4ae..ee767bd640 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/event/internal/EventSyncSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/event/internal/EventSyncSamples.java index df1bd54020..1c9a47cd56 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/event/internal/EventSyncSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/event/internal/EventSyncSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedImportConflictSamples.kt b/core/src/sharedTest/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedImportConflictSamples.kt index c9b14465de..6ec5241b70 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedImportConflictSamples.kt +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedImportConflictSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/sharedTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncSamples.java b/core/src/sharedTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncSamples.java index 867f86d5ee..b2f59b4462 100644 --- a/core/src/sharedTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncSamples.java +++ b/core/src/sharedTest/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceSyncSamples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/Inject.java b/core/src/test/java/org/hisp/dhis/android/core/Inject.java index 4f5927f414..86048aabb1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/Inject.java +++ b/core/src/test/java/org/hisp/dhis/android/core/Inject.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepositoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepositoryShould.kt index 1f2ac43a6b..8f14ef6721 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepositoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/AnalyticsRepositoryShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelperShould.kt index 3eeb2533c7..0c4490624b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsOrganisationUnitHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelperShould.kt index 35515a2bdc..9dd0843456 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceDimensionHelperShould.kt @@ -1,6 +1,6 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceHelperSamples.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceHelperSamples.kt index f70e4463d5..77bdbbbfe0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceHelperSamples.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceHelperSamples.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt index bd362f00d3..761656bb9d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsServiceMetadataHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelperShould.kt index 9144e5c584..314e17d14d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/aggregated/internal/AnalyticsVisualizationsServiceDimensionHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryShould.kt index e3860aab4f..cc6922053d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/analytics/linelist/EventLineListRepositoryShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticatorShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticatorShould.java index 030c6ec986..9f7db82b86 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticatorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/authentication/internal/ParentAuthenticatorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java index 74895231cb..89108a5033 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/executors/internal/APICallExecutorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldShould.java index 9344f44060..075fed9e73 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterShould.java index a26204ad97..9e0cf4ba3a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsConverterShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsShould.java index 5545301a29..6a752e4c9a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/fields/internal/FieldsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterShould.java index d3afba0169..522272916b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterConverterShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterShould.java index 7f5ffc713f..981467140b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/filters/internal/FilterShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngineShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngineShould.java index ae43b70eb9..0e160c9508 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngineShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/paging/internal/ApiPagingEngineShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/api/testutils/RetrofitFactory.java b/core/src/test/java/org/hisp/dhis/android/core/arch/api/testutils/RetrofitFactory.java index 1ea4a376fa..bbc678dcbc 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/api/testutils/RetrofitFactory.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/api/testutils/RetrofitFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/db/MultipleTableQueryBuilderShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/db/MultipleTableQueryBuilderShould.java index d51c2afc17..544537bb0b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/db/MultipleTableQueryBuilderShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/db/MultipleTableQueryBuilderShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/db/WhereClauseBuilderShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/db/WhereClauseBuilderShould.java index 4b645029a1..0a0c731cc9 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/db/WhereClauseBuilderShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/db/WhereClauseBuilderShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImplShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImplShould.java index 5094ad7461..24750afbc5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImplShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/TransactionImplShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java index 1c2f4d45a0..121bc2e8f5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/db/access/internal/UnencryptedDatabaseAdapterShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderShould.java index d9e8629591..3ada9ef5ed 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/db/querybuilders/internal/SQLStatementBuilderShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelperShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelperShould.java index 3882afa987..c7b4fb5791 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/CoordinateHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelperShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelperShould.java index 311477317d..2f07498a62 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/GeometryHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/ResultShould.kt b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/ResultShould.kt index 00ceb74819..523e2b49e6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/ResultShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/ResultShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UserHelperShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UserHelperShould.java index 4826405405..77ec448982 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UserHelperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UserHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UtilsShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UtilsShould.java index d736e6ecfe..4ea344614b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UtilsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/UtilsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitionerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitionerShould.kt index ea9ea51424..c0b807c505 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitionerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/helpers/internal/MultiDimensionalPartitionerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactoryShould.kt index 65e87a48ae..dac057b224 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/json/internal/ObjectMapperFactoryShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/collection/RepositoryPagingShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/collection/RepositoryPagingShould.java index d42135ea5c..036a5d17e0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/collection/RepositoryPagingShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/collection/RepositoryPagingShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnectorShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnectorShould.java index f17badd3b3..e73c4aeeee 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnectorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/BooleanFilterConnectorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnectorShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnectorShould.java index 5041bce48b..11e8b0e0c7 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnectorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/filters/internal/UnwrappedEqInFilterConnectorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/scope/WhereClauseFromScopeBuilderShould.java b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/scope/WhereClauseFromScopeBuilderShould.java index 06034e8f64..ca3cd6ca1c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/scope/WhereClauseFromScopeBuilderShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/arch/repositories/scope/WhereClauseFromScopeBuilderShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeShould.java b/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeShould.java index 8bade7569d..ebb02b62d5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeValueShould.java b/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeValueShould.java index 70b3e8ef8b..72afa932f2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeValueShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/attribute/AttributeValueShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryComboShould.java b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryComboShould.java index 344e0148d4..cdeca26ceb 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryComboShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryComboShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboServiceShould.kt index 0ecaab9914..318d24a64e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboServiceShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboShould.java b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboShould.java index b71a37e196..2e044de3cb 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionComboShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitsShould.java b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitsShould.java index 14dfbc1765..360a62ca97 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionOrganisationUnitsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionShould.java b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionShould.java index ec4b9dc955..4c55bca244 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryOptionShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryShould.java b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryShould.java index c8a58db23b..05c7a75258 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/category/CategoryShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/category/CategoryShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandlerShould.java index e3f98386f0..f218ea6b77 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/category/internal/CategoryComboHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/AccessShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/AccessShould.java index 1847d27743..bd120caf89 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/AccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/AccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java index b724bf7785..90b709a4dd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/BaseCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/BaseObjectShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/BaseObjectShould.java index d5e087067c..de38ddf0f2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/BaseObjectShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/BaseObjectShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/DataAccessShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/DataAccessShould.java index 63a7635ad8..2f7e625cd9 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/DataAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/DataAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelperShould.kt index a799ae2da1..243d36a4c4 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/DateFilterPeriodHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/EndpointPayloadCallAbstractShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/EndpointPayloadCallAbstractShould.java index 8e56e270fc..d0027b1b04 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/EndpointPayloadCallAbstractShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/EndpointPayloadCallAbstractShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/ObjectShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/ObjectShould.java index c7ceb0f7f7..ec8d23e066 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/ObjectShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/ObjectShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingShould.java index a081e0279a..dd1a6d5d15 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeDeviceRenderingShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeRenderingShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeRenderingShould.java index df2d3585c6..2a15f1e076 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeRenderingShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/ValueTypeRenderingShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt index 8260357aa1..58698b431b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/internal/TrackerDataManagerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandlerShould.java index d1368de62f..14b3a1a6bd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/rendering/internal/ValueTypeRenderingHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidatorShould.kt index 30f0d40fbe..66912c235b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/BooleanValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidatorShould.kt index b20420747f..a52088b338 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/CoordinateValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidatorShould.kt index df652cdbb4..5f12989472 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateTimeValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidatorShould.kt index 77a573be90..90639f3957 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/DateValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidatorShould.kt index b829001d07..a0d09cff1d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/EmailValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidatorShould.kt index cf51e8e890..2c250cb2a2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerNegativeValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidatorShould.kt index 7432e9cf5c..5e102d6351 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerPositiveValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorShould.kt index 7d31a4615b..301e8dace6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidatorShould.kt index b1f43280eb..7e97d9a763 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/IntegerZeroOrPositiveValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidatorShould.kt index 2796694a74..01c5bbd7a5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LetterValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidatorShould.kt index a0b5a71def..14d0222177 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/LongTextValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidatorShould.kt index 5a19281263..de432b6e71 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/NumberValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidatorShould.kt index f14d90d040..cec383fb47 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PercentageValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidatorShould.kt index a3fc58a700..65127708f1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/PhoneNumberValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidatorShould.kt index d69433066a..a6f65483c9 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TextValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidatorShould.kt index eb014274a8..c232c531d4 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TimeValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidatorShould.kt index 415893140e..65bd507eab 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/TrueOnlyValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidatorShould.kt index 166919c69a..d0031f7cab 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UidValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidatorShould.kt index 6ac8bd3320..854f9bc77d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UnitIntervalValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidatorShould.kt index 80c6c22374..cc2b475f39 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/UrlValidatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValidatorShouldHelper.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValidatorShouldHelper.kt index 3fb6f0d668..e038190527 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValidatorShouldHelper.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValidatorShouldHelper.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidatorGetterShould.kt b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidatorGetterShould.kt index 0e993ffb1f..43223de814 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidatorGetterShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/common/valuetype/validation/validators/ValueTypeValidatorGetterShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGeneratorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGeneratorShould.kt index 0895ef3680..df59b8934b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGeneratorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabaseNameGeneratorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationHelperShould.kt index c96850977e..b3fc3328d3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt index ad27207687..b6b6b55b58 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/DatabasesConfigurationShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2ManagerUnitShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2ManagerUnitShould.kt index dd1e3b0ed8..c7e17cff86 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2ManagerUnitShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerForD2ManagerUnitShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt index 98de5bf8f4..d645f584fd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/MultiUserDatabaseManagerUnitShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParserShould.kt b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParserShould.kt index 15f2172674..97b039898c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParserShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/configuration/internal/ServerUrlParserShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/constant/ConstantShould.java b/core/src/test/java/org/hisp/dhis/android/core/constant/ConstantShould.java index 0c5ac5d141..94479de3dd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/constant/ConstantShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/constant/ConstantShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataapproval/DataApprovalShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataapproval/DataApprovalShould.java index 3b38841df4..50c60f939c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataapproval/DataApprovalShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataapproval/DataApprovalShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementOperandShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementOperandShould.java index 199bccd06a..47e378042d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementOperandShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementOperandShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementShould.java index 9ac094fd60..14f24686c7 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataelement/DataElementShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java index 9503d4e5d4..480b21bfc1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataelement/internal/DataElementHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataInputPeriodShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataInputPeriodShould.java index 23602d8065..3ca2988458 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataInputPeriodShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataInputPeriodShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationShould.java index 6efb09782c..d4fabfb48e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationWithCompletedShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationWithCompletedShould.java index d25125eaba..72a0847672 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationWithCompletedShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetCompleteRegistrationWithCompletedShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetShould.java index 1faec301d7..fed8d75b7a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/DataSetShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/SectionShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/SectionShould.java index 6584395bc9..2eea97923d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/SectionShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/SectionShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandlerShould.java index 59197e9eb9..91b2cc8d99 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetCompleteRegistrationImportHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandlerShould.java index 12503b08eb..5aee8b24a6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/DataSetHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/SectionHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/SectionHandlerShould.java index 9d71f9bd94..ce4807cf42 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/SectionHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/dataset/internal/SectionHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetEmptyShould.java b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetEmptyShould.java index c8ef868399..d337b2ffaa 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetEmptyShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetEmptyShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetOnlyCommonFieldsShould.java b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetOnlyCommonFieldsShould.java index d890f91352..162eaf9ad2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetOnlyCommonFieldsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetOnlyCommonFieldsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetShould.java b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetShould.java index 665d55c834..91e07a8362 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetSinglePeriodShould.java b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetSinglePeriodShould.java index f7cbfe2abf..627b25e435 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetSinglePeriodShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueSetSinglePeriodShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueShould.java b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueShould.java index 01683063ff..fb56b0d7c0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/DataValueShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandlerShould.java index 0f6aefd0bb..8329958dbc 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/DataValueImportHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflictShould.kt index f8a11b8621..87705a2c8f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/IndexedDataValueConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflictShould.kt index dbea42e521..df615673b5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/InvalidDataElementTypeConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflictShould.kt index f31afc1a5f..26c60596d6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PastExpiryDateConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflictShould.kt index 161c8fa85b..a929d333d6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/datavalue/internal/conflicts/PeriodAfterLatestOpenFutureConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactoryShould.java b/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactoryShould.java index 27849d8553..76842bd3ee 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactoryShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataCallBundleFactoryShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculatorShould.java b/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculatorShould.java index 80d9904666..5a3509fcdb 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculatorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/domain/aggregated/data/internal/AggregatedDataSyncLastUpdatedCalculatorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt index a45bd5ded6..a1def4d426 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/domain/metadata/MetadataCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt index 34310a713f..96a44933ec 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentServiceShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentShould.java b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentShould.java index 022ed37161..b5d7e18e9e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/EnrollmentShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt index 02063e888a..f38a313e2e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt index dec151f336..ccd38c3c53 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentImportHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/EventDownloaderShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/EventDownloaderShould.kt index b06b71ee96..fc416b21ec 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/EventDownloaderShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/EventDownloaderShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/EventFilterShould.java b/core/src/test/java/org/hisp/dhis/android/core/event/EventFilterShould.java index ba0e8a85a7..9a2b6d625d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/EventFilterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/event/EventFilterShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt index 21b8ba44e3..cac7f99bf8 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/EventServiceShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/EventShould.java b/core/src/test/java/org/hisp/dhis/android/core/event/EventShould.java index 070c43c53f..4927c66d81 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/EventShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/event/EventShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventDateUtilsShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventDateUtilsShould.kt index 3c325452cc..663730455a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventDateUtilsShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventDateUtilsShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt index c4ffbe4e39..5d1a5a6edf 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventEndpointCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventFilterHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventFilterHandlerShould.java index 77a965a793..a9e063572e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventFilterHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventFilterHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt index 28ab939ae5..6f5a828b96 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt index 6cef2839f2..e490d0d75f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventImportHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt index 88979d8d2c..5d7e5d5dfe 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryBundleFactoryShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryShould.kt index d4eecd901d..18ffa5e978 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventQueryShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapterShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapterShould.kt index cf3ee92abc..56fdd1adc8 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapterShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/search/EventCollectionRepositoryAdapterShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepositoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepositoryShould.kt index b24712ed37..6b70abebdb 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepositoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryCollectionRepositoryShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelperShould.kt index 4987dab663..c0ba2ba148 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/search/EventQueryRepositoryScopeHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt index 30d808058f..075ce3df55 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/DataValueImportSummaryWebResponseShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportEnrollmentShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportEnrollmentShould.java index 1cb119fb46..f8c67e601a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportEnrollmentShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EnrollmentImportEnrollmentShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EventImportEventShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EventImportEventShould.java index 6985f7ed6c..613116055c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EventImportEventShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/EventImportEventShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt index 75c08b0f56..da5373e176 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageBreakGlassSuccessfulShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt index ff2ff027ac..4a00828dfa 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageClosedProgramShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt index 131218941b..97cdd0b2e2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/HttpMessageOwnershipDeniedShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportConflictShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportConflictShould.java index 8e458b026b..4860ffb1b1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportConflictShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportConflictShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportCountShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportCountShould.java index 01a44f0c22..547fdfaa95 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportCountShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/ImportCountShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponseShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponseShould.java index 46d41db3c4..6831d1d15d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponseShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipDeleteWebResponseShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponseShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponseShould.java index 1d65a7b3b2..d9f8670909 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponseShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/RelationshipWebResponseShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummariesShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummariesShould.java index 56e4cbca80..b94d79f335 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummariesShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummariesShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaryShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaryShould.java index ce54ec8c62..034b195b5a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaryShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIImportSummaryShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseShould.java b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseShould.java index 6cce826a5d..729d97c97d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/TEIWebResponseShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflictShould.kt index 2dfe65bb54..ccb7a0d209 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BadAttributePatternConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BaseConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BaseConflictShould.kt index e1c68329cd..e842f5338c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BaseConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/BaseConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflictShould.kt index 24d0d8ba52..2430ea7a20 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentHasInvalidProgramConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflictShould.kt index 76991fb921..7ce0f36b6f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EnrollmentNotFoundConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflictShould.kt index 66bb8ecb67..64cafa64c2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflictShould.kt index f2bd79e66f..13a1800a14 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventHasInvalidProgramStageConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflictShould.kt index 3b9abe43c2..b19554320f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/EventNotFoundConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflictShould.kt index 61a43c5116..7a5cb28e57 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceAlreadyAssignedConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflictShould.kt index d8ffe2240e..885a1abca9 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/FileResourceReferenceNotFoundConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflictShould.kt index a425f2e9d1..d9cd92af35 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidAttributeValueTypeConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflictShould.kt index 0c7d31246b..b4f547eca6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidDataValueConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflictShould.kt index 95b00940e1..05c7496d84 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/InvalidTrackedEntityTypeConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflictShould.kt index b430277edc..007b48186a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingEnrollmentCascadeDeleteAuthorityConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflictShould.kt index b2427a5f85..9d223f0944 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/LackingTEICascadeDeleteAuthorityConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflictShould.kt index 6a3d0d4a9f..72706aae79 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingAttributeConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflictShould.kt index 43fc129562..4ac5f65317 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/MissingDataElementConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflictShould.kt index f50755489f..6b2da3895b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/NonUniqueAttributeConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflictShould.kt b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflictShould.kt index 44fc7afd0c..276944066b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflictShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/imports/internal/conflicts/TrackedEntityInstanceNotFoundConflictShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorShould.java b/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorShould.java index e42e0dad1e..29fe7f5946 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorTypeShould.java b/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorTypeShould.java index 504cc1ce08..bc07f27543 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorTypeShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/indicator/IndicatorTypeShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt index fd3f1494db..8fdf97967d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/indicator/datasetindicatorengine/DataSetIndicatorEvaluatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendSetShould.java b/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendSetShould.java index 6050f4333a..0664e299f0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendSetShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendSetShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendShould.java b/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendShould.java index 2ee173b1c8..e70687a8ea 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/legendset/LegendShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandlerShould.java index bbb7979653..f77fa64c06 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/legendset/internal/LegendSetHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsServiceShould.java b/core/src/test/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsServiceShould.java index c131f2c9ae..4bc04251b6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsServiceShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/maintenance/PerformanceHintsServiceShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/note/Note29Should.java b/core/src/test/java/org/hisp/dhis/android/core/note/Note29Should.java index af4fae8088..466407358a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/note/Note29Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/note/Note29Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/note/Note30Should.java b/core/src/test/java/org/hisp/dhis/android/core/note/Note30Should.java index 20b1ddf194..0a50244b53 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/note/Note30Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/note/Note30Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/option/OptionGroupShould.java b/core/src/test/java/org/hisp/dhis/android/core/option/OptionGroupShould.java index 0a3a6b7262..6c96e449cd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/option/OptionGroupShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/option/OptionGroupShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/option/OptionSetShould.java b/core/src/test/java/org/hisp/dhis/android/core/option/OptionSetShould.java index c390dcd16e..e6a4a9f73f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/option/OptionSetShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/option/OptionSetShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/option/OptionShould.java b/core/src/test/java/org/hisp/dhis/android/core/option/OptionShould.java index e14e2f9398..35189b220f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/option/OptionShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/option/OptionShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/option/internal/OptionHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/option/internal/OptionHandlerShould.java index f94a4260fc..dfb755c4d0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/option/internal/OptionHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/option/internal/OptionHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupShould.java b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupShould.java index 029cd16212..f5c0edc2db 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitGroupShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelShould.java b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelShould.java index 47810a1270..b837439aee 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitLevelShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitServiceShould.kt b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitServiceShould.kt index 32e795f959..df6eabcb23 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitServiceShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitServiceShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitShould.java b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitShould.java index 7b6b3b010d..9b73912378 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTreeShould.java b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTreeShould.java index 431478d764..482376d661 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTreeShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/OrganisationUnitTreeShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallUnitShould.java b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallUnitShould.java index d667828add..fd9d689453 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallUnitShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitCallUnitShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGeneratorShould.java index 291a024775..288e079a2f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitDisplayPathGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerShould.java index a07d292730..f489038b2f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/organisationunit/internal/OrganisationUnitHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java b/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java index 4f07d60329..699ca9bea1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/parser/internal/expression/ExpressionServiceShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelperShould.kt index 061daeff4f..e31bf04eb4 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/parser/internal/service/utils/ExpressionHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/payload/ProgramPayloadShould.java b/core/src/test/java/org/hisp/dhis/android/core/payload/ProgramPayloadShould.java index 107e5161ee..14a60ac9b3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/payload/ProgramPayloadShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/payload/ProgramPayloadShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGeneratorShould.java index f628472e93..86f8ca323a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/AbstractPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGeneratorShould.java index 0c3ad616d3..75d8270f86 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/BiWeeklyPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGeneratorShould.java index c8c0d5f40c..912f63f0be 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/DailyPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/FinancialOctPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/FinancialOctPeriodGeneratorShould.java index 58034754c6..be475d5953 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/FinancialOctPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/FinancialOctPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelperShould.kt index 1f56e92383..cc6daca277 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/InPeriodQueryHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGeneratorShould.java index e6d6d45f5e..8cbd7bd47d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/MonthlyPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImplShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImplShould.java index 767860f527..cd0e333752 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImplShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/ParentPeriodGeneratorImplShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodGeneratorBaseShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodGeneratorBaseShould.java index 09872db67f..aba29efadd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodGeneratorBaseShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodGeneratorBaseShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHandlerShould.java index 777cf0d2ce..24efdfae95 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHelperShould.kt index 294f3637be..97ed96a1d3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/PeriodHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/QuarterPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/QuarterPeriodGeneratorShould.java index 2557d49f4d..d6adcecc11 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/QuarterPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/QuarterPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/RelativePeriodGeneratorImplShould.kt b/core/src/test/java/org/hisp/dhis/android/core/period/internal/RelativePeriodGeneratorImplShould.kt index 09b1474138..28dbf5d6d5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/RelativePeriodGeneratorImplShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/RelativePeriodGeneratorImplShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/SixMonthlyPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/SixMonthlyPeriodGeneratorShould.java index 2f1058e7ea..4f121cafc0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/SixMonthlyPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/SixMonthlyPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorShould.java b/core/src/test/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorShould.java index 54641548f5..6bb27c4bde 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/period/internal/WeeklyPeriodGeneratorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramIndicatorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramIndicatorShould.kt index dacd577f8d..2483a8ecc5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramIndicatorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramIndicatorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleActionShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleActionShould.java index e84b9528ea..7f543f3438 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleActionShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleActionShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleShould.java index 7cfc6dcf9b..7be99a5917 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleVariableShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleVariableShould.java index d719ec2082..1746f33bc1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleVariableShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramRuleVariableShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSection32Should.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSection32Should.java index 38e6b26cd2..bdfc4eca54 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSection32Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSection32Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSectionShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSectionShould.java index 4b76c4cc89..25e2f3f17f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSectionShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramSectionShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramShould.java index 9f41d4baa3..865e4b8581 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageDataElementShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageDataElementShould.java index 6e2e8f230a..0246222823 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageDataElementShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageDataElementShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageShould.java index dbd77a57d5..3bc67e5774 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramStageShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeShould.java index 821696f340..b8db1c6a05 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/ProgramTrackedEntityAttributeShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallShould.java index 54a028092e..2a629a9c42 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramEndpointCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramHandlerShould.java index 506c682491..10ff6d6293 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java index a6beb14c88..5cbc6bbd59 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramIndicatorHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloaderShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloaderShould.java index 18db40ad23..bfebbb1202 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloaderShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramModuleDownloaderShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandlerShould.java index 4318b2dde4..8f141b15bc 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramRuleHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandlerShould.java index 1993c7e070..2c9ab81575 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramSectionHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandlerShould.java index 4a88dabc96..55b2bc4273 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageDataElementHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandlerShould.java index d65db84633..37610bd6da 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandlerShould.java index fd59f662e1..339092075e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramStageSectionHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandlerShould.java index d9297c0329..d045b6aa8a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/internal/ProgramTrackedEntityAttributeHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt index 9838be3225..eaa279fe2f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/ProgramIndicatorExecutorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDaysShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDaysShould.java index e81ff7cffb..52b120568a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDaysShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2AddDaysShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CeilShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CeilShould.java index 0d9620e0b0..dca2c15e80 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CeilShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2CeilShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ConcatenateShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ConcatenateShould.java index 7fc5e00426..0dd71959dc 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ConcatenateShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ConcatenateShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetweenShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetweenShould.java index 560f3a5f10..ea78b1a8b0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetweenShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2DaysBetweenShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2FloorShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2FloorShould.java index 3c17bb6ffc..4fc63cd932 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2FloorShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2FloorShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LeftShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LeftShould.java index 32ddf41f3e..fd9170c476 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LeftShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LeftShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LengthShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LengthShould.java index 91e4a0b62b..65514ab63a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LengthShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2LengthShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetweenShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetweenShould.java index a04475fe7e..56716b7c30 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetweenShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MinutesBetweenShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ModulusShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ModulusShould.java index 08e44cdf07..5b2c0ccc32 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ModulusShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ModulusShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetweenShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetweenShould.java index 9aa638b48f..a70c076147 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetweenShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2MonthsBetweenShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2OizpShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2OizpShould.java index d8aa2e4e6d..1021a7342f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2OizpShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2OizpShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RightShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RightShould.java index 79fe10f5d1..3cbdfdf74d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RightShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RightShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RoundShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RoundShould.java index ceac1d3dc5..cfeff19892 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RoundShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2RoundShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SplitShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SplitShould.java index 411cd7dd56..e8fd65a856 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SplitShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SplitShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SubStringShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SubStringShould.java index 46e180f4f8..b1562f4a58 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SubStringShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2SubStringShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePatternShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePatternShould.java index 220f870991..941a499341 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePatternShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ValidatePatternShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetweenShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetweenShould.java index 7e40e33eea..53aba0825a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetweenShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2WeeksBetweenShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetweenShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetweenShould.java index 2f413e69f7..5a189d25e5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetweenShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2YearsBetweenShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZingShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZingShould.java index 7ff3c4ea52..791a3235ae 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZingShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZingShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZpvcShould.java b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZpvcShould.java index 07a9f51206..962e48da4b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZpvcShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/program/programindicatorengine/internal/function/D2ZpvcShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt b/core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt index ccd96c180c..c820da589c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/NewTrackerImporterRelationshipShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java index 8bf4962e9d..e92eb31543 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/Relationship30Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipItemShould.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipItemShould.java index 7f8ceafb9a..57ca9afd48 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipItemShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipItemShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType30Should.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType30Should.java index b9c52f895b..72a1ed3e49 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType30Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType30Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType32Should.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType32Should.java index 8dcd18c1de..3acae5177f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType32Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/RelationshipType32Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java index 4ac5f195c3..c50f90e0c3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipDHISVersionManagerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java index 44ee48564e..cae2d4360b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandlerShould.kt index 39d0915687..85ae421d1a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipImportHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelperShould.kt index c858b3a051..37e3cf42c3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/relationship/internal/RelationshipTypeCollectionRepositoryHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/resource/internal/ResourceHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/resource/internal/ResourceHandlerShould.java index 629d79ce8c..2da5d48fcb 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/resource/internal/ResourceHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/resource/internal/ResourceHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV1Should.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV1Should.kt index 50130d45cb..a81b9eeeb5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV1Should.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV1Should.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV2Should.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV2Should.kt index a9723534d4..fcb8260e3b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV2Should.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/AnalyticsSettingV2Should.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/AppMetadataShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/AppMetadataShould.java index 76472b9df8..45597b7d78 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/AppMetadataShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/AppMetadataShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV1Should.java b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV1Should.java index a3b6882ae1..cd4d641146 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV1Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV1Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java index 4459c899da..eadd0204a8 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/AppearanceSettingsV2Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/DataSetSettingsShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/DataSetSettingsShould.java index fb640c07bd..11110475dd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/DataSetSettingsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/DataSetSettingsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV1Should.java b/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV1Should.java index 232a23236e..2bfd750244 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV1Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV1Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java b/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java index fa7ecdcb56..13d6c7f1c0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/GeneralSettingsV2Should.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/ProgramSettingsShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/ProgramSettingsShould.java index 8b373816bb..de3f6f594a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/ProgramSettingsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/ProgramSettingsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/SettingsAppInfoShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/SettingsAppInfoShould.java index ac5ebd7493..d9d80b08f5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/SettingsAppInfoShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/SettingsAppInfoShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/SynchronizationSettingsShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/SynchronizationSettingsShould.java index d99137680e..a6acc84e85 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/SynchronizationSettingsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/SynchronizationSettingsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/SystemSettingsShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/SystemSettingsShould.java index 0cd80f296c..63b0e2b1f8 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/SystemSettingsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/SystemSettingsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/UserSettingsShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/UserSettingsShould.java index b61c1d72be..793ea6d013 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/UserSettingsShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/UserSettingsShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCallShould.kt index b9957af871..7c7e19bbbd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsSettingCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandlerShould.kt index 5253b664a7..6abffcc3a7 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiSettingHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandlerShould.kt index 6a1e7051fe..1005712b57 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AnalyticsTeiWHONutritionDataHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt index 183ca6b73c..08240dc78c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/AppearanceSettingsCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCallShould.kt index fb46d45ff6..7da2482d9f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandlerShould.java index 35fcc7787a..6aaa83027e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/DataSetSettingHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandlerShould.kt index bca941ebe5..1c12425c67 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/FilterSettingHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCallShould.kt index 5a68443487..502dd204d7 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsHandlerShould.kt index 4b86f5d8ac..fa5ba2271b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/GeneralSettingsHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandlerShould.kt index 495822fe8f..718d91f3a2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramConfigurationSettingHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCallShould.kt index 86ed9c1368..4185a63515 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandlerShould.java index 4322bbe9aa..cf4a39b755 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/ProgramSettingHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCallShould.kt index 3842f78cfb..c45ba49d53 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerShould.kt index a10e61f27b..1bbf4d41d0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SettingsAppInfoManagerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCallShould.kt index f3c32eb7eb..8698539226 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsHandlerShould.kt index 1f4e77a0a8..a09d155e6b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SynchronizationSettingsHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SystemSettingSplitterShould.java b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SystemSettingSplitterShould.java index cf15412d3e..0317505ad2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SystemSettingSplitterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/settings/internal/SystemSettingSplitterShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/ConvertTest.java b/core/src/test/java/org/hisp/dhis/android/core/sms/ConvertTest.java index da77ac9830..6495e43f81 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/ConvertTest.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/ConvertTest.java @@ -1,6 +1,6 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/InitTest.java b/core/src/test/java/org/hisp/dhis/android/core/sms/InitTest.java index 2c81be061f..04e6fcb24c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/InitTest.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/InitTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/SubmitTest.java b/core/src/test/java/org/hisp/dhis/android/core/sms/SubmitTest.java index cf01b27b61..6cbad99875 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/SubmitTest.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/SubmitTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImplShould.kt b/core/src/test/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImplShould.kt index 28ed2afc81..aeebafff6e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImplShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/data/webapirepository/internal/WebApiRepositoryImplShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockDeviceStateRepository.java b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockDeviceStateRepository.java index 7339af8b32..d96edd4a36 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockDeviceStateRepository.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockDeviceStateRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java index e620b56345..c4764ec4c1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockLocalDbRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockSmsRepository.java b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockSmsRepository.java index d083d20a95..43c6d82b8a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockSmsRepository.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockSmsRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockWebApiRepository.java b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockWebApiRepository.java index 0d368e403a..f618669150 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockWebApiRepository.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/MockWebApiRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockMetadata.java b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockMetadata.java index e7e05248e4..0d68ba1d55 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockMetadata.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockObjects.java b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockObjects.java index 81fecf06fa..15eaec51e4 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockObjects.java +++ b/core/src/test/java/org/hisp/dhis/android/core/sms/mockrepos/testobjects/MockObjects.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SMSVersionShould.java b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SMSVersionShould.java index 00964a7070..c83218e17a 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SMSVersionShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SMSVersionShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SystemInfoShould.java b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SystemInfoShould.java index dd3894317c..16e4196f76 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SystemInfoShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/SystemInfoShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java index d37a7b4754..fbb91394fa 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/DHISVersionManagerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCallShould.java index e89f3f3723..e245f29968 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/systeminfo/internal/SystemInfoCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueShould.java index 8efe657b09..d26ee837b5 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeReservedValueShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeShould.java index b823ee2a02..3418e47d40 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityAttributeShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueShould.java index ebb3415223..27283efb10 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityDataValueShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterShould.java index c2cabc77f9..5ec84ef617 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceFilterShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceShould.java index 796229534f..7909f7cb32 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityInstanceShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeShould.java index 9cb544fff9..cc9f4dfded 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeAttributeShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeShould.java index 51d2747e05..813c1ee195 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/TrackedEntityTypeShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandlerShould.java index d87d9aa49b..caa36d3452 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelperShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelperShould.java index 2fd031ab54..e04e79d23f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeReservedValueValidatorHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloaderShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloaderShould.java index 0945560fa5..f63b61110b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloaderShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloaderShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandlerShould.java index aaf175634f..a2b0c18ed2 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceFilterHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt index 36f7fda371..8f10c9549c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt index 084c35ee5a..9a00e54476 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceImportHandlerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt index d9e74ad7ff..7cec241c84 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceQueryFactoryShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperShould.java index fe397955b1..9b0c492700 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceUidHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt index 4c7913351b..8b463b9b6e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/ownership/OwnershipManagerShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryPageUserModeMatcher.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryPageUserModeMatcher.kt index a1d743eaa5..563a9fd50b 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryPageUserModeMatcher.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryPageUserModeMatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryUserModeMatcher.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryUserModeMatcher.kt index c5350fd351..ad33ccda4c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryUserModeMatcher.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/QueryUserModeMatcher.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapperShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapperShould.java index 1ee4d42e4b..b17a31f9f6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridMapperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridShould.java index 1aa38b48fc..c75f738eb9 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/SearchGridShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperShould.java index 61986b19eb..b1dfa2e938 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallShould.java index 7325d13ffa..6213d9b7b1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java index 679c7fbc70..30ad9fa667 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataSourceShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt index c003d3f630..264abf86ac 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryErrorCatcherShould.kt @@ -1,29 +1,29 @@ /* - * Copyright (c) 2004-2019, University of Oslo - * All rights reserved. + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.hisp.dhis.android.core.trackedentity.search diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelperShould.java b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelperShould.java index 9729d2085f..35a08eba36 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelperShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryOnlineHelperShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelperShould.kt index 3e7a7e43d9..71573c2c0c 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScopeHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportErrorShould.kt b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportErrorShould.kt index 02fa4516f7..5f2d4ba995 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportErrorShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportErrorShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportSuccessShould.kt b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportSuccessShould.kt index 4df5bea9a4..15fd961b48 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportSuccessShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/JobReportSuccessShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerConflictHelperShould.kt b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerConflictHelperShould.kt index bde6b7ffad..fa33f08725 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerConflictHelperShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerConflictHelperShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerImporterFileResourcesPostCallShould.kt b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerImporterFileResourcesPostCallShould.kt index ba79fee92c..c24c896732 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerImporterFileResourcesPostCallShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/tracker/importer/TrackerImporterFileResourcesPostCallShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/AuthenticatedUserShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/AuthenticatedUserShould.java index e406cad06c..1c921e1db8 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/AuthenticatedUserShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/AuthenticatedUserShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/UserCredentialShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/UserCredentialShould.java index 0f63b0dcea..b4221a789f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/UserCredentialShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/UserCredentialShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/UserRoleShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/UserRoleShould.java index 928f5d466a..f8f01beacd 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/UserRoleShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/UserRoleShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/UserShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/UserShould.java index 745f3bb219..3a17195fc3 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/UserShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/UserShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java index a294d7f472..d40a724de0 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/AuthorityEndpointCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableShould.java index 0c509a6e2e..fe04ab7acf 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/IsUserLoggedInCallableShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java index 78ba7c8e67..be555fbbac 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallErrorCatcherShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java index a0abcbe5df..da40b0577e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogInCallUnitShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogOutCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogOutCallShould.java index c04a38e664..fc22d4ccea 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogOutCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/LogOutCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt index 8271231b89..affbe1cd07 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserCallShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserCallShould.java index 8fd588afd5..5ab3c3c278 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserCallShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserCallShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserHandlerShould.java index 9759def56d..df5d8ebc9e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/validation/ValidationRuleShould.java b/core/src/test/java/org/hisp/dhis/android/core/validation/ValidationRuleShould.java index 6abc0e75c7..12128cb16e 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/validation/ValidationRuleShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/validation/ValidationRuleShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt index 5cb5283ab6..94f0d5f192 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationAPI36Should.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationShould.java b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationShould.java index 421a5e576c..9872aa447f 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationSimplifiedShould.java b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationSimplifiedShould.java index fbcfe5b306..898785aad6 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationSimplifiedShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/visualization/VisualizationSimplifiedShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandlerShould.java b/core/src/test/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandlerShould.java index 5751cf18f0..0941fd74dc 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandlerShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/visualization/internal/VisualizationHandlerShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleShould.java b/core/src/test/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleShould.java index c3434a9c7b..000571df65 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleShould.java +++ b/core/src/test/java/org/hisp/dhis/android/core/wipe/internal/WipeModuleShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/arch/BasePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/arch/BasePublicAccessShould.java index 2de04af7a1..4e8cf77400 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/arch/BasePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/arch/BasePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/arch/ObjectWithBuilderShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/arch/ObjectWithBuilderShould.java index 7d9da935bb..504eea7467 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/arch/ObjectWithBuilderShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/arch/ObjectWithBuilderShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/attribute/AttributePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/attribute/AttributePublicAccessShould.java index 538b3dbeee..d900e810e1 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/attribute/AttributePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/attribute/AttributePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/attribute/ProgramStageAttributeValueLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/attribute/ProgramStageAttributeValueLinkPublicAccessShould.java index b5132d1140..307fd6c44a 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/attribute/ProgramStageAttributeValueLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/attribute/ProgramStageAttributeValueLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryComboLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryComboLinkPublicAccessShould.java index 6415f0edb5..a57d63c4c4 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryComboLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryComboLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryOptionLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryOptionLinkPublicAccessShould.java index 8ec729065b..476dee8572 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryOptionLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryCategoryOptionLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryComboPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryComboPublicAccessShould.java index 0ae1b41d01..30ede00966 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryComboPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryComboPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboPublicAccessShould.java index f6d7988f28..7b03889feb 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionComboPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionPublicAccessShould.java index fa3b391f77..acc6a39d85 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryOptionPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryPublicAccessShould.java index 9ff5275cea..e4872c74f8 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/category/CategoryPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/common/ValueTypeDeviceRenderingPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/common/ValueTypeDeviceRenderingPublicAccessShould.java index 7547511b9c..66763d85af 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/common/ValueTypeDeviceRenderingPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/common/ValueTypeDeviceRenderingPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/configuration/ConfigurationPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/configuration/ConfigurationPublicAccessShould.java index fa6b4299b5..e7a3e1b809 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/configuration/ConfigurationPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/configuration/ConfigurationPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/constant/ConstantPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/constant/ConstantPublicAccessShould.java index ea114c1896..cce5686515 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/constant/ConstantPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/constant/ConstantPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementOperandPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementOperandPublicAccessShould.java index 436b96996e..6a8fde40bd 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementOperandPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementOperandPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementPublicAccessShould.java index 21808f6203..409b444912 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataelement/DataElementPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataInputPeriodPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataInputPeriodPublicAccessShould.java index b244dc71c6..a1ce172335 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataInputPeriodPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataInputPeriodPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationPublicAccessShould.java index ad0c742972..d89130435a 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompleteRegistrationPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompulsoryDataElementOperandLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompulsoryDataElementOperandLinkPublicAccessShould.java index 4b6a0cf88c..bb29ee3798 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompulsoryDataElementOperandLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetCompulsoryDataElementOperandLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetElementPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetElementPublicAccessShould.java index 3b84b7381e..c8502be496 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetElementPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetElementPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetOrganisationUnitLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetOrganisationUnitLinkPublicAccessShould.java index 7b3e9535a5..f394cbb5bb 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetOrganisationUnitLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetOrganisationUnitLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetPublicAccessShould.java index 768c6a4584..7f9bf24b3c 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/DataSetPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionDataElementLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionDataElementLinkPublicAccessShould.java index 9797d13758..8f2ea9c9e4 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionDataElementLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionDataElementLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionGreyedFieldsLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionGreyedFieldsLinkPublicAccessShould.java index c66665e4a5..082b8e0cce 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionGreyedFieldsLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionGreyedFieldsLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionPublicAccessShould.java index 968b3397ef..fd538e4079 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/dataset/SectionPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/datastore/KeyValuePairPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/datastore/KeyValuePairPublicAccessShould.java index bf75937ae8..c919919b9f 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/datastore/KeyValuePairPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/datastore/KeyValuePairPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/datavalue/DataValuePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/datavalue/DataValuePublicAccessShould.java index 119011afe1..f3dfd844ec 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/datavalue/DataValuePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/datavalue/DataValuePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentPublicAccessShould.java index a52ad42265..67d71084ee 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/EnrollmentPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/note/NotePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/note/NotePublicAccessShould.java index fd91e8aa51..6cd56097bd 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/note/NotePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/enrollment/note/NotePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/event/EventDataFilterPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/event/EventDataFilterPublicAccessShould.java index 944c3493a4..106e87e915 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/event/EventDataFilterPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/event/EventDataFilterPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/event/EventFilterPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/event/EventFilterPublicAccessShould.java index 47becdbba9..779f36a3fb 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/event/EventFilterPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/event/EventFilterPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/event/EventPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/event/EventPublicAccessShould.java index 68ab4a41a2..6b21da95f9 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/event/EventPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/event/EventPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictPublicAccessShould.java index ad6b609d96..5724a64c87 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/imports/TrackerImportConflictPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/indicator/DataSetIndicatorLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/indicator/DataSetIndicatorLinkPublicAccessShould.java index 64de106f2a..6e37b66273 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/indicator/DataSetIndicatorLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/indicator/DataSetIndicatorLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorPublicAccessShould.java index ce35394fb8..df7117b32e 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypePublicAccessShould.java index 20e23db62f..18a2e8e12d 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/indicator/IndicatorTypePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/DataElementLegendSetLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/DataElementLegendSetLinkPublicAccessShould.java index 2e91ea9b15..eb515e8200 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/DataElementLegendSetLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/DataElementLegendSetLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendPublicAccessShould.java index 9325e8740b..626df248d1 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendSetPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendSetPublicAccessShould.java index 696a17f543..d296465535 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendSetPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/LegendSetPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/ProgramIndicatorLegendSetLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/ProgramIndicatorLegendSetLinkPublicAccessShould.java index 8b9342f129..a980b823a3 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/legendset/ProgramIndicatorLegendSetLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/legendset/ProgramIndicatorLegendSetLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorPublicAccessShould.java index 3a4df30e91..34ca2ae31b 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/D2ErrorPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationPublicAccessShould.java index ce8392f62e..1cdd57bbf9 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/maintenance/ForeignKeyViolationPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/note/NotePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/note/NotePublicAccessShould.java index c255606e71..b9f2b53f30 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/note/NotePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/note/NotePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupOptionLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupOptionLinkPublicAccessShould.java index 46483edd03..22d0f2ed08 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupOptionLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupOptionLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupPublicAccessShould.java index b47d8882ba..d18716c702 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionGroupPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionPublicAccessShould.java index 7707dadb19..25174b15c3 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionSetPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionSetPublicAccessShould.java index 46bfe13474..b5973a93fd 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionSetPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/option/OptionSetPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupPublicAccessShould.java index 2131c28a25..adddc02ba9 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitGroupPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelPublicAccessShould.java index c901d7a769..189106a574 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitLevelPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitOrganisationUnitGroupLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitOrganisationUnitGroupLinkPublicAccessShould.java index d910c5e072..ab7dba0abf 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitOrganisationUnitGroupLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitOrganisationUnitGroupLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitProgramLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitProgramLinkPublicAccessShould.java index 086d19c50f..aabfdb1e16 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitProgramLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitProgramLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitPublicAccessShould.java index 2115d69e8d..d8b2d682a5 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/organisationunit/OrganisationUnitPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/period/PeriodPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/period/PeriodPublicAccessShould.java index 0f16efeaf2..5a7b92c389 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/period/PeriodPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/period/PeriodPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorPublicAccessShould.java index ab3f806ce2..3b9427df15 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramIndicatorPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramPublicAccessShould.java index 4e221f35c8..22827bf638 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionPublicAccessShould.java index 7a53195481..de549dbbca 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleActionPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRulePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRulePublicAccessShould.java index 0ab5f2b76f..60cea3ffdf 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRulePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRulePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariablePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariablePublicAccessShould.java index 687cb6e8ad..ae424db303 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariablePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramRuleVariablePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionAttributeLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionAttributeLinkPublicAccessShould.java index 583eb26c9d..5498b205fe 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionAttributeLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionAttributeLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionPublicAccessShould.java index 9411413bcd..55762271a2 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramSectionPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementPublicAccessShould.java index 44cdbc8756..6a6f9b7f62 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageDataElementPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStagePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStagePublicAccessShould.java index 94701e6b48..70ecbe950e 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStagePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStagePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionDataElementLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionDataElementLinkPublicAccessShould.java index 202dca0263..e73d0243ca 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionDataElementLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionDataElementLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionPublicAccessShould.java index 110e14cc4d..bdbfa93fb8 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramStageSectionPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributePublicAccessShould.java index b259a63ede..7130bbf01c 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/program/ProgramTrackedEntityAttributePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipConstraintPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipConstraintPublicAccessShould.java index 3d96188b23..8f680cf6e7 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipConstraintPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipConstraintPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipItemPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipItemPublicAccessShould.java index fd3ae14c4d..1a7ac1f5d2 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipItemPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipItemPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipPublicAccessShould.java index 19a6cf2627..f7adea0024 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipTypePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipTypePublicAccessShould.java index 8f6db5a078..fe5b852def 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipTypePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/relationship/RelationshipTypePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/resource/ResourcePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/resource/ResourcePublicAccessShould.java index f3524732a3..dccee1d377 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/resource/ResourcePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/resource/ResourcePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/settings/DataSetSettingPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/settings/DataSetSettingPublicAccessShould.java index 9d50028ed7..e15d4bdb64 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/settings/DataSetSettingPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/settings/DataSetSettingPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsPublicAccessShould.java index 519b3ef7f2..a2150e9ef1 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/settings/GeneralSettingsPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/settings/ProgramSettingPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/settings/ProgramSettingPublicAccessShould.java index ab6c69ee3b..8d6bae359b 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/settings/ProgramSettingPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/settings/ProgramSettingPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/settings/SystemSettingPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/settings/SystemSettingPublicAccessShould.java index 5e66d1641b..7dd5f98814 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/settings/SystemSettingPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/settings/SystemSettingPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/settings/UserSettingsPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/settings/UserSettingsPublicAccessShould.java index 03c9839c93..d919058dd1 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/settings/UserSettingsPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/settings/UserSettingsPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/systeminfo/SystemInfoPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/systeminfo/SystemInfoPublicAccessShould.java index ff72e1baba..ce42a702ca 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/systeminfo/SystemInfoPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/systeminfo/SystemInfoPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/ReservedValueSettingPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/ReservedValueSettingPublicAccessShould.java index 94371457d7..6a38fad098 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/ReservedValueSettingPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/ReservedValueSettingPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributePublicAccessShould.java index c87efc139e..9674a90a15 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeReservedValuePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeReservedValuePublicAccessShould.java index e4751d2a03..f98e1d15cb 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeReservedValuePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeReservedValuePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValuePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValuePublicAccessShould.java index 4589fdd318..3be2db7727 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValuePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityAttributeValuePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValuePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValuePublicAccessShould.java index 8487714eaa..1a128f4d68 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValuePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityDataValuePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceEventFilterPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceEventFilterPublicAccessShould.java index f0a2c1c10f..8b98011b8e 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceEventFilterPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceEventFilterPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterPublicAccessShould.java index 2216b252c4..355ccc8688 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstanceFilterPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstancePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstancePublicAccessShould.java index b1d524d86f..d2b19f2d0d 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstancePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityInstancePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributePublicAccessShould.java index 9fa7471a59..1e44950867 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypeAttributePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypePublicAccessShould.java index 31d601a12f..a3e24116b4 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/trackedentity/TrackedEntityTypePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthenticatedUserPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthenticatedUserPublicAccessShould.java index ad25057736..a3057ff710 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthenticatedUserPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthenticatedUserPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthorityPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthorityPublicAccessShould.java index af9dc6c8c7..fd91509d84 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthorityPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/user/AuthorityPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserCredentialsPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserCredentialsPublicAccessShould.java index e4af1e3acc..270dce7f72 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserCredentialsPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserCredentialsPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserOrganisationUnitLinkPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserOrganisationUnitLinkPublicAccessShould.java index 3e0dedf3c2..e292a425e9 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserOrganisationUnitLinkPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserOrganisationUnitLinkPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserPublicAccessShould.java index 37925d8811..7a38343443 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserRolePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserRolePublicAccessShould.java index bb1e905f83..e5f82c61c8 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/user/UserRolePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/user/UserRolePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/validation/ValidationRulePublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/validation/ValidationRulePublicAccessShould.java index 4222715698..09319cbd26 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/validation/ValidationRulePublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/validation/ValidationRulePublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/visualization/CategoryDimensionPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/visualization/CategoryDimensionPublicAccessShould.java index 5934641cb8..2001d96f39 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/visualization/CategoryDimensionPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/visualization/CategoryDimensionPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/visualization/DataDimensionItemPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/visualization/DataDimensionItemPublicAccessShould.java index b94911c6da..a7fb91ca6c 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/visualization/DataDimensionItemPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/visualization/DataDimensionItemPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/core/src/test/java/org/hisp/dhis/android/testapp/visualization/VisualizationPublicAccessShould.java b/core/src/test/java/org/hisp/dhis/android/testapp/visualization/VisualizationPublicAccessShould.java index 95ef136e7c..7e37111fc6 100644 --- a/core/src/test/java/org/hisp/dhis/android/testapp/visualization/VisualizationPublicAccessShould.java +++ b/core/src/test/java/org/hisp/dhis/android/testapp/visualization/VisualizationPublicAccessShould.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2021, University of Oslo + * Copyright (c) 2004-2022, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without From 22f37c5b956392f8361603bb247088b9d61d553b Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Mon, 4 Apr 2022 15:23:26 +0200 Subject: [PATCH 236/253] [ANDROSDK-1529] Do not remove protected enrollment in general sync --- .../TrackedEntityEnrollmentOrphanCleaner.kt | 40 +++++++++ ...rackedEntityEnrollmentOrphanCleanerImpl.kt | 82 +++++++++++++++++++ .../TrackedEntityInstanceEntityDIModule.java | 9 +- .../internal/TrackedEntityInstanceHandler.kt | 5 +- .../TrackerImporterBreakTheGlassHelper.kt | 14 +++- 5 files changed, 138 insertions(+), 12 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleaner.kt create mode 100644 core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleaner.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleaner.kt new file mode 100644 index 0000000000..c229c3eb13 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleaner.kt @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance + +internal interface TrackedEntityEnrollmentOrphanCleaner { + + fun deleteOrphan( + parent: TrackedEntityInstance?, + children: Collection?, + program: String? + ): Boolean +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt new file mode 100644 index 0000000000..271b838b88 --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.hisp.dhis.android.core.trackedentity.internal + +import dagger.Reusable +import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder +import org.hisp.dhis.android.core.common.State +import org.hisp.dhis.android.core.enrollment.Enrollment +import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo +import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore +import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance +import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterBreakTheGlassHelper +import javax.inject.Inject + +@Reusable +internal class TrackedEntityEnrollmentOrphanCleanerImpl @Inject constructor( + private val enrollmentStore: EnrollmentStore, + private val breakTheGlassHelper: TrackerImporterBreakTheGlassHelper +) : TrackedEntityEnrollmentOrphanCleaner { + + override fun deleteOrphan( + parent: TrackedEntityInstance?, + children: Collection?, + program: String? + ): Boolean { + + return if (parent != null && children != null) { + val orphanEnrollmentsClause = WhereClauseBuilder() + .appendKeyStringValue(EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE, parent.uid()) + .appendNotInKeyStringValues(EnrollmentTableInfo.Columns.UID, children.map { it.uid() }) + .appendInKeyEnumValues( + EnrollmentTableInfo.Columns.SYNC_STATE, + listOf(State.SYNCED, State.SYNCED_VIA_SMS) + ).build() + + val orphanEnrollments = enrollmentStore.selectWhere(orphanEnrollmentsClause) + + val deletedEnrollments = orphanEnrollments.filter { e -> + val isProtected = breakTheGlassHelper.isProtectedInSearchScope(e.program(), e.organisationUnit()) + + !isProtected || e.program() == program + } + + if (deletedEnrollments.isNotEmpty()) { + val deleteWhereClause = WhereClauseBuilder() + .appendInKeyStringValues(EnrollmentTableInfo.Columns.UID, deletedEnrollments.map { it.uid() }) + .build() + + enrollmentStore.deleteWhere(deleteWhereClause) + } + + true + } else { + false + } + } +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java index 996ae3acc1..b1771e70e0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceEntityDIModule.java @@ -28,14 +28,10 @@ package org.hisp.dhis.android.core.trackedentity.internal; -import org.hisp.dhis.android.core.arch.cleaners.internal.DataOrphanCleanerImpl; import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner; import org.hisp.dhis.android.core.arch.db.access.DatabaseAdapter; import org.hisp.dhis.android.core.arch.handlers.internal.Transformer; import org.hisp.dhis.android.core.arch.repositories.children.internal.ChildrenAppender; -import org.hisp.dhis.android.core.common.DataColumns; -import org.hisp.dhis.android.core.enrollment.Enrollment; -import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo; import org.hisp.dhis.android.core.relationship.Relationship; import org.hisp.dhis.android.core.relationship.internal.TEIRelationshipOrphanCleanerImpl; import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance; @@ -78,9 +74,8 @@ TrackedEntityInstanceUidHelper uidHelper(TrackedEntityInstanceUidHelperImpl impl @Provides @Reusable - OrphanCleaner enrollmentOrphanCleaner(DatabaseAdapter databaseAdapter) { - return new DataOrphanCleanerImpl<>(EnrollmentTableInfo.TABLE_INFO.name(), - EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE, DataColumns.SYNC_STATE, databaseAdapter); + TrackedEntityEnrollmentOrphanCleaner enrollmentOrphanCleaner(TrackedEntityEnrollmentOrphanCleanerImpl impl) { + return impl; } @Provides diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt index fd52c032ce..5fad384f07 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -51,7 +51,7 @@ internal class TrackedEntityInstanceHandler @Inject constructor( private val trackedEntityAttributeValueStore: TrackedEntityAttributeValueStore, private val trackedEntityAttributeValueHandler: HandlerWithTransformer, private val enrollmentHandler: IdentifiableDataHandler, - private val enrollmentOrphanCleaner: OrphanCleaner, + private val enrollmentOrphanCleaner: TrackedEntityEnrollmentOrphanCleaner, private val relationshipOrphanCleaner: OrphanCleaner ) : IdentifiableDataHandlerImpl( trackedEntityInstanceStore, @@ -109,7 +109,8 @@ internal class TrackedEntityInstanceHandler @Inject constructor( if (params.hasAllEnrollments) { enrollmentOrphanCleaner.deleteOrphan( o, - TrackedEntityInstanceInternalAccessor.accessEnrollments(o) + TrackedEntityInstanceInternalAccessor.accessEnrollments(o), + params.program ) relationshipOrphanCleaner.deleteOrphan( o, diff --git a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt index ae9e0597ca..9960c9c5a4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/tracker/importer/internal/TrackerImporterBreakTheGlassHelper.kt @@ -59,7 +59,7 @@ internal class TrackerImporterBreakTheGlassHelper @Inject constructor( instances: List ): List { return summary.enrollments.ignored.filter { enrollment -> - isProtectedProgram(enrollment.program()) && isNotCaptureScope(enrollment.organisationUnit()) + isProtectedInSearchScope(enrollment.program(), enrollment.organisationUnit()) }.mapNotNull { enrollment -> instances.mapNotNull { tei -> val teiEnrollment = @@ -99,7 +99,7 @@ internal class TrackerImporterBreakTheGlassHelper @Inject constructor( candidateEnrollments .mapNotNull { error -> error.enrollment()?.let { id -> payload.enrollments.find { it.uid() == id } } } .filter { enrollment -> - isProtectedProgram(enrollment.program()) && isNotCaptureScope(enrollment.organisationUnit()) + isProtectedInSearchScope(enrollment.program(), enrollment.organisationUnit()) } .map { enrollment -> glassErrors.enrollments.add(enrollment) @@ -120,7 +120,7 @@ internal class TrackerImporterBreakTheGlassHelper @Inject constructor( .mapNotNull { error -> error.event()?.let { id -> payload.events.find { it.uid() == id } } } .filter { event -> event.enrollment()?.let { enrollmentStore.selectByUid(it) }?.let { - isProtectedProgram(it.program()) && isNotCaptureScope(it.organisationUnit()) + isProtectedInSearchScope(it.program(), it.organisationUnit()) } ?: false } .map { event -> @@ -163,6 +163,14 @@ internal class TrackerImporterBreakTheGlassHelper @Inject constructor( } } + fun isProtectedInSearchScope(program: String?, organisationUnit: String?): Boolean { + return if (program != null && organisationUnit != null) { + isProtectedProgram(program) && isNotCaptureScope(organisationUnit) + } else { + false + } + } + private fun isProtectedProgram(program: String?): Boolean { return program?.let { programStore.selectByUid(it)?.accessLevel() == AccessLevel.PROTECTED } ?: false } From 80a23c19edf727e9eb6ba3a32ba4e2f902b12f6c Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 5 Apr 2022 08:12:26 +0200 Subject: [PATCH 237/253] [ANDROSDK-1529] Improve orphan relationship handling --- .../internal/IdentifiableDataHandlerParams.kt | 1 - .../enrollment/internal/EnrollmentHandler.kt | 27 +++++++++---------- .../EnrollmentPersistenceCallFactory.kt | 4 +-- .../core/event/internal/EventHandler.kt | 11 +++----- .../internal/EventPersistenceCallFactory.kt | 5 ++-- ...rackedEntityEnrollmentOrphanCleanerImpl.kt | 3 +-- ...ackedEntityInstanceDownloadInternalCall.kt | 2 -- .../internal/TrackedEntityInstanceHandler.kt | 17 +++--------- ...kedEntityInstancePersistenceCallFactory.kt | 1 - .../TrackedEntityInstanceHandlerShould.kt | 8 +++--- 10 files changed, 28 insertions(+), 51 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt index b9420b79d6..4cc437d086 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/arch/handlers/internal/IdentifiableDataHandlerParams.kt @@ -30,7 +30,6 @@ package org.hisp.dhis.android.core.arch.handlers.internal data class IdentifiableDataHandlerParams( val hasAllAttributes: Boolean, - val hasAllEnrollments: Boolean, val overwrite: Boolean, val asRelationship: Boolean, val program: String? = null diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt index 9866fe2cd0..89a5daef4e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandler.kt @@ -89,13 +89,16 @@ internal class EnrollmentHandler @Inject constructor( relatives: RelationshipItemRelatives? ) { if (action !== HandleAction.Delete) { - val thisParams = IdentifiableDataHandlerParams( - hasAllAttributes = false, - hasAllEnrollments = false, - overwrite = params.overwrite, - asRelationship = false - ) - eventHandler.handleMany(EnrollmentInternalAccessor.accessEvents(o), thisParams, relatives) + val events = EnrollmentInternalAccessor.accessEvents(o) + if (events != null) { + val thisParams = IdentifiableDataHandlerParams( + hasAllAttributes = false, + overwrite = params.overwrite, + asRelationship = false + ) + eventHandler.handleMany(events, thisParams, relatives) + eventOrphanCleaner.deleteOrphan(o, events) + } o.notes()?.let { notes -> val transformed = notes.map { note -> @@ -108,16 +111,10 @@ internal class EnrollmentHandler @Inject constructor( } val relationships = EnrollmentInternalAccessor.accessRelationships(o) - if (relationships != null && relationships.isNotEmpty()) { + if (relationships != null && !params.asRelationship) { handleRelationships(relationships, o, relatives) + relationshipOrphanCleaner.deleteOrphan(o, relationships) } } - if (params.hasAllEnrollments) { - relationshipOrphanCleaner.deleteOrphan( - o, - EnrollmentInternalAccessor.accessRelationships(o) - ) - } - eventOrphanCleaner.deleteOrphan(o, EnrollmentInternalAccessor.accessEvents(o)) } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt index 6c256e1a7c..c1a00d5a90 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentPersistenceCallFactory.kt @@ -39,18 +39,16 @@ internal class EnrollmentPersistenceCallFactory @Inject constructor( private val enrollmentHandler: IdentifiableDataHandler ) { fun persistAsRelationships(enrollments: List): Completable { - return persistEnrollmentsInternal(enrollments, true, false, false) + return persistEnrollmentsInternal(enrollments, asRelationship = true, overwrite = false) } private fun persistEnrollmentsInternal( enrollments: List, asRelationship: Boolean, - isFullUpdate: Boolean, overwrite: Boolean ): Completable { val params = IdentifiableDataHandlerParams( hasAllAttributes = true, - hasAllEnrollments = isFullUpdate, overwrite = overwrite, asRelationship = asRelationship ) diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt index 5d36bc7b98..eebd7b7cb4 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventHandler.kt @@ -38,7 +38,7 @@ import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler import org.hisp.dhis.android.core.arch.helpers.GeometryHelper import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.event.Event -import org.hisp.dhis.android.core.event.EventInternalAccessor.accessRelationships +import org.hisp.dhis.android.core.event.EventInternalAccessor import org.hisp.dhis.android.core.event.EventStatus import org.hisp.dhis.android.core.note.Note import org.hisp.dhis.android.core.note.internal.NoteDHISVersionManager @@ -93,21 +93,18 @@ internal class EventHandler @Inject constructor( val transformed = notes.map { note -> noteVersionManager.transform(Note.NoteType.EVENT_NOTE, o.uid(), note) } - val notesToSync = noteUniquenessManager.buildUniqueCollection( transformed, Note.NoteType.EVENT_NOTE, o.uid() ) noteHandler.handleMany(notesToSync) } - val relationships = accessRelationships(o) - if (relationships != null && relationships.isNotEmpty()) { + val relationships = EventInternalAccessor.accessRelationships(o) + if (relationships != null && !params.asRelationship) { handleRelationships(relationships, o, relatives) + relationshipOrphanCleaner.deleteOrphan(o, relationships) } } - if (params.hasAllEnrollments) { - relationshipOrphanCleaner.deleteOrphan(o, accessRelationships(o)) - } } override fun deleteIfCondition(o: Event): Boolean { diff --git a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt index c8639f29c2..12376187b2 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/event/internal/EventPersistenceCallFactory.kt @@ -45,11 +45,11 @@ internal class EventPersistenceCallFactory @Inject constructor( private val organisationUnitDownloader: OrganisationUnitModuleDownloader ) { fun persistEvents(events: Collection, relatives: RelationshipItemRelatives?): Completable { - return persistEventsInternal(events, false, relatives) + return persistEventsInternal(events, asRelationship = false, relatives) } fun persistAsRelationships(events: List): Completable { - return persistEventsInternal(events, true, null) + return persistEventsInternal(events, asRelationship = true, relatives = null) } private fun persistEventsInternal( @@ -60,7 +60,6 @@ internal class EventPersistenceCallFactory @Inject constructor( return Completable.defer { val params = IdentifiableDataHandlerParams( hasAllAttributes = false, - hasAllEnrollments = false, overwrite = false, asRelationship = asRelationship ) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt index 271b838b88..ae80898ac3 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt @@ -48,7 +48,6 @@ internal class TrackedEntityEnrollmentOrphanCleanerImpl @Inject constructor( children: Collection?, program: String? ): Boolean { - return if (parent != null && children != null) { val orphanEnrollmentsClause = WhereClauseBuilder() .appendKeyStringValue(EnrollmentTableInfo.Columns.TRACKED_ENTITY_INSTANCE, parent.uid()) @@ -74,7 +73,7 @@ internal class TrackedEntityEnrollmentOrphanCleanerImpl @Inject constructor( enrollmentStore.deleteWhere(deleteWhereClause) } - true + deletedEnrollments.isNotEmpty() } else { false } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt index b2e6d78d85..2227da5ecb 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceDownloadInternalCall.kt @@ -247,7 +247,6 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( val persistParams = IdentifiableDataHandlerParams( hasAllAttributes = true, - hasAllEnrollments = baseQuery.commonParams().program == null, overwrite = overwrite, asRelationship = false, program = baseQuery.commonParams().program @@ -288,7 +287,6 @@ internal class TrackedEntityInstanceDownloadInternalCall @Inject constructor( if (tei != null) { val persistParams = IdentifiableDataHandlerParams( hasAllAttributes = !useEntityEndpoint, - hasAllEnrollments = teiQuery.commonParams().program == null, overwrite = overwrite, asRelationship = false, program = teiQuery.commonParams().program diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt index 5fad384f07..f2daf9313a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -96,26 +96,17 @@ internal class TrackedEntityInstanceHandler @Inject constructor( if (enrollments != null) { val thisParams = IdentifiableDataHandlerParams( hasAllAttributes = false, - hasAllEnrollments = false, params.overwrite, asRelationship = false ) enrollmentHandler.handleMany(enrollments, thisParams, relatives) + enrollmentOrphanCleaner.deleteOrphan(o, enrollments, params.program) } + val relationships = TrackedEntityInstanceInternalAccessor.accessRelationships(o) - if (relationships != null && relationships.isNotEmpty()) { + if (relationships != null && !params.asRelationship) { handleRelationships(relationships, o, relatives) - } - if (params.hasAllEnrollments) { - enrollmentOrphanCleaner.deleteOrphan( - o, - TrackedEntityInstanceInternalAccessor.accessEnrollments(o), - params.program - ) - relationshipOrphanCleaner.deleteOrphan( - o, - TrackedEntityInstanceInternalAccessor.accessRelationships(o) - ) + relationshipOrphanCleaner.deleteOrphan(o, relationships) } } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt index e202391c67..415a9f45c0 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstancePersistenceCallFactory.kt @@ -52,7 +52,6 @@ internal class TrackedEntityInstancePersistenceCallFactory @Inject constructor( fun persistRelationships(trackedEntityInstances: List): Completable { val params = IdentifiableDataHandlerParams( hasAllAttributes = false, - hasAllEnrollments = false, overwrite = false, asRelationship = true ) diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt index 8f10c9549c..e093bb28ea 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -67,7 +67,7 @@ class TrackedEntityInstanceHandlerShould { private val relationship: Relationship = mock() private val relative: TrackedEntityInstance = mock() private val relativeBuilder: TrackedEntityInstance.Builder = mock() - private val enrollmentCleaner: OrphanCleaner = mock() + private val enrollmentCleaner: TrackedEntityEnrollmentOrphanCleaner = mock() private val relationshipCleaner: OrphanCleaner = mock() private val relatives: RelationshipItemRelatives = mock() private val teiBuilder: TrackedEntityInstance.Builder = mock() @@ -122,7 +122,7 @@ class TrackedEntityInstanceHandlerShould { verify(trackedEntityAttributeValueHandler, never()).handleMany(any(), any()) verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) verify(enrollmentHandler, never()).handleMany(any(), any(), any()) - verify(enrollmentCleaner, never()).deleteOrphan(any(), any()) + verify(enrollmentCleaner, never()).deleteOrphan(any(), any(), anyOrNull()) verify(relationshipCleaner, never()).deleteOrphan(any(), any()) } @@ -174,7 +174,7 @@ class TrackedEntityInstanceHandlerShould { val params = IdentifiableDataHandlerParams(true, true, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) - verify(enrollmentCleaner, times(1)).deleteOrphan(any(), anyOrNull()) + verify(enrollmentCleaner, times(1)).deleteOrphan(any(), anyOrNull(), anyOrNull()) verify(relationshipCleaner, times(1)).deleteOrphan(any(), anyOrNull()) } @@ -186,7 +186,7 @@ class TrackedEntityInstanceHandlerShould { val params = IdentifiableDataHandlerParams(true, false, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) - verify(enrollmentCleaner, never()).deleteOrphan(any(), any()) + verify(enrollmentCleaner, never()).deleteOrphan(any(), any(), anyOrNull()) verify(relationshipCleaner, never()).deleteOrphan(any(), any()) } From 9856d10a1d6141fdb79a394b0808c723df9c120e Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 5 Apr 2022 09:25:34 +0200 Subject: [PATCH 238/253] [ANDROSDK-1529] Adapt tests --- ...rackedEntityEnrollmentOrphanCleanerImpl.kt | 2 +- .../tracked_entity_instances.json | 34 ++++++++++++++ .../internal/EnrollmentHandlerShould.kt | 8 ++-- .../core/event/internal/EventHandlerShould.kt | 8 ++-- .../TrackedEntityInstanceHandlerShould.kt | 47 ++++++------------- 5 files changed, 57 insertions(+), 42 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt index ae80898ac3..315ae8cfa8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityEnrollmentOrphanCleanerImpl.kt @@ -28,6 +28,7 @@ package org.hisp.dhis.android.core.trackedentity.internal import dagger.Reusable +import javax.inject.Inject import org.hisp.dhis.android.core.arch.db.querybuilders.internal.WhereClauseBuilder import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.Enrollment @@ -35,7 +36,6 @@ import org.hisp.dhis.android.core.enrollment.EnrollmentTableInfo import org.hisp.dhis.android.core.enrollment.internal.EnrollmentStore import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance import org.hisp.dhis.android.core.tracker.importer.internal.TrackerImporterBreakTheGlassHelper -import javax.inject.Inject @Reusable internal class TrackedEntityEnrollmentOrphanCleanerImpl @Inject constructor( diff --git a/core/src/sharedTest/resources/trackedentity/tracked_entity_instances.json b/core/src/sharedTest/resources/trackedentity/tracked_entity_instances.json index 988863a01d..f8fa941138 100644 --- a/core/src/sharedTest/resources/trackedentity/tracked_entity_instances.json +++ b/core/src/sharedTest/resources/trackedentity/tracked_entity_instances.json @@ -26,6 +26,23 @@ "trackedEntityInstance": "nWrB0TfWlvD" } } + }, + { + "lastUpdated": "2018-02-07T08:06:28.369", + "created": "2018-02-07T08:06:28.369", + "relationshipName": "Prescription to Person", + "relationshipType": "o51cUNONthg", + "relationship": "AJOytZW7OaB", + "from": { + "trackedEntityInstance": { + "trackedEntityInstance": "nWrB0TfWlvD" + } + }, + "to": { + "trackedEntityInstance": { + "trackedEntityInstance": "nWrB0TfWlvh" + } + } } ], "attributes": [ @@ -171,6 +188,23 @@ "trackedEntityInstance": "nWrB0TfWlvh" } } + }, + { + "lastUpdated": "2019-02-07T08:06:28.369", + "created": "2019-02-07T08:06:28.369", + "relationshipName": "Lab Sample to Person", + "relationshipType": "V2kkHafqs8G", + "relationship": "AJOytZW7OaI", + "from": { + "trackedEntityInstance": { + "trackedEntityInstance": "nWrB0TfWlvh" + } + }, + "to": { + "trackedEntityInstance": { + "trackedEntityInstance": "nWrB0TfWlvD" + } + } } ], "attributes": [ diff --git a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt index f38a313e2e..60be740e6d 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/enrollment/internal/EnrollmentHandlerShould.kt @@ -93,7 +93,7 @@ class EnrollmentHandlerShould { @Test fun do_nothing_when_passing_null_argument() { - val params = IdentifiableDataHandlerParams(false, false, false, false) + val params = IdentifiableDataHandlerParams(hasAllAttributes = false, overwrite = false, asRelationship = false) enrollmentHandler.handleMany(null, params, relationshipItemRelatives) // verify that store or event handler is never called @@ -108,7 +108,7 @@ class EnrollmentHandlerShould { fun invoke_only_delete_when_a_enrollment_is_set_as_deleted() { whenever(enrollment.deleted()).doReturn(Boolean.TRUE) - val params = IdentifiableDataHandlerParams(false, false, false, false) + val params = IdentifiableDataHandlerParams(hasAllAttributes = false, overwrite = false, asRelationship = false) enrollmentHandler.handleMany(listOf(enrollment), params, relationshipItemRelatives) // verify that enrollment store is only invoked with delete @@ -117,7 +117,7 @@ class EnrollmentHandlerShould { // event handler should not be invoked verify(eventHandler, never()).handleMany(any(), any(), any()) - verify(eventCleaner, times(1)).deleteOrphan(any(), any()) + verify(eventCleaner, never()).deleteOrphan(any(), any()) verify(noteHandler, never()).handleMany(any()) } @@ -126,7 +126,7 @@ class EnrollmentHandlerShould { whenever(enrollment.deleted()).doReturn(Boolean.FALSE) whenever(enrollmentStore.updateOrInsert(any())).doReturn(HandleAction.Update) - val params = IdentifiableDataHandlerParams(false, false, false, false) + val params = IdentifiableDataHandlerParams(hasAllAttributes = false, overwrite = false, asRelationship = false) enrollmentHandler.handleMany(listOf(enrollment), params, relationshipItemRelatives) // verify that enrollment store is only invoked with update diff --git a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt index 6f5a828b96..f9e01f1c99 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/event/internal/EventHandlerShould.kt @@ -91,7 +91,7 @@ class EventHandlerShould { @Test fun do_nothing_when_passing_empty_list_argument() { - val params = IdentifiableDataHandlerParams(false, false, false, false) + val params = IdentifiableDataHandlerParams(hasAllAttributes = false, overwrite = false, asRelationship = false) eventHandler.handleMany(listOf(), params, relationshipItemRelatives) // verify that store is never invoked @@ -105,7 +105,7 @@ class EventHandlerShould { fun invoke_only_delete_when_a_event_is_set_as_deleted() { whenever(event.deleted()).doReturn(Boolean.TRUE) - val params = IdentifiableDataHandlerParams(false, false, false, false) + val params = IdentifiableDataHandlerParams(hasAllAttributes = false, overwrite = false, asRelationship = false) eventHandler.handleMany(listOf(event), params, relationshipItemRelatives) // verify that delete is invoked once @@ -126,7 +126,7 @@ class EventHandlerShould { whenever(event.organisationUnit()).doReturn("org_unit_uid") whenever(event.status()).doReturn(EventStatus.SCHEDULE) - val params = IdentifiableDataHandlerParams(false, false, false, false) + val params = IdentifiableDataHandlerParams(hasAllAttributes = false, overwrite = false, asRelationship = false) eventHandler.handleMany(listOf(event), params, relationshipItemRelatives) // verify that update and insert is invoked, since we're updating before inserting @@ -142,7 +142,7 @@ class EventHandlerShould { fun delete_event_data_values_if_empty_list() { whenever(event.trackedEntityDataValues()).doReturn(emptyList()) - val params = IdentifiableDataHandlerParams(false, false, false, false) + val params = IdentifiableDataHandlerParams(hasAllAttributes = false, overwrite = false, asRelationship = false) eventHandler.handleMany(listOf(event), params, relationshipItemRelatives) verify(trackedEntityDataValueHandler, times(1)).removeEventDataValues(any()) diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt index e093bb28ea..6249f999ce 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -28,9 +28,6 @@ package org.hisp.dhis.android.core.trackedentity.internal import com.nhaarman.mockitokotlin2.* -import java.lang.Boolean -import kotlin.Exception -import kotlin.Throws import org.hisp.dhis.android.core.arch.cleaners.internal.OrphanCleaner import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.arch.handlers.internal.HandlerWithTransformer @@ -77,21 +74,24 @@ class TrackedEntityInstanceHandlerShould { private val RELATIVE_UID = "relative_uid" private val RELATIONSHIP_TYPE = "type_uid" + private val params = + IdentifiableDataHandlerParams(hasAllAttributes = true, overwrite = false, asRelationship = false) + // object to test private lateinit var trackedEntityInstanceHandler: TrackedEntityInstanceHandler @Before - @Throws(Exception::class) fun setUp() { whenever(trackedEntityInstance.uid()).doReturn(TEI_UID) - whenever(trackedEntityInstance.toBuilder()).doReturn(teiBuilder) - whenever(teiBuilder.syncState(State.SYNCED)).thenReturn(teiBuilder) - whenever(teiBuilder.aggregatedSyncState(State.SYNCED)).thenReturn(teiBuilder) - whenever(teiBuilder.build()).thenReturn(trackedEntityInstance) whenever(TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance)) .thenReturn(listOf(enrollment)) whenever(TrackedEntityInstanceInternalAccessor.accessRelationships(trackedEntityInstance)) .thenReturn(listOf(relationship)) + whenever(trackedEntityInstance.toBuilder()).doReturn(teiBuilder) + whenever(teiBuilder.syncState(State.SYNCED)).thenReturn(teiBuilder) + whenever(teiBuilder.aggregatedSyncState(State.SYNCED)).thenReturn(teiBuilder) + whenever(teiBuilder.build()).thenReturn(trackedEntityInstance) + whenever(relationship.relationshipType()).thenReturn(RELATIONSHIP_TYPE) whenever(relationship.from()).thenReturn(RelationshipHelper.teiItem(TEI_UID)) whenever(relationship.to()).thenReturn(RelationshipHelper.teiItem(RELATIVE_UID)) @@ -113,7 +113,6 @@ class TrackedEntityInstanceHandlerShould { @Test fun do_nothing_when_passing_null_argument() { - val params = IdentifiableDataHandlerParams(true, false, false, false) trackedEntityInstanceHandler.handleMany(null, params, relationshipItemRelatives) // verify that tracked entity instance store is never called @@ -128,9 +127,8 @@ class TrackedEntityInstanceHandlerShould { @Test fun invoke_delete_when_handle_program_tracked_entity_instance_set_as_deleted() { - whenever(trackedEntityInstance.deleted()).thenReturn(Boolean.TRUE) + whenever(trackedEntityInstance.deleted()).thenReturn(true) - val params = IdentifiableDataHandlerParams(true, false, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relationshipItemRelatives) // verify that tracked entity instance store is only called with delete @@ -145,7 +143,7 @@ class TrackedEntityInstanceHandlerShould { @Test fun invoke_only_update_or_insert_when_handle_tracked_entity_instance_inserted() { - whenever(trackedEntityInstance.deleted()).doReturn(Boolean.FALSE) + whenever(trackedEntityInstance.deleted()).doReturn(false) whenever(trackedEntityInstanceStore.updateOrInsert(any())).doReturn(HandleAction.Update) whenever(trackedEntityInstance.trackedEntityAttributeValues()).doReturn( listOf( @@ -153,7 +151,6 @@ class TrackedEntityInstanceHandlerShould { ) ) - val params = IdentifiableDataHandlerParams(true, false, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relationshipItemRelatives) // verify that tracked entity instance store is only called with update @@ -168,28 +165,14 @@ class TrackedEntityInstanceHandlerShould { @Test fun invoke_cleaners_if_full_update() { - whenever(trackedEntityInstance.toBuilder()).doReturn(TrackedEntityInstance.builder().uid("uid")) whenever(trackedEntityInstanceStore.updateOrInsert(any())).thenReturn(HandleAction.Update) - val params = IdentifiableDataHandlerParams(true, true, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) verify(enrollmentCleaner, times(1)).deleteOrphan(any(), anyOrNull(), anyOrNull()) verify(relationshipCleaner, times(1)).deleteOrphan(any(), anyOrNull()) } - @Test - fun do_not_invoke_cleaners_if_not_full_update() { - whenever(trackedEntityInstance.toBuilder()).doReturn(TrackedEntityInstance.builder().uid("uid")) - whenever(trackedEntityInstanceStore.updateOrInsert(any())).doReturn(HandleAction.Update) - - val params = IdentifiableDataHandlerParams(true, false, false, false) - trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) - - verify(enrollmentCleaner, never()).deleteOrphan(any(), any(), anyOrNull()) - verify(relationshipCleaner, never()).deleteOrphan(any(), any()) - } - @Test fun invoke_relationship_handler_with_relationship_from_version_manager() { whenever(relationshipVersionManager.getRelativeTei(relationship, TEI_UID)).doReturn(relative) @@ -200,7 +183,6 @@ class TrackedEntityInstanceHandlerShould { whenever(relativeBuilder.aggregatedSyncState(any())).doReturn(relativeBuilder) whenever(relativeBuilder.build()).doReturn(relative) - val params = IdentifiableDataHandlerParams(true, false, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) verify(relationshipHandler, times(1)).handleMany(any(), any()) @@ -214,7 +196,6 @@ class TrackedEntityInstanceHandlerShould { fun do_not_invoke_relationship_repository_when_no_relative() { whenever(relationshipVersionManager.getRelativeTei(relationship, TEI_UID)).doReturn(null) - val params = IdentifiableDataHandlerParams(true, false, false, false) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relationshipItemRelatives) verify(relationshipHandler, never()).handle(any()) @@ -222,8 +203,8 @@ class TrackedEntityInstanceHandlerShould { @Test fun do_not_delete_orphan_attribute_values_if_not_all_attributes_and_null_program() { - val params = IdentifiableDataHandlerParams(false, false, false, false, null) - trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) + val thisParams = params.copy(hasAllAttributes = false) + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), thisParams, relatives) verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) @@ -234,8 +215,8 @@ class TrackedEntityInstanceHandlerShould { @Test fun delete_orphan_program_attribute_values_if_not_all_attributes_and_program() { - val params = IdentifiableDataHandlerParams(false, false, false, false, "program") - trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), params, relatives) + val thisParams = params.copy(hasAllAttributes = false, program = "program") + trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), thisParams, relatives) verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) From 1126428b70b4b1968cc315486cd2ddfca4dfd5a9 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 5 Apr 2022 10:59:09 +0200 Subject: [PATCH 239/253] Do not remove protected attributes --- .../TrackedEntityAttributeValueStore.kt | 6 +++ .../TrackedEntityAttributeValueStoreImpl.kt | 33 +++++++++++++++- .../internal/TrackedEntityInstanceHandler.kt | 38 ++++++++++++------- .../TrackedEntityInstanceHandlerShould.kt | 23 ++++++----- 4 files changed, 74 insertions(+), 26 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt index f3832be214..dd533be808 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStore.kt @@ -42,6 +42,12 @@ internal interface TrackedEntityAttributeValueStore : ObjectWithoutUidStore, program: String ) + fun deleteByInstanceAndNotInAccessibleAttributes( + trackedEntityInstanceUid: String, + trackedEntityAttributeUids: List, + teiType: String, + programs: List + ) fun removeDeletedAttributeValuesByInstance(trackedEntityInstanceUid: String) } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt index 3932037bc9..28df9242ac 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt @@ -41,8 +41,7 @@ import org.hisp.dhis.android.core.arch.helpers.internal.EnumHelper.asStringList import org.hisp.dhis.android.core.common.DataColumns import org.hisp.dhis.android.core.common.State.Companion.uploadableStatesIncludingError import org.hisp.dhis.android.core.program.ProgramTrackedEntityAttributeTableInfo -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValue -import org.hisp.dhis.android.core.trackedentity.TrackedEntityAttributeValueTableInfo +import org.hisp.dhis.android.core.trackedentity.* internal class TrackedEntityAttributeValueStoreImpl private constructor( databaseAdapter: DatabaseAdapter, @@ -127,6 +126,36 @@ internal class TrackedEntityAttributeValueStoreImpl private constructor( deleteWhere(deleteWhereQuery) } + override fun deleteByInstanceAndNotInAccessibleAttributes( + trackedEntityInstanceUid: String, + trackedEntityAttributeUids: List, + teiType: String, + programs: List + ) { + val programsStr = programs.joinToString(separator = ",", prefix = "'", postfix = "'") + val deleteWhereQuery = WhereClauseBuilder() + .appendKeyStringValue( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE, + trackedEntityInstanceUid + ) + .appendNotInKeyStringValues( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE, + trackedEntityAttributeUids + ) + .appendInSubQuery( + TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE, + "SELECT ${ProgramTrackedEntityAttributeTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE} " + + "FROM ${ProgramTrackedEntityAttributeTableInfo.TABLE_INFO.name()} " + + "WHERE ${ProgramTrackedEntityAttributeTableInfo.Columns.PROGRAM} IN ($programsStr) " + + "UNION ALL " + + "SELECT ${TrackedEntityTypeAttributeTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE} " + + "FROM ${TrackedEntityTypeAttributeTableInfo.TABLE_INFO.name()} " + + "WHERE ${TrackedEntityTypeAttributeTableInfo.Columns.TRACKED_ENTITY_TYPE} = '${teiType}'" + ) + .build() + deleteWhere(deleteWhereQuery) + } + override fun removeDeletedAttributeValuesByInstance(trackedEntityInstanceUid: String) { val deleteWhereQuery = WhereClauseBuilder() .appendKeyStringValue( diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt index f2daf9313a..78d09ce32a 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandler.kt @@ -86,11 +86,7 @@ internal class TrackedEntityInstanceHandler @Inject constructor( value.toBuilder().trackedEntityInstance(o.uid()).build() } - if (params.hasAllAttributes) { - deleteOrphanAttributes(o, program = null) - } else if (params.program != null) { - deleteOrphanAttributes(o, params.program) - } + deleteOrphanAttributes(o, params) val enrollments = TrackedEntityInstanceInternalAccessor.accessEnrollments(o) if (enrollments != null) { @@ -119,18 +115,32 @@ internal class TrackedEntityInstanceHandler @Inject constructor( return o.toBuilder().aggregatedSyncState(State.SYNCED).syncState(State.SYNCED).build() } - private fun deleteOrphanAttributes(tei: TrackedEntityInstance, program: String?) { + private fun deleteOrphanAttributes(tei: TrackedEntityInstance, params: IdentifiableDataHandlerParams) { tei.trackedEntityAttributeValues()?.let { attributes -> val attributeUids = attributes.mapNotNull { it.trackedEntityAttribute() } - if (program == null) { - trackedEntityAttributeValueStore.deleteByInstanceAndNotInAttributes(tei.uid(), attributeUids) - } else { - trackedEntityAttributeValueStore.deleteByInstanceAndNotInProgramAttributes( - tei.uid(), - attributeUids, - program - ) + when { + params.asRelationship -> { + trackedEntityAttributeValueStore.deleteByInstanceAndNotInAttributes(tei.uid(), attributeUids) + } + params.program != null -> { + trackedEntityAttributeValueStore.deleteByInstanceAndNotInProgramAttributes( + tei.uid(), + attributeUids, + params.program + ) + } + else -> { + val programs = + TrackedEntityInstanceInternalAccessor.accessEnrollments(tei).mapNotNull { it.program() } + + trackedEntityAttributeValueStore.deleteByInstanceAndNotInAccessibleAttributes( + trackedEntityInstanceUid = tei.uid(), + trackedEntityAttributeUids = attributeUids, + teiType = tei.trackedEntityType()!!, + programs = programs + ) + } } } } diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt index 6249f999ce..10039056a1 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -71,6 +71,7 @@ class TrackedEntityInstanceHandlerShould { // Constants private val TEI_UID = "test_tei_uid" + private val TET_UID = "test_tet_uid" private val RELATIVE_UID = "relative_uid" private val RELATIONSHIP_TYPE = "type_uid" @@ -83,13 +84,14 @@ class TrackedEntityInstanceHandlerShould { @Before fun setUp() { whenever(trackedEntityInstance.uid()).doReturn(TEI_UID) + whenever(trackedEntityInstance.trackedEntityType()).doReturn(TET_UID) whenever(TrackedEntityInstanceInternalAccessor.accessEnrollments(trackedEntityInstance)) .thenReturn(listOf(enrollment)) whenever(TrackedEntityInstanceInternalAccessor.accessRelationships(trackedEntityInstance)) .thenReturn(listOf(relationship)) whenever(trackedEntityInstance.toBuilder()).doReturn(teiBuilder) - whenever(teiBuilder.syncState(State.SYNCED)).thenReturn(teiBuilder) - whenever(teiBuilder.aggregatedSyncState(State.SYNCED)).thenReturn(teiBuilder) + whenever(teiBuilder.syncState(any())).thenReturn(teiBuilder) + whenever(teiBuilder.aggregatedSyncState(any())).thenReturn(teiBuilder) whenever(teiBuilder.build()).thenReturn(trackedEntityInstance) whenever(relationship.relationshipType()).thenReturn(RELATIONSHIP_TYPE) @@ -119,7 +121,7 @@ class TrackedEntityInstanceHandlerShould { verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) verify(trackedEntityInstanceStore, never()).updateOrInsert(any()) verify(trackedEntityAttributeValueHandler, never()).handleMany(any(), any()) - verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) + verifyNoMoreInteractions(trackedEntityAttributeValueStore) verify(enrollmentHandler, never()).handleMany(any(), any(), any()) verify(enrollmentCleaner, never()).deleteOrphan(any(), any(), anyOrNull()) verify(relationshipCleaner, never()).deleteOrphan(any(), any()) @@ -135,7 +137,7 @@ class TrackedEntityInstanceHandlerShould { verify(trackedEntityInstanceStore, times(1)).deleteIfExists(any()) verify(trackedEntityInstanceStore, never()).updateOrInsert(any()) verify(trackedEntityAttributeValueHandler, never()).handleMany(any(), any()) - verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) + verifyNoMoreInteractions(trackedEntityAttributeValueStore) // verify that enrollment handler is never called verify(enrollmentHandler, never()).handleMany(any(), any(), any()) @@ -157,7 +159,8 @@ class TrackedEntityInstanceHandlerShould { verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) verify(trackedEntityAttributeValueHandler, times(1)).handleMany(any(), any()) - verify(trackedEntityAttributeValueStore, times(1)).deleteByInstanceAndNotInAttributes(any(), any()) + verify(trackedEntityAttributeValueStore, times(1)) + .deleteByInstanceAndNotInAccessibleAttributes(any(), any(), any(), any()) // verify that enrollment handler is called once verify(enrollmentHandler, times(1)).handleMany(any(), any(), any()) @@ -202,15 +205,15 @@ class TrackedEntityInstanceHandlerShould { } @Test - fun do_not_delete_orphan_attribute_values_if_not_all_attributes_and_null_program() { - val thisParams = params.copy(hasAllAttributes = false) + fun delete_orphan_attributes_if_as_relationship() { + val thisParams = params.copy(asRelationship = true) trackedEntityInstanceHandler.handleMany(listOf(trackedEntityInstance), thisParams, relatives) verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) verify(trackedEntityAttributeValueHandler, times(1)).handleMany(any(), any()) - verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) - verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInProgramAttributes(any(), any(), any()) + verify(trackedEntityAttributeValueStore, times(1)).deleteByInstanceAndNotInAttributes(any(), any()) + verifyNoMoreInteractions(trackedEntityAttributeValueStore) } @Test @@ -221,9 +224,9 @@ class TrackedEntityInstanceHandlerShould { verify(trackedEntityInstanceStore, times(1)).updateOrInsert(any()) verify(trackedEntityInstanceStore, never()).deleteIfExists(any()) verify(trackedEntityAttributeValueHandler, times(1)).handleMany(any(), any()) - verify(trackedEntityAttributeValueStore, never()).deleteByInstanceAndNotInAttributes(any(), any()) verify(trackedEntityAttributeValueStore, times(1)).deleteByInstanceAndNotInProgramAttributes( any(), any(), any() ) + verifyNoMoreInteractions(trackedEntityAttributeValueStore) } } From f5f50b402cd7f92c2ce458abfce6b42713530cc5 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 5 Apr 2022 12:19:47 +0200 Subject: [PATCH 240/253] fix: [ANDROSDK-1527-DEF] Remove default orderBy created in TEI search --- .../search/TrackedEntityInstanceQueryRepositoryScope.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java index 09aa9d77f9..56688633f5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java @@ -152,17 +152,12 @@ abstract static class Builder { // Auxiliary fields to access values abstract List states(); - abstract List order(); public TrackedEntityInstanceQueryRepositoryScope build() { if (states() != null) { mode(RepositoryMode.OFFLINE_ONLY); } - if (order() == null || order().isEmpty()) { - order(Collections.singletonList(TrackedEntityInstanceQueryScopeOrderByItem.DEFAULT_TRACKER_ORDER)); - } - return autoBuild(); } } From 3b2b846ed10803abe38248e6d4ee0dd62c1a0391 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 5 Apr 2022 12:59:57 +0200 Subject: [PATCH 241/253] [ANDROSDK-1529] Checkstyle --- .../internal/TrackedEntityAttributeValueStoreImpl.kt | 12 ++++++------ .../internal/TrackedEntityInstanceHandlerShould.kt | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt index 28df9242ac..574629abcc 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityAttributeValueStoreImpl.kt @@ -145,12 +145,12 @@ internal class TrackedEntityAttributeValueStoreImpl private constructor( .appendInSubQuery( TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE, "SELECT ${ProgramTrackedEntityAttributeTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE} " + - "FROM ${ProgramTrackedEntityAttributeTableInfo.TABLE_INFO.name()} " + - "WHERE ${ProgramTrackedEntityAttributeTableInfo.Columns.PROGRAM} IN ($programsStr) " + - "UNION ALL " + - "SELECT ${TrackedEntityTypeAttributeTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE} " + - "FROM ${TrackedEntityTypeAttributeTableInfo.TABLE_INFO.name()} " + - "WHERE ${TrackedEntityTypeAttributeTableInfo.Columns.TRACKED_ENTITY_TYPE} = '${teiType}'" + "FROM ${ProgramTrackedEntityAttributeTableInfo.TABLE_INFO.name()} " + + "WHERE ${ProgramTrackedEntityAttributeTableInfo.Columns.PROGRAM} IN ($programsStr) " + + "UNION ALL " + + "SELECT ${TrackedEntityTypeAttributeTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE} " + + "FROM ${TrackedEntityTypeAttributeTableInfo.TABLE_INFO.name()} " + + "WHERE ${TrackedEntityTypeAttributeTableInfo.Columns.TRACKED_ENTITY_TYPE} = '$teiType'" ) .build() deleteWhere(deleteWhereQuery) diff --git a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt index 10039056a1..03ce7cc631 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/trackedentity/internal/TrackedEntityInstanceHandlerShould.kt @@ -33,7 +33,6 @@ import org.hisp.dhis.android.core.arch.handlers.internal.HandleAction import org.hisp.dhis.android.core.arch.handlers.internal.HandlerWithTransformer import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandler import org.hisp.dhis.android.core.arch.handlers.internal.IdentifiableDataHandlerParams -import org.hisp.dhis.android.core.common.State import org.hisp.dhis.android.core.enrollment.Enrollment import org.hisp.dhis.android.core.relationship.Relationship import org.hisp.dhis.android.core.relationship.RelationshipHelper From 212f92158f32811aac2d5a4a301e7a9f51ca4b2f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 6 Apr 2022 07:26:01 +0200 Subject: [PATCH 242/253] [ANDROSDK-1530] Do not handle FILE_RESOURCE value type --- .../main/java/org/hisp/dhis/android/core/common/ValueType.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt b/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt index bd267b9546..1b3aa67879 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/common/ValueType.kt @@ -87,6 +87,8 @@ enum class ValueType(val validator: ValueTypeValidator<*>) { private val BOOLEAN_TYPES: Set = HashSet(listOf(BOOLEAN, TRUE_ONLY)) private val TEXT_TYPES: Set = HashSet(listOf(TEXT, LONG_TEXT, LETTER, COORDINATE, TIME)) private val DATE_TYPES: Set = HashSet(listOf(DATE, DATETIME)) - private val FILE_TYPES: Set = HashSet(listOf(FILE_RESOURCE, IMAGE)) + + // FILE_RESOURCE is not supported yet ANDROSDK-1531 + private val FILE_TYPES: Set = HashSet(listOf(IMAGE)) } } From b46e9ecb93665160cd8f3c1f5cb2f1f2135fdd7f Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 6 Apr 2022 07:26:14 +0200 Subject: [PATCH 243/253] [ANDROSDK-1530] Fix sms localDb method --- .../data/localdbrepository/internal/FileResourceCleaner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java index 936e9cb48b..7279cc2bce 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java +++ b/core/src/main/java/org/hisp/dhis/android/core/sms/data/localdbrepository/internal/FileResourceCleaner.java @@ -104,7 +104,7 @@ Single removeFileAttributeValues(TrackedEntityInstance in return trackedEntityModule.trackedEntityAttributes() .byUid().in(attributeUids) - .byValueType().in(ValueType.FILE_RESOURCE, ValueType.FILE_RESOURCE) + .byValueType().in(ValueType.FILE_RESOURCE, ValueType.IMAGE) .get() .map(fileAttributes -> { if (fileAttributes.isEmpty()) { From e9587a9bf185cbf21f609af9b3b27ad17db913ad Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 7 Apr 2022 08:26:14 +0200 Subject: [PATCH 244/253] [ANDROSDK-1533] Add ExcludeUids method in TEI search repository --- .../TrackedEntityInstanceLocalQueryHelper.kt | 6 +++--- ...kedEntityInstanceQueryCollectionRepository.java | 14 +++++++++----- .../TrackedEntityInstanceQueryDataFetcher.kt | 4 ++-- .../TrackedEntityInstanceQueryRepositoryScope.java | 6 ++++++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt index 33a9855f4a..18ce8bef12 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceLocalQueryHelper.kt @@ -72,13 +72,13 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( private val trackedEntityAttribute = TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_ATTRIBUTE private val trackedEntityInstance = TrackedEntityAttributeValueTableInfo.Columns.TRACKED_ENTITY_INSTANCE - fun getSqlQuery(scope: TrackedEntityInstanceQueryRepositoryScope, excludeList: Set, limit: Int): String { + fun getSqlQuery(scope: TrackedEntityInstanceQueryRepositoryScope, excludeList: Set?, limit: Int): String { return getSqlQuery(scope, excludeList, limit, teiAll) } fun getUidsWhereClause( scope: TrackedEntityInstanceQueryRepositoryScope, - excludeList: Set, + excludeList: Set?, limit: Int ): String { val selectSubQuery = getSqlQuery(scope, excludeList, limit, teiUid) @@ -89,7 +89,7 @@ internal class TrackedEntityInstanceLocalQueryHelper @Inject constructor( private fun getSqlQuery( scope: TrackedEntityInstanceQueryRepositoryScope, - excludeList: Set, + excludeList: Set?, limit: Int, columns: String ): String { diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java index 5812674113..4a2ca23d41 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryCollectionRepository.java @@ -69,6 +69,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -384,6 +385,10 @@ public EqFilterConnector scope.toBuilder().allowOnlineCache(bool).build()); } + public ListFilterConnector excludeUids() { + return connectorFactory.listConnector(list -> scope.toBuilder().excludedUids(new HashSet<>(list)).build()); + } + /** * Apply the filters defined in a {@link TrackedEntityInstanceFilter}. It will overwrite previous filters in case * they overlap. In the same way, they could be overwritten by subsequent filters. @@ -522,8 +527,7 @@ public TrackedEntityInstanceQueryRepositoryScope getScope() { @Override public List blockingGet() { if (scope.mode().equals(RepositoryMode.OFFLINE_ONLY) || scope.mode().equals(RepositoryMode.OFFLINE_FIRST)) { - String sqlQuery = localQueryHelper.getSqlQuery(scope, Collections.emptySet(), - -1); + String sqlQuery = localQueryHelper.getSqlQuery(scope, scope.excludedUids(), -1); List instances = store.selectRawQuery(sqlQuery); return ChildrenAppenderExecutor.appendInObjectCollection(instances, childrenAppenders, new ChildrenSelection(Collections.singleton( @@ -531,6 +535,7 @@ public List blockingGet() { } else { try { List instances = new ArrayList<>(); + Set returnedUids = scope.excludedUids() == null ? Collections.emptySet() : scope.excludedUids(); List onlineQueries = onlineHelper.fromScope(scope); @@ -538,10 +543,10 @@ public List blockingGet() { TrackedEntityInstanceQueryOnline noPagingQuery = onlineQuery.toBuilder().paging(false).build(); List pageInstances = onlineCallFactory.getCall(noPagingQuery).call(); - Set returnedUids = UidsHelper.getUids(instances); for (TrackedEntityInstance instance : pageInstances) { if (!returnedUids.contains(instance.uid())) { instances.add(instance); + returnedUids.add(instance.uid()); } } } @@ -614,8 +619,7 @@ public Single> getUids() { @Override public List blockingGetUids() { if (scope.mode().equals(RepositoryMode.OFFLINE_ONLY) || scope.mode().equals(RepositoryMode.OFFLINE_FIRST)) { - String sqlQuery = localQueryHelper.getUidsWhereClause(scope, Collections.emptySet(), - -1); + String sqlQuery = localQueryHelper.getUidsWhereClause(scope, scope.excludedUids(), -1); return store.selectUidsWhere(sqlQuery); } else { List instances = blockingGet(); diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt index 45924af9cf..aadd042b87 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryDataFetcher.kt @@ -52,7 +52,7 @@ internal class TrackedEntityInstanceQueryDataFetcher constructor( private val baseOnlineQueries: List = onlineHelper.fromScope(scope) private val onlineQueryStatusMap: MutableMap = HashMap() - private var returnedUidsOffline: MutableSet = HashSet() + private var returnedUidsOffline: MutableSet = scope.excludedUids() ?: HashSet() private var returnedUidsOnline: MutableSet = HashSet() private var returnedErrorCodes: MutableSet = HashSet() private var isExhaustedOffline = false @@ -64,7 +64,7 @@ internal class TrackedEntityInstanceQueryDataFetcher constructor( } fun refresh() { - returnedUidsOffline = HashSet() + returnedUidsOffline = scope.excludedUids() ?: HashSet() returnedUidsOnline = HashSet() returnedErrorCodes = HashSet() } diff --git a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java index 56688633f5..496c253f17 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java +++ b/core/src/main/java/org/hisp/dhis/android/core/trackedentity/search/TrackedEntityInstanceQueryRepositoryScope.java @@ -43,6 +43,7 @@ import java.util.Collections; import java.util.List; +import java.util.Set; @AutoValue public abstract class TrackedEntityInstanceQueryRepositoryScope implements BaseScope { @@ -95,6 +96,9 @@ public abstract class TrackedEntityInstanceQueryRepositoryScope implements BaseS @NonNull public abstract Boolean allowOnlineCache(); + @Nullable + public abstract Set excludedUids(); + abstract Builder toBuilder(); static Builder builder() { @@ -148,6 +152,8 @@ abstract static class Builder { public abstract Builder allowOnlineCache(Boolean allowOnlineCache); + public abstract Builder excludedUids(Set excludedUids); + abstract TrackedEntityInstanceQueryRepositoryScope autoBuild(); // Auxiliary fields to access values From 79b454c570d2fe429db2d07e57335052716b7ef9 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Thu, 7 Apr 2022 08:34:17 +0200 Subject: [PATCH 245/253] [ANDROSDK-1533] Add integration test --- ...QueryCollectionRepositoryMockIntegrationShould.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java index d225bb34d3..9030be876d 100644 --- a/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java +++ b/core/src/androidTest/java/org/hisp/dhis/android/testapp/trackedentity/search/TrackedEntityInstanceQueryCollectionRepositoryMockIntegrationShould.java @@ -94,6 +94,16 @@ public void find_by_event_date() throws ParseException { assertThat(trackedEntityInstances.size()).isEqualTo(1); } + @Test + public void exclude_uids() { + List trackedEntityInstances = + d2.trackedEntityModule().trackedEntityInstanceQuery() + .excludeUids().in("nWrB0TfWlvh") + .blockingGet(); + + assertThat(trackedEntityInstances.size()).isEqualTo(1); + } + @Test public void get_scope() { TrackedEntityInstanceQueryRepositoryScope scope = From 7283c33fdc32b134a05447e1bc4a19b2ed2d3cd5 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 7 Apr 2022 17:09:16 +0200 Subject: [PATCH 246/253] [androsdk-1534] Update account manager to only emit on the delete account observable when the SDK deletes the account. --- .../android/core/user/internal/AccountManagerImpl.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index 43c9dfdc8a..fe93a83721 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -81,13 +81,22 @@ internal class AccountManagerImpl @Inject constructor( .errorComponent(D2ErrorComponent.SDK) .build() } else { - deleteAccount(credentials) + deleteAccountAndEmit(credentials) } } @Throws(D2Error::class) fun deleteAccount(credentials: Credentials) { + deleteAccountInternal(credentials) + } + + internal fun deleteAccountAndEmit(credentials: Credentials) { accountDeletionSubject.onNext(Unit) + deleteAccountInternal(credentials) + } + + @Throws(D2Error::class) + private fun deleteAccountInternal(credentials: Credentials) { logOutCall.logOut().blockingAwait() val configuration = databasesConfigurationStore.get() val loggedAccount = DatabaseConfigurationHelper.getLoggedAccount( From 2cc76d89937376f2b74598ae173d8e7a8f773ce0 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Thu, 7 Apr 2022 17:09:37 +0200 Subject: [PATCH 247/253] [androsdk-1534] Update logInCall to use the new method --- .../java/org/hisp/dhis/android/core/user/internal/LogInCall.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index a74ddd0c04..c79270b7e8 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -107,7 +107,7 @@ internal class LogInCall @Inject internal constructor( return if (d2Error.errorCode() == D2ErrorCode.USER_ACCOUNT_DISABLED) { try { if (credentials != null) { - accountManager.deleteAccount(credentials) + accountManager.deleteAccountAndEmit(credentials) } d2Error } catch (e: Exception) { From 2274378d1a5f5a3de14253f43d76a5eaf6c61db0 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 8 Apr 2022 08:20:33 +0200 Subject: [PATCH 248/253] [androsdk-1534] Update deleteCurrentAccount to not emit --- .../core/user/internal/AccountManagerImpl.kt | 26 +++++++++++++++---- .../UserAccountDisabledErrorCatcher.kt | 2 +- .../UserAccountDisabledErrorCatcherShould.kt | 2 +- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index fe93a83721..e87929e77f 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -75,16 +75,32 @@ internal class AccountManagerImpl @Inject constructor( val credentials = credentialsSecureStore.get() if (credentials == null) { - throw D2Error.builder() - .errorCode(D2ErrorCode.NO_AUTHENTICATED_USER) - .errorDescription("There is not any authenticated user") - .errorComponent(D2ErrorComponent.SDK) - .build() + throwNotAnyAuthenticatedUser() + } else { + deleteAccount(credentials) + } + } + + @Throws(D2Error::class) + internal fun deleteCurrentAccountAndEmit() { + val credentials = credentialsSecureStore.get() + + if (credentials == null) { + throwNotAnyAuthenticatedUser() } else { deleteAccountAndEmit(credentials) } } + @Throws(D2Error::class) + private fun throwNotAnyAuthenticatedUser() { + throw D2Error.builder() + .errorCode(D2ErrorCode.NO_AUTHENTICATED_USER) + .errorDescription("There is not any authenticated user") + .errorComponent(D2ErrorComponent.SDK) + .build() + } + @Throws(D2Error::class) fun deleteAccount(credentials: Credentials) { deleteAccountInternal(credentials) diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index 7adb5d8478..4280478ea5 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -51,7 +51,7 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode? { return try { - accountManager.deleteCurrentAccount() + accountManager.deleteCurrentAccountAndEmit() D2ErrorCode.USER_ACCOUNT_DISABLED } catch (e: Throwable) { D2ErrorCode.USER_ACCOUNT_DISABLED diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt index affbe1cd07..7061ff7f80 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -64,6 +64,6 @@ class UserAccountDisabledErrorCatcherShould { @Test fun delete_database() { catcher.catchError(response, response.errorBody()!!.string()) - verify(accountManager, times(1)).deleteCurrentAccount() + verify(accountManager, times(1)).deleteCurrentAccountAndEmit() } } From 6e78c81851c771be0420930e3d56f154db1d0db8 Mon Sep 17 00:00:00 2001 From: Marcos Campos Date: Fri, 8 Apr 2022 13:36:29 +0200 Subject: [PATCH 249/253] [androsdk-1534] Emit AccountDeletionReason --- .../core/user/AccountDeletionReason.kt | 34 +++++++++++++++++++ .../dhis/android/core/user/AccountManager.kt | 2 +- .../core/user/internal/AccountManagerImpl.kt | 19 ++++++----- .../android/core/user/internal/LogInCall.kt | 3 +- .../UserAccountDisabledErrorCatcher.kt | 3 +- .../UserAccountDisabledErrorCatcherShould.kt | 3 +- 6 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 core/src/main/java/org/hisp/dhis/android/core/user/AccountDeletionReason.kt diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountDeletionReason.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountDeletionReason.kt new file mode 100644 index 0000000000..f895e43f7e --- /dev/null +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountDeletionReason.kt @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2004-2022, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.android.core.user + +enum class AccountDeletionReason { + ACCOUNT_DISABLED, + APPLICATION_REQUEST +} diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt index 2e6a07aa97..815506de4e 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/AccountManager.kt @@ -43,5 +43,5 @@ interface AccountManager { @Throws(D2Error::class) fun deleteCurrentAccount() - fun accountDeletionObservable(): Observable + fun accountDeletionObservable(): Observable } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt index e87929e77f..524e678ec1 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/AccountManagerImpl.kt @@ -45,6 +45,7 @@ import org.hisp.dhis.android.core.configuration.internal.MultiUserDatabaseManage import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.maintenance.D2ErrorComponent +import org.hisp.dhis.android.core.user.AccountDeletionReason import org.hisp.dhis.android.core.user.AccountManager @Reusable @@ -56,7 +57,7 @@ internal class AccountManagerImpl @Inject constructor( private val logOutCall: LogOutCall, private val context: Context ) : AccountManager { - private val accountDeletionSubject = PublishSubject.create() + private val accountDeletionSubject = PublishSubject.create() override fun getAccounts(): List { return databasesConfigurationStore.get()?.accounts() ?: emptyList() @@ -82,13 +83,13 @@ internal class AccountManagerImpl @Inject constructor( } @Throws(D2Error::class) - internal fun deleteCurrentAccountAndEmit() { + internal fun deleteCurrentAccountAndEmit(deletionReason: AccountDeletionReason) { val credentials = credentialsSecureStore.get() if (credentials == null) { throwNotAnyAuthenticatedUser() } else { - deleteAccountAndEmit(credentials) + deleteAccountAndEmit(credentials, deletionReason) } } @@ -103,16 +104,16 @@ internal class AccountManagerImpl @Inject constructor( @Throws(D2Error::class) fun deleteAccount(credentials: Credentials) { - deleteAccountInternal(credentials) + deleteAccountInternal(credentials, AccountDeletionReason.APPLICATION_REQUEST) } - internal fun deleteAccountAndEmit(credentials: Credentials) { - accountDeletionSubject.onNext(Unit) - deleteAccountInternal(credentials) + internal fun deleteAccountAndEmit(credentials: Credentials, deletionReason: AccountDeletionReason) { + deleteAccountInternal(credentials, deletionReason) } @Throws(D2Error::class) - private fun deleteAccountInternal(credentials: Credentials) { + private fun deleteAccountInternal(credentials: Credentials, deletionReason: AccountDeletionReason) { + accountDeletionSubject.onNext(deletionReason) logOutCall.logOut().blockingAwait() val configuration = databasesConfigurationStore.get() val loggedAccount = DatabaseConfigurationHelper.getLoggedAccount( @@ -127,7 +128,7 @@ internal class AccountManagerImpl @Inject constructor( databaseAdapterFactory.deleteDatabase(loggedAccount) } - override fun accountDeletionObservable(): Observable { + override fun accountDeletionObservable(): Observable { return accountDeletionSubject } } diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt index c79270b7e8..61a3adb1d7 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/LogInCall.kt @@ -45,6 +45,7 @@ import org.hisp.dhis.android.core.configuration.internal.ServerUrlParser import org.hisp.dhis.android.core.maintenance.D2Error import org.hisp.dhis.android.core.maintenance.D2ErrorCode import org.hisp.dhis.android.core.systeminfo.SystemInfo +import org.hisp.dhis.android.core.user.AccountDeletionReason import org.hisp.dhis.android.core.user.AuthenticatedUser import org.hisp.dhis.android.core.user.User import org.hisp.dhis.android.core.user.UserInternalAccessor @@ -107,7 +108,7 @@ internal class LogInCall @Inject internal constructor( return if (d2Error.errorCode() == D2ErrorCode.USER_ACCOUNT_DISABLED) { try { if (credentials != null) { - accountManager.deleteAccountAndEmit(credentials) + accountManager.deleteAccountAndEmit(credentials, AccountDeletionReason.ACCOUNT_DISABLED) } d2Error } catch (e: Exception) { diff --git a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt index 4280478ea5..9e08d16a46 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcher.kt @@ -35,6 +35,7 @@ import org.hisp.dhis.android.core.arch.api.executors.internal.APICallErrorCatche import org.hisp.dhis.android.core.arch.api.executors.internal.APIErrorMapper import org.hisp.dhis.android.core.imports.internal.HttpMessageResponse import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.user.AccountDeletionReason import retrofit2.HttpException import retrofit2.Response @@ -51,7 +52,7 @@ internal class UserAccountDisabledErrorCatcher @Inject constructor( override fun catchError(response: Response<*>, errorBody: String): D2ErrorCode? { return try { - accountManager.deleteCurrentAccountAndEmit() + accountManager.deleteCurrentAccountAndEmit(AccountDeletionReason.ACCOUNT_DISABLED) D2ErrorCode.USER_ACCOUNT_DISABLED } catch (e: Throwable) { D2ErrorCode.USER_ACCOUNT_DISABLED diff --git a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt index 7061ff7f80..99e1411654 100644 --- a/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt +++ b/core/src/test/java/org/hisp/dhis/android/core/user/internal/UserAccountDisabledErrorCatcherShould.kt @@ -34,6 +34,7 @@ import com.nhaarman.mockitokotlin2.verify import okhttp3.ResponseBody import org.hisp.dhis.android.core.arch.json.internal.ObjectMapperFactory.objectMapper import org.hisp.dhis.android.core.maintenance.D2ErrorCode +import org.hisp.dhis.android.core.user.AccountDeletionReason import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -64,6 +65,6 @@ class UserAccountDisabledErrorCatcherShould { @Test fun delete_database() { catcher.catchError(response, response.errorBody()!!.string()) - verify(accountManager, times(1)).deleteCurrentAccountAndEmit() + verify(accountManager, times(1)).deleteCurrentAccountAndEmit(AccountDeletionReason.ACCOUNT_DISABLED) } } From 9d096fd1ee167ae81e5726f250020ad61838b909 Mon Sep 17 00:00:00 2001 From: ericampire Date: Tue, 12 Apr 2022 13:04:19 +0200 Subject: [PATCH 250/253] [ANDROSDK-1518] Public method on D2Manager must be exposed as static in Java --- core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt index 83d9f12734..b338350125 100644 --- a/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt +++ b/core/src/main/java/org/hisp/dhis/android/core/D2Manager.kt @@ -62,6 +62,7 @@ object D2Manager { * @throws IllegalStateException if the D2 object wasn't instantiated */ @Throws(IllegalStateException::class) + @JvmStatic fun getD2(): D2 { return d2 ?: throw IllegalStateException("D2 is not instantiated yet") } @@ -70,6 +71,7 @@ object D2Manager { * Returns if D2 has already been instantiated using the [D2Manager.instantiateD2] method. * @return if D2 has already been instantiated */ + @JvmStatic fun isD2Instantiated(): Boolean { return d2 != null } @@ -80,6 +82,7 @@ object D2Manager { * @param d2Config the configuration * @return the D2 instance wrapped in a RxJava Single */ + @JvmStatic fun instantiateD2(d2Config: D2Configuration): Single { return Single.fromCallable { val startTime = System.currentTimeMillis() @@ -159,6 +162,7 @@ object D2Manager { } @VisibleForTesting + @JvmStatic fun setTestingDatabase(serverUrl: String, databaseName: String, username: String) { testingServerUrl = serverUrl testingDatabaseName = databaseName @@ -166,11 +170,13 @@ object D2Manager { } @VisibleForTesting + @JvmStatic fun removeCredentials() { d2DIComponent.credentialsSecureStore().remove() } @VisibleForTesting + @JvmStatic fun setCredentials(username: String, password: String) { if (testingServerUrl.isNullOrEmpty()) { throw NoSuchFieldException("No testing Server Url") From f2cd444293772be03a4ad11bc304e883e70b771d Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Wed, 13 Apr 2022 08:51:00 +0200 Subject: [PATCH 251/253] [ANDROSDK-1535] Update docs to version 1.6.0; analytics; rule-engine compatibility --- docs/content/developer/analytics.md | 13 +++++- docs/content/developer/compatibility.md | 19 +++++---- docs/content/developer/getting-started.md | 4 +- docs/content/developer/program-rule-engine.md | 6 +++ docs/content/developer/settings.md | 5 ++- docs/content/developer/workflow.md | 42 ++++++++++++++++++- ...dhis2_android_sdk_developer_guide_INDEX.md | 4 +- 7 files changed, 79 insertions(+), 14 deletions(-) diff --git a/docs/content/developer/analytics.md b/docs/content/developer/analytics.md index 49c5680b51..1addea664c 100644 --- a/docs/content/developer/analytics.md +++ b/docs/content/developer/analytics.md @@ -74,7 +74,7 @@ Properties included in the `DimensionalResponse` object: - **Filters**: list of ids that act as a filter in the query. - **Values**: list of `DimensionalValue`. Each value contains an ordered list of ids that define the value. In the example above, the value "17" corresponds to "ANC 1st visit" ("fbfJHSPpUQD") and "August 2021" ("202108"). You can use the metadata map to get more information from those ids. -DimensionItems can be used either as dimensions or as filters. And multiple items of the same dimension can be combined in the same query. For example, this query gets "ANC 1st visit" (DataElement "fbfJHSPpUQD") and "ANC 1-3 Dropout Rate" (Indicator "ReUHfIn0pTQ") disaggregated by the category "Location: Fixed/Outreach" (Category "fMZEcRHuamy") using the options "Fixed" (CategoryOption "qkPbeWaFsnU") and "Outreach" (CategoryOption "wbrDrL2aYEc") within the last 3 months (Relative Period) in the UserOrganisationUnit (Relative OrganisationUnit). +DimensionItems can be used either as dimensions or as filters. And multiple items of the same dimension can be combined in the same query. For example, this query gets "ANC 1st visit" (DataElement "fbfJHSPpUQD") and "ANC 1-3 Dropout Rate" (Indicator "ReUHfIn0pTQ") disaggregated by the category "Location: Fixed/Outreach" (Category "fMZEcRHuamy") using the options "Fixed" (CategoryOption "qkPbeWaFsnU") and "Outreach" (CategoryOption "wbrDrL2aYEc") within the last 3 months (Relative Period) in the UserOrganisationUnit (Relative OrganisationUnit) and classifying the values by data item legendSet. ```java d2.analyticsModule().analytics() @@ -85,6 +85,8 @@ d2.analyticsModule().analytics() .withFilter(new DimensionItem.PeriodItem.Relative(RelativePeriod.LAST_3_MONTHS)) .withFilter(new DimensionItem.OrganisationUnitItem.Relative(RelativeOrganisationUnit.USER_ORGUNIT)) + + .withLegendStrategy(AnalyticsLegendStrategy.ByDataItem.INSTANCE) .evaluate(); ``` @@ -99,6 +101,15 @@ Additionally, the query is evaluated against the local metadata and data, which 1. DimensionItems (DataElement, Indicator, OrganisationUnit, ...) must be downloaded in the device. By default, the SDK downloads all the dataSets and programs accessible to the user and the related metadata. 2. Data must be downloaded in the device. The evaluation only takes into account the data stored in the local database. +There are three options to define the legendSet strategy. The class `AnalyticsLegendStrategy` is a sealed class in Kotlin, so the keyword `INSTANCE` must be appended at the end of the object values when coding in Java. Code examples: + +```java +d2.analyticsModule().analytics() + .withLegendStrategy(AnalyticsLegendStrategy.ByDataItem.INSTANCE) // Data items use their own LegendSet + .withLegendStrategy(AnalyticsLegendStrategy.None.INSTANCE) // LegendSets are not used + .withLegendStrategy(new AnalyticsLegendStrategy.Fixed("fqs276KXCXi")) // The provided LegendSet will be used for all data items +``` + ### Visualization analytics { #android_sdk_visualization_analytics } The visualization analtyics engine offers handy methods to evaluate Visualization objects. This engine is implemented on top of the raw analtyics engine and it basically fulfill two objectives: diff --git a/docs/content/developer/compatibility.md b/docs/content/developer/compatibility.md index 84fc57e814..b642b8058e 100644 --- a/docs/content/developer/compatibility.md +++ b/docs/content/developer/compatibility.md @@ -2,11 +2,14 @@ Compatibility table between DHIS2 Android SDK library, DHIS2 core and Android SDK API. -| SDK | DHIS2 core | Android SDK | -|-|-|-| -| 1.0.X | 2.29 -> 2.33 | 19 - 28 | -| 1.1.X | 2.29 -> 2.34 | 19 - 28 | -| 1.2.X | 2.29 -> 2.34 | 19 - 28 | -| 1.3.X | 2.29 -> 2.35 | 19 - 29 | -| 1.4.X | 2.29 -> 2.36 | 19 - 29 | -| 1.5.X | 2.29 -> 2.37 | 19 - 29 | +| SDK | DHIS2 core | Android SDK | Rule engine | +|-|-|-|-| +| 1.0.X | 2.29 -> 2.33 | 19 - 28 | - | +| 1.1.X | 2.29 -> 2.34 | 19 - 28 | - | +| 1.2.X | 2.29 -> 2.34 | 19 - 28 | - | +| 1.3.X | 2.29 -> 2.35 | 19 - 29 | 2.0.10 - 2.0.15 | +| 1.4.X | 2.29 -> 2.36 | 19 - 29 | 2.0.17 - 2.0.20 | +| 1.5.X | 2.29 -> 2.37 | 19 - 29 | 2.0.25 - 2.0.27 | +| 1.6.X | 2.30 -> 2.38 | 21 - 31 | 2.0.34 - 2.0.35 | + +Check Rule Engine compatibility table in [Program rule engine section](#android_sdk_program_rule_engine). \ No newline at end of file diff --git a/docs/content/developer/getting-started.md b/docs/content/developer/getting-started.md index 51405e089e..c6298c8916 100644 --- a/docs/content/developer/getting-started.md +++ b/docs/content/developer/getting-started.md @@ -6,7 +6,7 @@ Include dependency in build.gradle. ```gradle dependencies { - implementation "org.hisp.dhis:android-core:1.5.3" + implementation "org.hisp.dhis:android-core:1.6.0" ... } ``` @@ -22,6 +22,8 @@ allprojects { } ``` +Check [compatibility here](#android_sdk_compatibility). + ## D2 initialization { #android_sdk_initialization } diff --git a/docs/content/developer/program-rule-engine.md b/docs/content/developer/program-rule-engine.md index 618ac11cfa..f5d9274e4e 100644 --- a/docs/content/developer/program-rule-engine.md +++ b/docs/content/developer/program-rule-engine.md @@ -2,4 +2,10 @@ The program rule engine is not provided within the SDK. It is implemented in a separate library, so the same code is used by backend and android apps. +> **Important** +> +> The DHIS2 Android SDK and the Program Rule Engine use a common library to parse the DHIS2 expressions, the [DHIS2 Antlr Expression Parser](https://github.com/dhis2/dhis2-antlr-expression-parser). If the application imports both the the SDK and the Rule Engine, it is important that their parser versions match exactly; otherwise it could cause an unexpected behavior in the evaluation. +> +> Check compatibility [here](#android_sdk_compatibility). + More info [dhis2-rule-engine](https://github.com/dhis2/dhis2-rule-engine). diff --git a/docs/content/developer/settings.md b/docs/content/developer/settings.md index 852d7685af..db61629099 100644 --- a/docs/content/developer/settings.md +++ b/docs/content/developer/settings.md @@ -31,6 +31,7 @@ It gives additional information about app settings: - Mobile configuration: gateway number, result sender number. They must be consumed by the application and used to configure the SMS module in the SDK. - Matomo configuration: if you have your own Matomo instance, you can expose this information to the app in order to configure its Matomo client. - AllowScreenCapture: parameter to determine if the application should allow screen capture or not. +- MessageOfTheDay: a message to show to the users. ### Synchronization settings { #android_sdk_synchronization_settings } @@ -54,7 +55,9 @@ d2.settingModule().appearanceSettings() These settings give control over the appearance of the data entry form. - FilterSorting: it defines the filters that must be enabled in the different app menus. -- CompletionSpinner: it turn on/off the completion spinner that shows the progress in the data entry form. +- ProgramConfiguration: it defines two properties for programs. + - CompletionSpinner: show/hide the completion spinner. + - OptionalSearch: it defines if searching is mandatory or not before creating data. These settings refer to visual components so they must be consumed by the app. diff --git a/docs/content/developer/workflow.md b/docs/content/developer/workflow.md index ec60f8e053..d17cbdbca9 100644 --- a/docs/content/developer/workflow.md +++ b/docs/content/developer/workflow.md @@ -229,6 +229,7 @@ Currently, it is possible to specify the next filters: unique object. This filter can be used to download the tracked entity instances found within search scope. (Only for tracked entity instances). +- `byProgramStatus()`. Filters those tracked entity instances that have a enrollment with the given status. The downloader also allows to limit the number of downloaded objects. These limits can also be combined with each other. @@ -242,6 +243,10 @@ These limits can also be combined with each other. be the one obtained by multiplying the limit set by the number of user organisation units. +Other properties: + +- `overwrite()`. By default, the SDK does not overwrite data in the device in a status other than SYNCED. If you want to overwrite the data in the device, no matter the status it has, add this method to the query chain. + The next snippet of code shows an example of the TrackedEntityInstanceDownloader usage. @@ -389,7 +394,42 @@ d2.trackedEntityModule().trackedEntityInstanceFilters() .get(); ``` -[//]: # (Include glass protected download) +### Break the glass + +The "Break the glass" concept is based on the ownership of the pair trackedEntityInstance - enrollment. If the program is **PROTECTED** and the user does not have **DATA CAPTURE** to the organisation unit, it is required to break the glass in order to read and modify the data. The workflow would be: + +1. Search for any tracked entity instances in **SEARCH** scope. It is important to not include the program uid in the query: the server will only return those TEIs that are accessible to the user, so protected TEIs in search scope won't be returned (otherwise, the user would know if the TEIs is enrolled or not without giving any reason). +2. Download the TEI using the downloader and specify the **TEI uid** and the **program uid**. It is important to include both parameters to force the ownership error. +3. Catch the error, if any, and check if it is an OWNERSHIP_ACCESS_DENIED error. +4. If so, request the ownwership using the ownership module (see code snippet below). +5. Try again the query in step 2. + +```java +TrackedEntityInstanceDownloader teiRepository = d2.trackedEntityModule().trackedEntityInstanceDownloader() + .byUid().eq(teiUid) + .byProgramUid(programUid); + +try { + teiRepository.blockingDownload(); +} catch (RuntimeException e) { + if (e.getCause() instanceof D2Error && + ((D2Error) e.getCause()).errorCode() == D2ErrorCode.OWNERSHIP_ACCESS_DENIED) { + // Show a dialog to the user and capture the reason to break the glass + String reason = "Reason to break the glass"; + + // Break the glass + d2.trackedEntityModule().ownershipManager() + .blockingBreakGlass(teiUid, programUid, reason); + + // Download again + teiRepository.blockingDownload(); + } else { + // Deal with other exceptions + } +} +``` + +It is recommended to upload the data immediately after if has been edited because the ownership expires in two hours (it could depend on DHIS2 versions). If the ownership has expired when the user tries to upload the data, the SDK will automatically perform a "break-the-glass" query in the background using the original reason and add the prefix "Android App sync:". In this way, an administrator could easily identify that this operation is not a real break the glass, but just an auxiliary query to perform the synchronization. ### Tracker data write diff --git a/docs/dhis2_android_sdk_developer_guide_INDEX.md b/docs/dhis2_android_sdk_developer_guide_INDEX.md index d60f9e7405..87b29c4a06 100644 --- a/docs/dhis2_android_sdk_developer_guide_INDEX.md +++ b/docs/dhis2_android_sdk_developer_guide_INDEX.md @@ -3,11 +3,11 @@ title: 'DHIS 2 Android SDK Developer Guide' author: 'DHIS 2' date: year: 2022 -month: February +month: April keywords: [DHIS2, Android] commit: version: master -applicable_txt: 'Applicable to version 1.5.3' +applicable_txt: 'Applicable to version 1.6.0' --- From 315d5c1f282844aad1fd94ea67cda241fda95506 Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 19 Apr 2022 11:05:35 +0200 Subject: [PATCH 252/253] [ANDROSDK-1535] Multi user / multi server docs --- docs/content/developer/workflow.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/content/developer/workflow.md b/docs/content/developer/workflow.md index d17cbdbca9..1d040eaf38 100644 --- a/docs/content/developer/workflow.md +++ b/docs/content/developer/workflow.md @@ -32,6 +32,16 @@ d2.userModule().accountManager().getAccounts(); // Get/set the maximum number of accounts d2.userModule().accountManager().getMaxAccounts(); d2.userModule().accountManager().setMaxAccounts(); + +// Delete account for current user +d2.userModule().accountManager().deleteCurrentAccount(); +``` + +The accountManager exposes an observable that emits an event when the current account is deleted. It includes the reason why the account was deleted. + +```java +// Emits an event when the current account is deleted +d2.userModule().accountManager().accountDeletionObservable(); ``` After a logout, the SDK keeps track of the last logged user so that it is able to differentiate recurring and new users. It also keeps a hash of the user credentials in order to authenticate the user even when there is no connectivity. Given that said, the login method will: From 634be373440885a2c0bb358d8e59a3f1849fb17c Mon Sep 17 00:00:00 2001 From: Victor Garcia Date: Tue, 19 Apr 2022 11:06:40 +0200 Subject: [PATCH 253/253] [ANDROSDK-1535] Update version to 1.6.0 --- core/build.gradle | 2 +- core/gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index 0ab2b3dc66..69979815f2 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -43,7 +43,7 @@ ext { minSdkVersion : 21, targetSdkVersion : 31, versionCode : 260, - versionName : "1.6.0-SNAPSHOT" + versionName : "1.6.0" ] libraries = [ diff --git a/core/gradle.properties b/core/gradle.properties index 355f62fee7..e5f305dbc4 100644 --- a/core/gradle.properties +++ b/core/gradle.properties @@ -29,7 +29,7 @@ # Properties which are consumed by plugins/gradle-mvn-push.gradle plugin. # They are used for publishing artifact to snapshot repository. -VERSION_NAME=1.6.0-SNAPSHOT +VERSION_NAME=1.6.0 VERSION_CODE=260 GROUP=org.hisp.dhis