package Ġcom . soft vision . data . repository Ċ Ċ import Ġcom . soft vision . data . common . Connectivity Ċ import Ġcom . soft vision . data . database . dao . Movie Gen res DAO Ċ import Ġcom . soft vision . data . database . model . Base Item Entity Ċ import Ġcom . soft vision . data . database . model . Movie Genre Entity Ċ import Ġcom . soft vision . data . map pers . Item Domain Mapper Ċ import Ġcom . soft vision . data . network . api . Api Endpoints Ċ import Ġcom . soft vision . data . network . base . getData Ċ import Ġcom . soft vision . domain . model . Base Item Details Ċ import Ġcom . soft vision . domain . repository . Gen res Repository Ċ import Ġio . reactivex . Single Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMovie Gen res Repository Impl Ġ@ Inject Ġconstructor ( private Ġval Ġgen res DAO : ĠMovie Gen res DAO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġresources Api : ĠApi Endpoints , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnectivity : ĠConnect ivity Ċ ): ĠBase Repository < Base Item Details , ĠItem Domain Mapper < Base Item Details >>( connectivity ), ĠGen res Repository < Base Item Details > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetData (): ĠSingle < List < Base Item Details >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġapi DataProvider Val Ġ= Ġresources Api . fetch Movie Gen res () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfetch Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi DataProvider Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi DataProvider Val ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache Action Ġ= Ġ{ Ġ Ġentities Ġ-> Ġinsert Items ( entities ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch From Cache Action Ġ= Ġ{ Ġload All Items () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb DataProvider Ġ= Ġ{ Ġload All Items (). map Ġ{ Ġit Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert Items ( items : ĠList < Base Item Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( items Ġas ? ĠList < Movie Genre Entity >) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen res DAO . insert Items ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload All Items (): ĠSingle < List < Base Item Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgen res DAO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load All Items () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġ} ĊĠĠĠ Ġ} Ċ } Ċ