package Ġcom . scal lop . data . repository Ċ Ċ import Ġcom . scal lop . domain . entities . Country Entity Ċ import Ġcom . scal lop . domain . entities . World wide Entity Ċ import Ġcom . scal lop . domain . repositories . Cov id Repository Ċ import Ġio . reactivex . Observable ĊĊ Ċ class ĠC ov id Repository Impl ( ĊĠĠĠ Ġprivate Ġval Ġremote : ĠC ov id Remote Impl , ĊĠĠĠ Ġprivate Ġval Ġcache : ĠC ov id Cache Impl Ċ ) Ġ: ĠC ov id Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget World wide Info (): ĠObservable < World wide Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremote Results Ġ= Ġremote . get World wide Info () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcache . get World wide Info (). merge With ( remote Results . do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache . set World wide Info ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Info By Country (): ĠObservable < List < Country Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremote Results Ġ= Ġremote . getInfo By Country () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcache . getInfo By Country (). merge With ( remote Results . do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache . set Info By Country ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }