package Ġio . github . w ulkan owy . data . repositories . exam Ċ Ċ import Ġcom . github . pw itt chen . react iven etwork . library . rx 2 . Reactive Network Ċ import Ġcom . github . pw itt chen . react iven etwork . library . rx 2 . internet . ob serving . Internet Ob serving Settings Ċ import Ġio . github . w ulkan owy . data . db . entities . Exam Ċ import Ġio . github . w ulkan owy . data . db . entities . Se mester Ċ import Ġio . github . w ulkan owy . utils . f riday Ċ import Ġio . github . w ulkan owy . utils . mon day Ċ import Ġio . github . w ulkan owy . utils . unique Subtract Ċ import Ġio . reactivex . Single Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġjava . net . Unknown Host Exception Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠExam Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġsettings : ĠInternet Ob serving Settings , ĊĠĠĠ Ġprivate Ġval Ġlocal : ĠExam Local , ĊĠĠĠ Ġprivate Ġval Ġremote : ĠExam Remote Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġget Ex ams ( semester : ĠSe mester , ĠstartDate : ĠLocalDate , ĠendDate : ĠLocalDate , Ġforce Refresh : ĠBoolean Ġ= Ġfalse ): ĠSingle < List < Exam >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ ĠstartDate . mon day Ġto ĠendDate . f riday Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġdates Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . get Ex ams ( semester , Ġdates . first , Ġdates . second ). filter Ġ{ Ġ! force Refresh Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch If Empty ( Reactive Network . check Internet Connectivity ( settings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġremote . get Ex ams ( semester , Ġdates . first , Ġdates . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠSingle . error ( Unknown Host Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġnew Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . get Ex ams ( semester , Ġdates . first , Ġdates . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single ( emptyList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġold Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . delete Ex ams ( old . unique Subtract ( new )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . save Ex ams ( new . unique Subtract ( old )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal . get Ex ams ( semester , Ġdates . first , Ġdates . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single ( emptyList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). map Ġ{ Ġlist Ġ-> Ġlist . filter Ġ{ Ġit . date Ġin ĠstartDate .. endDate Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ