package Ġorg . step ic . d roid . persistence . content Ċ Ċ import Ġio . reactivex . Single Ċ import Ġorg . step ic . d roid . persistence . content . processors . Step Content Processor Ċ import Ġorg . step ic . d roid . persistence . di . Persistence Scope Ċ import Ġorg . step ic . d roid . persistence . files . External Storage Manager Ċ import Ġorg . step ic . d roid . persistence . model . Download Configuration Ċ import Ġorg . step ic . d roid . persistence . model . Persistent Item Ċ import Ġorg . step ic . d roid . persistence . model . Step Persistent Wrapper Ċ import Ġorg . step ic . d roid . persistence . storage . Persistent Item Observer Ċ import Ġorg . step ic . d roid . persistence . storage . dao . Persistent Item Dao Ċ import Ġorg . step ic . d roid . persistence . storage . structure . DB Structure Persistent Item Ċ import Ġorg . step ik . android . model . Step Ċ import Ġjavax . inject . Inject Ċ Ċ @ Persistence Scope Ċ class ĠStep Content Resolver Impl Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġprocessors : ĠSet < @ Jvm Suppress W ild cards ĠStep Content Processor >, ĊĊĠĠĠ Ġprivate Ġval Ġpersistent Item Dao : ĠPersistent Item Dao , ĊĠĠĠ Ġprivate Ġval Ġpersistent Item Observer : ĠPersistent Item Observer , ĊĠĠĠ Ġprivate Ġval Ġexternal Storage Manager : ĠExternal Storage Manager Ċ ): ĠStep Content Resolver Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Download able Content From Step ( step : ĠStep , Ġconfiguration : ĠDownload Configuration ): ĠSet < String > Ġ= ĊĠĠĠĠĠĠĠ Ġprocessors . map Ġ{ Ġit . extract Download able Content ( step , Ġconfiguration ) Ġ}. reduce Ġ{ Ġa , Ġb Ġ-> Ġa Ġunion Ġb Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Persistent Content ( step : ĠStep ): ĠSingle < Step Persistent Wrapper > Ġ= ĊĠĠĠĠĠĠĠ Ġpersistent Item Dao ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getItems ( map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB Structure Persistent Item . Columns . STEP Ġto Ġstep . id . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB Structure Persistent Item . Columns . STATUS Ġto ĠPersistent Item . Status . COMPLETED . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink Map Ġ= Ġresolve Links Map ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessors . fold ( Step Persistent Wrapper ( step )) Ġ{ Ġwrapper , Ġprocessor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . inject Persistent Content ( wrapper , Ġlink Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Links Map ( items : ĠList < Persistent Item >): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠString >() ĊĊĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Path Ġ= Ġitem . task . original Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Path Ġ= Ġexternal Storage Manager . resolve Path For Persistent Item ( item ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( local Path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpersistent Item Observer . update ( item . copy ( status Ġ= ĠPersistent Item . Status . CANCEL LED )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ original Path ] Ġ= Ġlocal Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} Ċ }