/* Ċ Ġ* ĠCopyright Ġ 2 0 1 5 - 2 0 1 9 ĠThe Ġtw it lat te Ġauthors Ċ Ġ* Ċ Ġ* Ġ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 . mo ko 2 5 6 . tw it lat te . cache Map Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . collection . Array Set Ċ import Ġcom . github . mo ko 2 5 6 . lat te . client . base . entity . AccessToken Ċ import Ġcom . github . mo ko 2 5 6 . lat te . client . base . entity . Status Ċ import Ġcom . github . mo ko 2 5 6 . lat te . client . base . entity . Status Object Ċ import Ġcom . github . mo ko 2 5 6 . lat te . client . base . entity . getId Ċ import Ġcom . github . mo ko 2 5 6 . tw it lat te . LIMIT _ OF _ SIZE _ OF _ OBJECT _ CACHE Ċ import Ġcom . github . mo ko 2 5 6 . tw it lat te . collections . L ru Cache Ċ import Ġcom . github . mo ko 2 5 6 . tw it lat te . database . Cached Statuses SQLite Open Helper Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġm oko 2 5 6 Ġon Ġ 2 0 1 6 / 1 2 / 2 2 . Ċ Ġ* Ċ Ġ* Ġ@ author Ġm oko 2 5 6 Ċ Ġ*/ Ċ Ċ class ĠStatus Cache Map ( base : ĠStatus Cache Map ?, Ġcontext : ĠContext , ĠaccessToken : ĠAccess Token ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcache : ĠL ru Cache < Long , ĠStatus Object > Ġ= ĊĠĠĠĠĠĠĠ Ġbase ?. cache Ġ?: ĠL ru Cache ( LIMIT _ OF _ SIZE _ OF _ OBJECT _ CACHE ) ĊĊĠĠĠ Ġprivate Ġval Ġdisk Cache Ġ= ĠCached Statuses SQLite Open Helper ( context , ĠaccessToken ) ĊĊĠĠĠ Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġdisk Cache . close () ĊĠĠĠĠĠĠĠ Ġcache . clear If NotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( id : ĠLong ): ĠStatus Object ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmemory Cache Ġ= Ġcache . get ( id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmemory Cache Ġ?: Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstorage Cache Ġ= Ġdisk Cache . get Cached Status ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( storage Cache Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache . put ( storage Cache . getId (), Ġstorage Cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Cache ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( c : ĠStatus , Ġincrement Count : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcache . put ( c . id , Ġc ) ĊĠĠĠĠĠĠĠ Ġdisk Cache . add Cached Status ( c , Ġincrement Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd All ( ĊĠĠĠĠĠĠĠ Ġc : ĠCollection < Status Object >, ĊĠĠĠĠĠĠĠ Ġincrement Count : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġvar arg Ġexclude Increment Ids : ĠLong ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġc . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache . put ( it . getId (), Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdisk Cache . add Cached Statuses ( c , Ġincrement Count , Ġ* exclude Increment Ids ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( ids : ĠList < Long >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArray Set < Long >( ids . size Ġ* Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( id Ġin Ġids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġ- 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuse Ġ= Ġdisk Cache . get Ids InUse ( list ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( use ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdisk Cache . delete Cached Statuses ( list ) ĊĠĠĠ Ġ} Ċ Ċ }