/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 0 4 - 2 0 2 1 , ĠUniversity Ġof ĠOs lo Ċ Ġ* Ġ Ġ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 ĠH ISP Ġ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 . h isp . dh is . android . core . tracked entity . internal Ċ Ċ import Ġdagger . Re usable Ċ import Ġjavax . inject . Inject Ċ import Ġorg . h isp . dh is . android . core . arch . db . query builders . internal . Where Clause Builder Ċ import Ġorg . h isp . dh is . android . core . arch . db . stores . internal . Ident ifiable Object Store Ċ import Ġorg . h isp . dh is . android . core . common . Data Columns Ċ import Ġorg . h isp . dh is . android . core . common . State Ċ import Ġorg . h isp . dh is . android . core . enrollment . Enrollment Ċ import Ġorg . h isp . dh is . android . core . enrollment . Enrollment Internal Accessor Ċ import Ġorg . h isp . dh is . android . core . enrollment . internal . Enrollment Store Ċ import Ġorg . h isp . dh is . android . core . event . Event Ċ import Ġorg . h isp . dh is . android . core . event . internal . Event Store Ċ import Ġorg . h isp . dh is . android . core . note . Note Ċ import Ġorg . h isp . dh is . android . core . note . internal . Note To Post Transformer Ċ import Ġorg . h isp . dh is . android . core . relationship . Relationship Ċ import Ġorg . h isp . dh is . android . core . relationship . Relationship Collection Repository Ċ import Ġorg . h isp . dh is . android . core . relationship . Relationship Helper Ċ import Ġorg . h isp . dh is . android . core . system info . DH IS Version Manager Ċ import Ġorg . h isp . dh is . android . core . tracked entity . Tracked Entity AttributeValue Ċ import Ġorg . h isp . dh is . android . core . tracked entity . Tracked Entity Data Value Ċ import Ġorg . h isp . dh is . android . core . tracked entity . Tracked Entity Instance Ċ import Ġorg . h isp . dh is . android . core . tracked entity . Tracked Entity Instance Internal Accessor Ċ Ċ @ Re usable Ċ @ Suppress (" Too Many Functions ") Ċ internal Ġclass ĠOld Tracker Importer Payload Generator Ġ@ Inject Ġinternal Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġversion Manager : ĠDH IS Version Manager , ĊĠĠĠ Ġprivate Ġval Ġrelationship Repository : ĠRelationship Collection Repository , ĊĠĠĠ Ġprivate Ġval Ġtracked Entity Instance Store : ĠTrack ed Entity Instance Store , ĊĠĠĠ Ġprivate Ġval Ġenrollment Store : ĠEn rollment Store , ĊĠĠĠ Ġprivate Ġval Ġevent Store : ĠEvent Store , ĊĠĠĠ Ġprivate Ġval Ġtracked Entity Data Value Store : ĠTrack ed Entity Data Value Store , ĊĠĠĠ Ġprivate Ġval Ġtracked Entity AttributeValue Store : ĠTrack ed Entity AttributeValue Store , ĊĠĠĠ Ġprivate Ġval Ġnote Store : ĠIdent ifiable Object Store < Note > Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnote Transformer Ġ= ĠNote To Post Transformer ( version Manager ) ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠExtra Data ( ĊĠĠĠĠĠĠĠ Ġval Ġdata Value Map : ĠMap < String , ĠList < Tracked Entity Data Value >>, ĊĠĠĠĠĠĠĠ Ġval Ġevent Map : ĠMap < String , ĠList < Event >>, ĊĠĠĠĠĠĠĠ Ġval Ġenrollment Map : ĠMap < String , ĠList < Enrollment >>, ĊĠĠĠĠĠĠĠ Ġval Ġattribute Value Map : ĠMap < String , ĠList < Tracked Entity AttributeValue >>, ĊĠĠĠĠĠĠĠ Ġval Ġnotes : ĠList < Note >, ĊĠĠĠĠĠĠĠ Ġval Ġrelationships : ĠList < Relationship > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget Tracked Entity Instance Payload ( ĊĠĠĠĠĠĠĠ Ġtracked Entity Instances : ĠList < Tracked Entity Instance > ĊĠĠĠ Ġ): ĠOld Tracker Importer Payload Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextra Data Ġ= Ġget Extra Data () ĊĊĠĠĠĠĠĠĠ Ġval Ġre created Te is Ġ= Ġtracked Entity Instances . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Tracked Entity Instance ( it , Ġextra Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= ĠOld Tracker Importer Payload ( tracked Entity Instances Ġ= Ġre created Te is ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġadd Relationships ( payload , Ġextra Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Event Payload ( ĊĠĠĠĠĠĠĠ Ġevents : ĠList < Event > ĊĠĠĠ Ġ): ĠOld Tracker Importer Payload Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextra Data Ġ= Ġget Extra Data () ĊĊĠĠĠĠĠĠĠ Ġval Ġre created Events Ġ= Ġevents . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Event ( it , Ġextra Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= ĠOld Tracker Importer Payload ( events Ġ= Ġre created Events ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġadd Relationships ( payload , Ġextra Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Relationships ( ĊĠĠĠĠĠĠĠ Ġpayload : ĠOld Tracker Importer Payload , ĊĠĠĠĠĠĠĠ Ġextra Data : ĠExtra Data ĊĠĠĠ Ġ): ĠOld Tracker Importer Payload Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpayload With Relationships Ġ= Ġpayload . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelationships Ġ= Ġextract Relationships ( payload , Ġextra Data ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġadd Related Items ( payload With Relationships , Ġextra Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Related Items ( ĊĠĠĠĠĠĠĠ Ġpayload : ĠOld Tracker Importer Payload , ĊĠĠĠĠĠĠĠ Ġextra Data : ĠExtra Data ĊĠĠĠ Ġ): ĠOld Tracker Importer Payload Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġacc Payload Ġ= Ġpayload ĊĠĠĠĠĠĠĠ Ġvar Ġrelated Items Ġ= Ġget Missing Items ( payload , Ġextra Data ) ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( related Items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc Payload Ġ= Ġacc Payload . concat ( related Items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelated Items Ġ= Ġget Missing Items ( acc Payload , Ġextra Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġacc Payload ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Nested Block Depth ") ĊĠĠĠ Ġprivate Ġfun Ġget Missing Items ( ĊĠĠĠĠĠĠĠ Ġpayload : ĠOld Tracker Importer Payload , ĊĠĠĠĠĠĠĠ Ġextra Data : ĠExtra Data ĊĠĠĠ Ġ): ĠOld Tracker Importer Payload Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrelated Items Ġ= Ġpayload . relationships . map Ġ{ Ġit . to () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmissing Items Ġ= Ġrelated Items . filter NotNull (). filter Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . has Tracked Entity Instance () Ġ-> Ġis Missing Te i ( item . element Uid (), Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . has Enrollment () Ġ-> Ġis Missing Enrollment ( item . element Uid (), Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . has Event () Ġ-> Ġis Missing Event ( item . element Uid (), Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmissing Te is Ġ= Ġmutable Set Of < String >() ĊĠĠĠĠĠĠĠ Ġval Ġmissing Events Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠĠĠĠĠ Ġmissing Items . forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . has Tracked Entity Instance () Ġ-> Ġmissing Te is . add ( item . element Uid ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . has Enrollment () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenrollment Store . select By Uid ( item . element Uid ()) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmissing Te is . add ( it . tracked Entity Instance () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . has Event () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Store . select By Uid ( item . element Uid ()) ?. let Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . enrollment () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmissing Events . add ( event . uid ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenrollment Store . select By Uid ( event . enrollment () !! )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmissing Te is . add ( it . tracked Entity Instance () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtracked Entity Instances Ġ= Ġtracked Entity Instance Store . select By U ids ( missing Te is . toList ()). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Tracked Entity Instance ( it , Ġextra Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġevent Store . select By U ids ( missing Events . toList ()) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠOld Tracker Importer Payload ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtracked Entity Instances Ġ= Ġtracked Entity Instances , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ= Ġevents ĊĠĠĠĠĠĠĠ Ġ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy ( relationships Ġ= Ġextract Relationships ( this , Ġextra Data )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Missing Te i ( uid : ĠString , Ġpayload : ĠOld Tracker Importer Payload ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Include In Payload Ġ= Ġpayload . tracked Entity Instances . map Ġ{ Ġit . uid () Ġ}. contains ( uid ) ĊĠĠĠĠĠĠĠ Ġval Ġis Pending To Sync : ĠBoolean Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Te i Ġ= Ġtracked Entity Instance Store . select By Uid ( uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState . upload able States (). contains ( db Te i ?. ag gregated Sync State ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ! is Include In Payload Ġ&& Ġis Pending To Sync ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Missing Enrollment ( uid : ĠString , Ġpayload : ĠOld Tracker Importer Payload ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġen roll ments Ġ= Ġpayload . tracked Entity Instances . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrack ed Entity Instance Internal Accessor . access En roll ments ( it ) Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Include In Payload Ġ= Ġen roll ments . map Ġ{ Ġit . uid () Ġ}. contains ( uid ) ĊĠĠĠĠĠĠĠ Ġval Ġis Pending To Sync : ĠBoolean Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenrollment Ġ= Ġenrollment Store . select By Uid ( uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState . upload able States (). contains ( enrollment ?. ag gregated Sync State ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ! is Include In Payload Ġ&& Ġis Pending To Sync ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Missing Event ( uid : ĠString , Ġpayload : ĠOld Tracker Importer Payload ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġpayload . tracked Entity Instances . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrack ed Entity Instance Internal Accessor . access En roll ments ( it ) Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn rollment Internal Accessor . access Events ( it ) Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ġ+ Ġpayload . events ĊĊĠĠĠĠĠĠĠ Ġval Ġis Included In Payload Ġ= Ġevents . map Ġ{ Ġit . uid () Ġ}. contains ( uid ) ĊĠĠĠĠĠĠĠ Ġval Ġis Pending To Sync : ĠBoolean Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġevent Store . select By Uid ( uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState . upload able States (). contains ( event ?. ag gregated Sync State ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ! is Included In Payload Ġ&& Ġis Pending To Sync ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Extra Data (): ĠExtra Data Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠExtra Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Value Map Ġ= Ġtracked Entity Data Value Store . query By Upload able Events (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Map Ġ= Ġevent Store . query Events Attached To Enrollment To Post (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenrollment Map Ġ= Ġenrollment Store . query En roll ments To Post (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Value Map Ġ= Ġtracked Entity AttributeValue Store . query Tracked Entity AttributeValue To Post (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotes Ġ= Ġnote Store . select Where ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWhere Clause Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append In Key String Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Columns . SYNC _ STATE , ĠState . upload able States In cluding Error (). map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelationships Ġ= Ġrelationship Repository . by Sync State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ` in `( State . upload able States In cluding Error (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Items () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blocking Get () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġextract Relationships ( ĊĠĠĠĠĠĠĠ Ġpayload : ĠOld Tracker Importer Payload , ĊĠĠĠĠĠĠĠ Ġextra Data : ĠExtra Data ĊĠĠĠ Ġ): ĠList < Relationship > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġte i Items Ġ= Ġpayload . tracked Entity Instances . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRelationship Helper . te i Item ( it . uid ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġen roll ments Ġ= Ġpayload . tracked Entity Instances . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrack ed Entity Instance Internal Accessor . access En roll ments ( it ) Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġenrollment Items Ġ= Ġen roll ments . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRelationship Helper . enrollment Item ( it . uid ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġen roll ments . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn rollment Internal Accessor . access Events ( it ) Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ġ+ Ġpayload . events ĊĊĠĠĠĠĠĠĠ Ġval Ġevent Items Ġ= Ġevents . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRelationship Helper . event Item ( it . uid ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġte i Items Ġ+ Ġenrollment Items Ġ+ Ġevent Items ĊĊĠĠĠĠĠĠĠ Ġreturn Ġextra Data . relationships . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . any Ġ{ Ġitem Ġ-> ĠRelationship Helper . are Items Equal ( it . from (), Ġitem ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Tracked Entity Instance ( ĊĠĠĠĠĠĠĠ Ġtracked Entity Instance : ĠTrack ed Entity Instance , ĊĠĠĠĠĠĠĠ Ġextra Data : ĠExtra Data ĊĠĠĠ Ġ): ĠTrack ed Entity Instance Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġen roll ments Re created Ġ= Ġget En roll ments ( extra Data , Ġtracked Entity Instance . uid ()) ĊĠĠĠĠĠĠĠ Ġval Ġattribute Values Ġ= Ġextra Data . attribute Value Map [ tracked Entity Instance . uid ()] ĊĠĠĠĠĠĠĠ Ġreturn ĠTrack ed Entity Instance Internal Accessor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. insert En roll ments ( tracked Entity Instance . to Builder (), Ġen roll ments Re created ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. tracked Entity Attribute Values ( attribute Values Ġ?: Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget En roll ments ( ĊĠĠĠĠĠĠĠ Ġextra Data : ĠExtra Data , ĊĠĠĠĠĠĠĠ Ġtracked Entity Instance Uid : ĠString ĊĠĠĠ Ġ): ĠList < Enrollment > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġextra Data . enrollment Map [ tracked Entity Instance Uid ]?. map Ġ{ Ġenrollment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġextra Data . event Map [ enrollment . uid ()] ?. map Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Event ( event , Ġextra Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn rollment Internal Accessor . insert Events ( enrollment . to Builder (), Ġevents ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. notes ( get Enrollment Notes ( extra Data . notes , Ġenrollment )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Event ( event : ĠEvent , Ġextra Data : ĠExtra Data ): ĠEvent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent Builder Ġ= Ġevent . to Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. tracked Entity Data Values ( extra Data . data Value Map [ event . uid ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. notes ( getEvent Notes ( extra Data . notes , Ġevent )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( version Manager . is 2 _ 3 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Builder . geometry ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġevent Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Event Notes ( notes : ĠList < Note >, Ġevent : ĠEvent ): ĠList < Note > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnotes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . event () Ġ== Ġevent . uid () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġnote Transformer . transform ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Enrollment Notes ( notes : ĠList < Note >, Ġenrollment : ĠEn rollment ): ĠList < Note > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnotes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . enrollment () Ġ== Ġenrollment . uid () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġnote Transformer . transform ( it ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ