import Ġandroid . content . Context č Ċ import Ġjava . io . File č Ċ import Ġjava . util .* čĊč Ċ /** čĊ Ġ* Ġ< pre > čĊ Ġ* Ġ{ Util Ġ- ĠPreferences Ġ- ĠMigration }. čĊ Ġ* Ġ</ pre > čĊ Ġ* Ġ< ca ust ion >% Ġê¸° ì ¡´ ìĿĺ ĠPreferences ĠìĿĺ ĠíĮĮìĿ¼ Ġì¶Ķ ìłģ ìĿ´ Ġìĸ´ë ł ¤ ìĽĮ ìĦľ ĠëĤ ´ë ¶ Ģ ĠíĮ¨ íĤ¤ ì§Ģ ìĹĲìĦľ ĠíĮĮìĿ¼ Ġíĥ Ĳ ìĥī ĠíĽĦ Ġmigrate .</ ca ution > čĊ Ġ* čĊ Ġ* čĊ Ġ* Ġ@ author Ġsh woo čĊ Ġ* Ġ@ since Ġ 2 0 2 0 . 1 1 . 1 0 čĊ Ġ* čĊ Ġ* čĊ Ġ* Ġ@ history Ġ 2 0 2 0 . 1 1 . 1 0 Ġ:: Ġsh woo Ġ:: Ġseper ate Ġmodule Ġclass . čĊ Ġ*/ č Ċ class ĠPref Utils Ġ{ čĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠPref Utils :: class . simple Name čĊčĊĠĠĠĠĠĠĠ Ġ/** Ġagreement Ġstates Ġof ĠPush ĠNotification Ġ*/ čĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ PUSH _ AG REE MENT _ STATE Ġ= Ġ" push Agreement State " čĊĠĠĠĠĠĠĠ Ġ/** Ġname Ġof ĠPreference Ġ:: ĠGoogle ĠCloud Ġmessage ( GCM ) Ġ*/ čĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP REF _ NAME _ GCM Ġ= Ġ" pref _ notification " čĊĠĠĠ Ġ} čĊčĊ čĊčĊĠĠĠ Ġprivate Ġvar Ġctx : ĠContext ? Ġ= Ġnull čĊĠĠĠ Ġfun Ġinit ( ctx : ĠContext ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . ctx Ġ= Ġctx čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ< pre > čĊĠĠĠĠ Ġ* Ġ[ Preference ] Ġmigrate Ġold Ġpreference Ġto Ġnew Ġpreference . čĊĠĠĠĠ Ġ* Ġ</ pre > čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġmigrate Old Pref () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġctx !!. cacheDir čĊĠĠĠĠĠĠĠ Ġval Ġis Directory Ġ= Ġf Ġ!= Ġnull Ġ&& Ġf . isDirectory čĊĠĠĠĠĠĠĠ Ġif Ġ( isDirectory ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġchange Ġto Ġparent . Ġ(/ data / user / 0 / com . inter park . tour . mobile . main . dev /) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Parent Ġ= ĠFile ( f !!. parent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Pref List Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Shared Pref Files ( ctx , Ġf Parent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! f Pref List . isEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescending Ġ= ĠPref Util . File Sort () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . sort ( f Pref List , Ġdescending ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ:: Ġ 2 0 1 9 . 1 1 . 1 1 Ġsh woo Ġ:: Ġplease Ġcheck Ġthis Ġlogic Ġcorrect Ġ??? čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Pref Ġ= Ġf Pref List [ 0 ] čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecent Pref Name Ġ= Ġf Pref . name . replace (". xml ", Ġ"") čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġìµľ ì¢ ħ ĠíĮĮìĿ¼ ìĿ´ ĠìĹĨ ìľ¼ ë©´ , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recent Pref Name Ġ!= ĠP REF _ NAME _ GCM ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert To New Shared Pref File ( ctx , Ġf Pref ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ< pre > čĊĠĠĠĠ Ġ* Ġ[ Sh read Preference ] Ġ:: Ġget ĠPreference Ġfiles Ġcontain Ġ' push Agreement State ' Ġkey . čĊĠĠĠĠ Ġ* Ġ</ pre > čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġctx ĠĠĠĠ Ġcurrent Ġcontext . čĊĠĠĠĠ Ġ* Ġ@ param Ġf Parent Ġparent Ġdirectory . čĊĠĠĠĠ Ġ* Ġ@ return Ġpreferences Ġlist . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġget Shared Pref Files ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx : ĠContext ?, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Parent : ĠFile čĊĠĠĠ Ġ): ĠArrayList < File > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġf Pref List Ġ= ĠArrayList < File >() čĊĠĠĠĠĠĠĠ Ġfor Ġ( f Directory Ġin Ġf Parent . list Files ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" shared _ prefs ". equals ( f Directory . name , Ġignore Case Ġ= Ġtrue )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġf Directory Ġ= Ġ/ data / user / 0 / com . inter park . tour . mobile . main . dev / shared _ prefs čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( f Temp Ġin Ġf Directory . list Files ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname Ġ= Ġf Temp . name čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname . replace (". xml ", Ġ"") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx !!. get SharedPreferences ( name , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pref . contains ( KEY _ PUSH _ AG REE MENT _ STATE )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Pref List . add ( f Temp ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġf Pref List čĊĠĠĠ Ġ} čĊčĊ čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġ< pre > čĊĠĠĠĠ Ġ* Ġ[ Migration ] Ġnew Ġshared Ġpreferences . čĊĠĠĠĠ Ġ* Ġ</ pre > čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġctx čĊĠĠĠĠ Ġ* Ġ@ param Ġf Pref Ġprevious Ġversion Ġfile . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġinsert To New Shared Pref File ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx : ĠContext ?, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Pref : ĠFile čĊĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġf New Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( f Pref . parent Ġ+ ĠFile . separator Ġ+ ĠP REF _ NAME _ GCM Ġ+ Ġ". xml ") čĊĠĠĠĠĠĠĠ Ġval Ġis Success Ġ= Ġf Pref . rename To ( f New ) čĊĠĠĠĠĠĠĠ Ġif Ġ( is Success ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . w ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" is ĠRename ĠSuccess Ġ[" Ġ+ Ġf Pref . path Ġ+ Ġ"] Ġ-> Ġ[" Ġ+ Ġf New . path Ġ+ Ġ" ]" čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ////////////////////////////////// //////////////// // čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlogging . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 0 1 9 . 1 1 . 1 1 Ġsh woo Ġ:: Ġlog gin Ġin Ġdebug . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġctx !!. get SharedPreferences ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP REF _ NAME _ GCM , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext . MODE _ PRIVATE čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap : ĠMap < *, Ġ*> Ġ= Ġpref . all čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( map . size ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġmap . keys ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ("\ n ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" [" Ġ+ Ġkey Ġ+ Ġ"] Ġ= Ġ[" Ġ+ Ġmap [ key ] Ġ+ Ġ"] ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . w ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP REF _ NAME _ GCM , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . toString () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ////////////////////////////////// //////////////// // čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }