package Ġcom . fr h ank lin devs . b ant uk uy . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . sqlite . db . Support SQLite Database Ċ import Ġcom . fr h ank lin devs . b ant uk uy . data . user . User Dao Ċ import Ġcom . fr h ank lin devs . b ant uk uy . data . user . User Entity Ċ import Ġcom . fr h ank lin devs . b ant uk uy . don or . data . box .* Ċ import Ġjava . util . concurrent . Executors Ċ Ċ @ Database ( ĊĠĠĠ Ġentities Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠUser Entity :: class , ĊĠĠĠĠĠĠĠ ĠDon ation Box Entity :: class , ĊĠĠĠĠĠĠĠ ĠDon ation Cash Items :: class , ĊĠĠĠĠĠĠĠ ĠDon ation Goods Items :: class , ĊĠĠĠĠĠĠĠ ĠDon ation Exp edition Item :: class , ĊĠĠĠĠĠĠĠ ĠEx ped ition Services :: class ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠ Ġexport Schema Ġ= Ġtrue , ĊĠĠĠ Ġversion Ġ= Ġ 1 ) Ċ abstract Ġclass ĠB ant u K uy Room Database Ġ: ĠRoom Database (){ ĊĊĠĠĠ Ġabstract Ġfun Ġuser Dao (): ĠUser Dao ĊĠĠĠ Ġabstract Ġfun Ġdon or Box Dao (): ĠDon ation Box Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠB ant u K uy Room Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Database ( context : ĠContext ): ĠB ant u K uy Room Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( INSTANCE Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( B ant u K uy Room Database :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= ĠRoom . database Builder ( context . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ant u K uy Room Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b ant u _ ku y _ db " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). add Callback ( object Ġ: ĠCallback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( db : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( db ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE ?. let Ġ{ Ġtask Database Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utors . new Single Thread Scheduled Executor (). execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill With Starting Data ( task Database . don or Box Dao (), Ġtask Database . user Dao ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġas ĠB ant u K uy Room Database ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġfill With Starting Data ( don or Box Dao : ĠDon ation Box Dao , Ġuser Dao : ĠUser Dao ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdon or Box Dao . insert Starting Exp edition Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEx ped ition Services ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexp edition Company Ġ= Ġ" B ant u K uy ĠEx ped ition ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplan Name Ġ= Ġ" Reg uler ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplan Price Per Kg Ġ= Ġ 3 0 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . insert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfullName Ġ= Ġ" AK ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġ" A 0 1 4 R 4 0 4 2 @ dic od ing . org ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserName Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġ" 1 1 1 1 1 1 1 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }