package Ġ{{ packageName }}. data . local . user Ċ Ċ import Ġandroid . content . Context Ċ import Ġ{{ packageName }}. data . local . Local Database Ċ import Ġ{{ packageName }}. data . model . User Ċ import Ġio . reactivex . Single Ċ Ċ class ĠUser Local DataSource ( context : ĠContext ) Ġ: ĠUser DataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm User Dao : ĠUser Dao Ġ= ĠLocal Database . getInstance ( context )?. user Dao () !! ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠUser Local DataSource ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠUser Local DataSource ? Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( User Local DataSource :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠUser Local DataSource ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert All ( user List : ĠList < User >): ĠSingle < Array < Long >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ Ġm User Dao . insert All ( user List ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert User ( user : ĠUser ): ĠSingle < Long > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ Ġm User Dao . insert User ( user ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser ById ( userId : ĠString ): ĠSingle < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ Ġm User Dao . getUser ById ( userId ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Users (): ĠSingle < List < User >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ Ġm User Dao . getAll Users () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Data ( user List : ĠList < User >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm User Dao . update Data ( user List ) ĊĠĠĠ Ġ} Ċ Ċ }