/* Ċ Ġ* Ċ Ġ* Ġ ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 2 0 ĠP ier re ĠTh omain Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġ Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġ Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġ Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġ Ġto Ġyou Ġ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 Ġdev . pth omain . android . de jav u . persistence . memory Ċ Ċ import Ġandroidx . collection . L ru Cache Ċ import Ġdev . pth omain . android . de jav u . di . Date Factory Ċ import Ġdev . pth omain . android . de jav u . persistence . Pers isted . Serial ised Ċ import Ġdev . pth omain . android . de jav u . persistence . base . store . KeyValue Store Ċ Ċ class ĠMemory Store Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġl ru Cache : ĠL ru Cache < String , ĠSerial ised >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdate Factory : ĠDate Factory Ċ ) Ġ: ĠKey Value Store < String , ĠString , ĠSerial ised > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġexisting Ġentry Ġkey Ġmatching Ġthe Ġgiven Ġpartial Ġkey ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpartial Key Ġthe Ġpartial Ġkey Ġused Ġto Ġretrieve Ġthe Ġfull Ġkey ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġmatching Ġfull Ġkey Ġif Ġpresent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġfind Partial Key ( partial Key : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl ru Cache . snapshot () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . key . contains ( partial Key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . key ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġentry Ġfor Ġthe Ġgiven Ġkey , Ġif Ġpresent ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġthe Ġentry 's Ġkey ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġmatching Ġentry Ġif Ġpresent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget ( key : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl ru Cache . get ( key ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS aves Ġan Ġentry Ġwith Ġa Ġgiven Ġkey ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġthe Ġkey Ġto Ġsave Ġthe Ġentry Ġunder ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġvalue Ġto Ġassociate Ġwith Ġthe Ġkey ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġsave ( key : ĠString , Ġvalue : ĠSerial ised ) Ġ{ ĊĠĠĠĠĠĠĠ Ġl ru Cache . put ( key , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġmap Ġof Ġthe Ġexisting Ġentries ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġvalues () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl ru Cache . snapshot () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġthe Ġentry Ġmatching Ġthe Ġgiven Ġkey ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġthe Ġentry 's Ġkey ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdelete ( key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġl ru Cache . remove ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRename s Ġan Ġentry ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġold Key Ġthe Ġold Ġentry Ġkey ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Key Ġ Ġthe Ġnew Ġentry Ġkey ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġrename ( old Key : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Entry Ġ= Ġl ru Cache . get ( old Key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( old Entry Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete ( old Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl ru Cache . put ( new Key , Ġold Entry . copy ( expiry Date Ġ= Ġdate Factory ( 0 L ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFactory Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġl ru Cache Factory : Ġ( Int ) Ġ-> ĠL ru Cache < String , ĠSerial ised >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdate Factory : ĠDate Factory ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( max Entries : ĠInt Ġ= Ġ 2 0 ) Ġ= ĠMemory Store ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl ru Cache Factory ( max Entries ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Factory ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }