package Ġme . ty ler m oser . budget . android . services Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . google . gson . Gson Ċ import Ġme . ty ler m oser . budget . R Ċ import Ġme . ty ler m oser . budget . android . models . Budget Sheet Ċ import Ġme . ty ler m oser . budget . android . models . Name ID Pair Ċ import Ġme . ty ler m oser . budget . android . models . Sheet Entry Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġuses ĠAndroid 's Ġshared Ġpreferences Ġmapping Ġfeature Ġto Ġimplement Ġa Ġcache . ĠPrimitive Ċ Ġ* Ġvariables Ġare Ġstored Ġusing Ġthe Ġshared Ġpreferences Ġmethods Ġof Ġtheir Ġtype , Ġand Ġobjects Ġare Ġstored Ċ Ġ* Ġas ĠStrings Ġin ĠJSON Ġrepresentation . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġprobably Ġnot Ġthe Ġfast est Ġcache , Ġand Ġit Ġis Ġattempting Ġto Ġuse Ġa Ġfeature Ġprimarily Ġintended Ċ Ġ* Ġfor Ġsaving Ġsettings Ġto Ġstore Ġdata , Ġbut Ġit Ġwas Ġthe Ġeasiest Ġcache Ġto Ġget Ġworking Ġduring Ġdevelopment Ċ Ġ* Ġand Ġit Ġhas Ġpro ven Ġfast Ġenough Ġfor Ġall Ġcurrent Ġuse Ġcases Ċ Ġ* Ċ Ġ* Ġ@ author ĠTy ler ĠM oser Ċ Ġ* Ċ Ġ* Ġ@ param Ġcontext ĠUse Ġapplication Ġcontext Ġto Ġhave Ġthis Ġcache Ġ" in - context " Ġfor Ġthe Ġentire Ġapp Ċ Ġ*/ Ċ class ĠAndroid SharedPreferences Json Cache ( context : ĠContext ) Ġ: ĠCache Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġshared Preferences Ġ= ĊĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences ( context . resources . getString ( R . string . shared _ preferences _ key ), ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġprivate Ġval Ġopen OnLoad Key Ġ= Ġcontext . resources . getString ( R . string . open _ on _ load _ key ) ĊĠĠĠ Ġprivate Ġval Ġspreadsheet Key Ġ= Ġcontext . resources . getString ( R . string . spreadsheet _ key ) ĊĠĠĠ Ġprivate Ġval Ġgson Ġ= ĠGson () ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// put Sp readsheet ID (" 1 Jk L 2 9 0 - L pD rr NN R ug - bm A 4 _- k VY kd jb w PG Xx 8 5 _ fr h 4 ") ĊĠĠĠĠĠĠĠ Ġ// clear Cache () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġval Ġempty Pair String Ġ= Ġgson . toJson ( Name ID Pair ("", Ġ"")) ĊĊĠĠĠ Ġoverride Ġfun Ġclear Cache () Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). clear (). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================ ============ ĊĊĠĠĠ Ġoverride Ġfun Ġput Budget Sheet ( sheet ID : ĠString , Ġbudget Sheet : ĠBudget Sheet ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbudget Sheet String Ġ= Ġgson . toJson ( budget Sheet ) ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString ( sheet ID , Ġbudget Sheet String ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Budget Sheet ( sheet ID : ĠString ): ĠBudget Sheet ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( shared Preferences . contains ( sheet ID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbudget Sheet String Ġ= Ġshared Preferences . getString ( sheet ID , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson . fromJson ( budget Sheet String , ĠBudget Sheet :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================ ============ ĊĊĠĠĠ Ġoverride Ġfun Ġput Navigation Drawer Sheet Entries List ( spreadsheet ID : ĠString , Ġsheet Entries : ĠList < Sheet Entry >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsheet Entries String Ġ= Ġgson . toJson ( sheet Entries ) ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString ( spreadsheet ID , Ġsheet Entries String ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Navigation Drawer Sheet Entries List ( spreadsheet ID : ĠString ): ĠMutable List < Sheet Entry >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( shared Preferences . contains ( spreadsheet ID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsheet Entries String Ġ= Ġshared Preferences . getString ( spreadsheet ID , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsheet Entries Array ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġgson . fromJson ( sheet Entries String , ĠArray < Sheet Entry >:: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsheet Entries Array . to Mutable List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================ ============ ĊĊĠĠĠ Ġoverride Ġfun Ġput Sp readsheet ID ( spreadsheet ID : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString ( spreadsheet Key , Ġspreadsheet ID ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Sp readsheet ID (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . getString ( spreadsheet Key , Ġ"") Ġas ĠString ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Sp readsheet ID Valid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Sp readsheet ID () Ġ!= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================ ============ ĊĊĠĠĠ Ġoverride Ġfun Ġclear Open OnLoad () Ġ{ ĊĠĠĠĠĠĠĠ Ġput Open OnLoad ("", Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġput Open OnLoad ( sheet ID : ĠString , Ġsheet Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= ĠName ID Pair ( sheet Name , Ġsheet ID ) ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString ( open OnLoad Key , Ġgson . toJson ( pair )). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Open OnLoad (): ĠName ID Pair Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpair String Ġ= Ġshared Preferences . getString ( open OnLoad Key , Ġ"") ĊĠĠĠĠĠĠĠ Ġif Ġ( pair String Ġ== Ġ"") Ġpair String Ġ= Ġempty Pair String ĊĠĠĠĠĠĠĠ Ġreturn Ġgson . fromJson ( pair String , ĠName ID Pair :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisOpen OnLoad Valid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ!( get Open OnLoad (). sheet Id Ġ== Ġ"" Ġ|| Ġget Open OnLoad (). sheet Name Ġ== Ġ"") ĊĠĠĠ Ġ} Ċ Ċ } Ċ