package Ġme . sam . test . jet pack . paging . datasource Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . paging . Page Key ed DataSource Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġme . sam . test . jet pack . paging . model . Cat Model Ċ import Ġme . sam . test . jet pack . paging . net . Ret rofit Client Ċ Ċ /** Ċ Ġ* Ġdesc : Ġpaging Ġdata Ġsource Ċ Ġ* Ġdate : Ġ 2 0 2 0 / 0 5 / 1 3 Ġ 0 0 1 3 Ċ Ġ* Ġ@ author : Ġd ongs en Ċ Ġ*/ Ċ class ĠCat DataSource Ġ: ĠPage Key ed DataSource < Int , ĠCat Model >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtag Ġ= Ġ" CAT _ DATA _ SOURCE " ĊĊĠĠĠ Ġprivate Ġfun Ġget Cat List ( page : ĠInt ): ĠObservable < List < Cat Model >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit Client . instance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getC ats List ( page ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Initial ( params : ĠLoad Initial Params < Int >, Ġcallback : ĠLoad Initial Callback < Int , ĠCat Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Cat List ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠObserver < List < Cat Model >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( t : ĠList < Cat Model >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" onNext ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( t , Ġnull , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" onComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" onError Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload After ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠCat Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Cat List ( params . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠObserver < List < Cat Model >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( t : ĠList < Cat Model >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Result ( t , Ġparams . key Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" onComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" onError Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Before ( params : ĠLoad Params < Int >, Ġcallback : ĠLoad Callback < Int , ĠCat Model >) Ġ{ ĊĠĠĠ Ġ} Ċ }