package Ġedu . cs un . org trac Ċ Ċ import Ġcom . content ful . vault . Sync Config Ċ import Ġcom . content ful . vault . Sync Result Ċ import Ġcom . content ful . vault . Vault Ċ import Ġio . reactivex . Single Ċ Ċ class ĠData Manager ( val Ġvault : ĠVault , Ġval Ġsync Config : ĠSync Config ) Ġ{ ĊĠĠĠ Ġvar Ġweb Templates Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Template . Web >() ĊĠĠĠ Ġvar Ġprofile Templates Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Template . Profile >() ĊĠĠĠ Ġvar Ġlocation Templates Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Template . Location >() ĊĠĠĠ Ġvar Ġarticle Templates Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Template . Article >() ĊĠĠĠ Ġvar Ġcontact Info Templates Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Template . Contact Info >() ĊĠĠĠ Ġvar Ġtext Elements Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Element . Text >() ĊĠĠĠ Ġvar Ġimage Elements Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Element . Image >() ĊĠĠĠ Ġvar Ġyoutube Video Elements Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Element . Y outube >() ĊĠĠĠ Ġvar Ġlink Elements Ġ= ĠHashMap < String , ĠOrg Tr ac . Model . Content . Element . Link >() ĊĠĠĠ Ġvar Ġloading Page : ĠOrg Tr ac . Model . Loading Page ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlanding Page : ĠOrg Tr ac . Model . Landing Page ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġmain Pages : ĠHashMap < String , ĠOrg Tr ac . Model . Main Page > Ġ= ĠHashMap () ĊĊĠĠĠ Ġfun Ġtranslate Data (): ĠSingle < Sync Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . request Sync ( sync Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsync Result Ġ= ĠVault . observe Sync Results (). blocking First () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Web Template :: class . java ). all (). forEach Ġ{ Ġtemp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Template . Web . build ( temp )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Templates [ temp . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Profile Template :: class . java ). all (). forEach Ġ{ Ġtemp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Template . Profile . build ( temp )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Templates [ temp . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Location Template :: class . java ). all (). forEach Ġ{ Ġtemp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Template . Location . build ( temp )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Templates [ temp . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Article Template :: class . java ). all (). forEach Ġ{ Ġtemp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Template . Article . build ( temp )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Templates [ temp . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Contact Info Template :: class . java ). all (). forEach Ġ{ Ġtemp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Template . Contact Info . build ( temp )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Info Templates [ temp . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Text Element :: class . java ). all (). forEach Ġ{ Ġele Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Element . Text . build ( ele )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Elements [ ele . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Image Element :: class . java ). all (). forEach Ġ{ Ġele Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Element . Image . build ( ele )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Elements [ ele . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Y outube Element :: class . java ). all (). forEach Ġ{ Ġele Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Element . Y outube . build ( ele )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyoutube Video Elements [ ele . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Link Element :: class . java ). all (). forEach Ġ{ Ġele Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Content . Element . Link . build ( ele )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Elements [ ele . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Page Ġ= ĠOrg Tr ac . Model . Loading Page . build ( vault . fetch ( Content ful . Model . Loading Page :: class . java ). first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanding Page Ġ= ĠOrg Tr ac . Model . Landing Page . build ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Landing Page :: class . java ). first (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Info Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyoutube Video Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Elements ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvault . fetch ( Content ful . Model . Main Page :: class . java ). all (). forEach Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrg Tr ac . Model . Main Page . build ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Info Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyoutube Video Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Elements ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Pages [ page . slug . or Empty ()] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync Result ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }