package Ġcom . del ac rix m organ . android . data . controller Ċ Ċ import Ġcom . del ac rix m organ . android . data . model . User Ċ Ċ /** Ċ Ġ* ĠUser Data Controller Ċ Ġ* Ġl ava - android Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠDel ac rix ĠM organ Ġon Ġ 2 0 / 0 6 / 2 0 1 9 . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 Ġlicensed Ġunder Ġa ĠCreative ĠCommons ĠAt tribution - Share Ali ke Ġ 4 . 0 ĠInternational ĠLicense . Ċ Ġ*/ Ċ Ċ object ĠUser Data Controller Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġusers Ġ= ĠlistOf < User >() ĊĊĠĠĠ Ġfun ĠgetUser ById ( id : ĠString ): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . users . first OrNull Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Users (): ĠList < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfiltered Items : ĠList < User > Ġ= Ġthis . users ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfiltered Items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprocess Response ( incoming Items : ĠList < User >) Ġ{ ĊĠĠĠĠĠĠĠ Ġinsert ( incoming Items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert ( incoming Items : ĠList < User >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincoming Ints Ġ= ĠHashSet < String >() ĊĠĠĠĠĠĠĠ Ġincoming Items . forEach Ġ{ Ġincoming Ints . add ( it . id ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexisting Minus Incoming Ints Ġ= Ġthis . users . filter Ġ{ Ġ! incoming Ints . contains ( it . id ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġunique Incoming Items Ġ= Ġarray ListOf < User >() ĊĊĠĠĠĠĠĠĠ Ġincoming Ints . forEach Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincoming Items . find Ġ{ Ġit . id Ġ== Ġid Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunique Incoming Items . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . users Ġ= ĠArrayList ( existing Minus Incoming Ints Ġ+ Ġunique Incoming Items ) ĊĠĠĠ Ġ} Ċ }