package Ġbe . hog ent . fa ith . service . use cases . detail sc ont ainer Ċ Ċ import Ġbe . hog ent . fa ith . domain . models . Details Container Ċ import Ġbe . hog ent . fa ith . domain . models . detail . Detail Ċ import Ġbe . hog ent . fa ith . service . encryption . ID et ail Container Encryption Service Ċ import Ġbe . hog ent . fa ith . service . repositories . ID et ail Container Repository Ċ import Ġbe . hog ent . fa ith . service . repositories . I File Storage Repository Ċ import Ġbe . hog ent . fa ith . service . use cases . base . Comp letable UseCase Ċ import Ġio . reactivex . rx java 3 . core . Scheduler Ċ import Ġio . reactivex . rx java 3 . core . Comp letable Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠLoad Detail File UseCase < Container Ġ: ĠDetails Container >( ĊĠĠĠ Ġprivate Ġval Ġstorage Repo : ĠI File Storage Repository , ĊĠĠĠ Ġprivate Ġval Ġcontainer Repository : ĠI Detail Container Repository < Container >, ĊĠĠĠ Ġprivate Ġval Ġdetail Container Encryption Service : ĠI Detail Container Encryption Service < Container >, ĊĠĠĠ Ġobserver : ĠScheduler Ċ ) Ġ: ĠComp letable UseCase < Load Detail File UseCase . Params >( observer ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbuild UseCase Observable ( params : ĠParams ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( storage Repo . set File If Ready ( params . detail , Ġparams . container )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠComp letable . complete () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstorage Repo . download File ( params . detail , Ġparams . container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( subscriber ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĠTim ber . e (" Could Ġnot Ġdownload Ġfile ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Then ( container Repository . get Encrypted Container ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĠTim ber . e (" Could Ġnot Ġget Ġcontainer ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Comp letable Ġ{ Ġencrypted Container Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Container Encryption Service . decrypt File ( params . detail , Ġencrypted Container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( subscriber ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĠTim ber . e (" Could Ġnot Ġdecrypt Ġfile ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠParams ( ĊĠĠĠĠĠĠĠ Ġval Ġdetail : ĠDetail , ĊĠĠĠĠĠĠĠ Ġval Ġcontainer : ĠDetails Container ĊĠĠĠ Ġ) Ċ } Ċ