/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠG lass ĠSoftware ĠLtd Ċ Ġ* Ċ Ġ* Ġ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 Ġuk . co . glass _ software . android . shared _ preferences . m umbo Ċ Ċ import Ġandroid . content . Context Ċ import Ġuk . co . glass _ software . android . boilerplate . core . utils . log . Logger Ċ import Ġuk . co . glass _ software . android . shared _ preferences . m umbo . encryption . Encryption Manager Ċ import Ġuk . co . glass _ software . android . shared _ preferences . m umbo . store . Store Mode Ċ import Ġuk . co . glass _ software . android . shared _ preferences . m umbo . store . Store Mode .* Ċ import Ġuk . co . glass _ software . android . shared _ preferences . persistence . base . KeyValue Store Ċ import Ġuk . co . glass _ software . android . shared _ preferences . persistence . base . Unique Key Provider Ċ import Ġuk . co . glass _ software . android . shared _ preferences . persistence . base . Value Class Provider Ċ import Ġuk . co . glass _ software . android . shared _ preferences . persistence . preferences . Store Entry Ċ Ċ class ĠM umbo Entry Factory Ġinternal Ġconstructor ( logger : ĠLogger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplain Text Store : ĠKey Value Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencrypted Store : ĠKey Value Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen ient Store : ĠKey Value Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġforget ful Store : ĠKey Value Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencryption Manager : ĠEncryption Manager ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Encryption Ġsupported : Ġ${ if Ġ( encryption Manager . is Encryption Supported ) Ġ" TRUE " Ġelse Ġ" FALSE "} " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< C > Ġopen ( key : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode : ĠStore Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Class : ĠClass < C >): ĠStore Entry < C > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP LA IN _ TEXT Ġ-> Ġplain Text Store ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEN CRYPT ED Ġ-> Ġencrypted Store ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLEN IENT Ġ-> Ġlen ient Store ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFOR GET FUL Ġ-> Ġforget ful Store ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠUnique Key Provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġunique Key Ġ= Ġkey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠValue Class Provider < C > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġvalue Class Ġ= Ġvalue Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< C > Ġopen ( store : ĠKey Value Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Provider : ĠUnique Key Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Class Provider : ĠValue Class Provider < C >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStore Entry ( store , Ġkey Provider , Ġvalue Class Provider ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbuilder ( context : ĠContext ) Ġ= ĠM umbo Entry Factory Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ