/* ĊĠĠĠ ĠCopyright Ġ 2 0 1 9 ĠG aur av ĠK umar ĊĊĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ package Ġcom . github . sms . data . source . repository . local Ċ Ċ import Ġcom . github . sms . data . models . local . Sms Header Ċ import Ġcom . github . sms . data . models . local . Sms Holder Ċ import Ġcom . github . sms . data . source . db . Sms Dao Ċ import Ġcom . github . sms . data . source . repository . App DataSource Ċ import Ġcom . github . sms . utils . time . Time Group Ċ import Ġcom . github . sms . utils . time . Time Util Ċ Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ import Ġio . reactivex . Flow able Ċ Ċ /** Ċ Ġ* ĠConcrete Ġimplementation Ġof Ġa Ġdata Ġsource Ġlocal Ċ Ġ*/ Ċ @ Singleton Ċ class ĠApp Local DataSource Ġ@ Inject Ċ constructor ( private Ġval Ġsms Dao : ĠS ms Dao ) Ġ: ĠApp DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Sms ItemList ( force Refresh : ĠBoolean ): ĠFlow able < List < Sms Holder >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsms Dao . getS ms (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew List Ġ= Ġmutable ListOf < Sms Holder >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Map Ġ= ĠLinkedHashMap < Time Group , ĠMutable List < Sms Holder >>() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// group Ġmap Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . ZERO ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . HOUR ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . TWO _ HOUR ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . TH REE _ HOUR ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . SIX _ HOUR ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . TW EL VE _ HOUR ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . ONE _ DAY ] Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ Time Group . OTHER S ] Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// go Ġthrough Ġthe Ġlist Ġof Ġsms Ġand Ġgroup Ġthem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Group Ġ= ĠTime Util . getTime Group From Time ( item . time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Map [ time Group ]?. add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// create Ġa Ġsing e Ġlist Ġfrom Ġthe Ġgroup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġgroup Map . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! group Map [ key ]. isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// create Ġthe Ġheader ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( Sms Header (" h _" Ġ+ Ġkey . ordinal , ĠTime Util . getText Id From Time Group ( key ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// add Ġthe Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . addAll ( group Map [ key ] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġnew List ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : ĠUpdate Ġthis Ġto Ġprovide Ġpage d Ġsms Ġlist ĊĠĠĠ Ġoverride Ġfun Ġget Paged Sms ItemList ( page : ĠInt , ĠpageSize : ĠInt ): ĠFlow able < List < Sms Holder >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFlow able . just ( listOf ()) ĊĠĠĠ Ġ} Ċ }