package Ġcom . bitcoin . s lp wallet . persistence Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . room . Type Converters Ċ import Ġcom . bitcoin . s lp wallet . s lp .* Ċ import Ġcom . bitcoin . s lp wallet . tx . U tx o Ċ import Ġcom . bitcoin . s lp wallet . tx . U tx o Dao Ċ import Ġcom . bitcoin . s lp wallet . util . Singleton Holder Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ @ Database ( entities Ġ= Ġ[ S lp Token Balance :: class , ĠU tx o :: class , ĠS lp U tx o :: class , ĠS lp Token Details :: class , ĠS lp Valid Tx :: class ], ĊĠĠĠ Ġversion Ġ= Ġ 5 ) Ċ @ Type Converters ( com . bitcoin . s lp wallet . persistence . Type Converters :: class ) Ċ internal Ġabstract Ġclass ĠWallet Database Impl Ġ: ĠRoom Database (), ĠWallet Database Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġinitialized Ġ= ĠAtomic Boolean ( true ) ĊĠĠĠ Ġabstract Ġoverride Ġfun Ġtoken Balance Dao (): ĠS lp Token Balance Dao ĊĠĠĠ Ġabstract Ġoverride Ġfun Ġut xo Dao (): ĠU tx o Dao ĊĠĠĠ Ġabstract Ġoverride Ġfun Ġs lp U tx o Dao (): ĠS lp U tx o Dao ĊĠĠĠ Ġabstract Ġoverride Ġfun Ġs lp Token Details Dao (): ĠS lp Token Details Dao ĊĠĠĠ Ġabstract Ġoverride Ġfun Ġs lp Valid Tx Dao (): ĠS lp Valid Tx Dao ĊĊĠĠĠ Ġoverride Ġfun Ġnew Wallet Clear () Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialized . set ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ ĠS chedulers . io (). schedule Direct Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear All Tables () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Cle ared Ġall Ġdatabase Ġtables Ġin Ġ${ System . currentTimeMillis () Ġ- Ġstart } Ġms ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialized . set ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġawait Ready (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initialized . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 3 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . e (" timeout Ġwaiting Ġfor Ġdatabase Ġto Ġinitialize ") ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠSingleton Holder < Wallet Database Impl , ĠContext >({ ĊĠĠĠĠĠĠĠ ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . application Context , ĠWallet Database Impl :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . bitcoin . wallet . s lp . SL P Wallet - db " ĊĠĠĠĠĠĠĠ Ġ). fallback To Dest ruct ive Migration (). build () ĊĠĠĠ Ġ}) Ċ Ċ } ĊĊ