package Ġcom . money tree . app . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . room . Room Ċ import Ġcom . money tree . app . common . callbacks . NS UserData Callback Ċ import Ġcom . money tree . app . repository . network . responses . NS Data User Ċ Ċ object ĠMain Database Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠDATABASE _ NAME Ġ= Ġ" money _ tree _ db " ĊĠĠĠ Ġprivate Ġvar Ġapp Database : ĠApp Database ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġns UserData : ĠNS Data User ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġapp Database ( activity : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Database Ġ= ĠRoom . database Builder ( activity !! , ĠApp Database :: class . java , ĠDATABASE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration (). allow MainThread Queries (). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġis User Dao : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġapp Database Ġ!= Ġnull Ġ&& Ġapp Database !!. user Dao () Ġ!= Ġnull ĊĊĠĠĠ Ġ// User Ġdetail ĊĠĠĠ Ġfun Ġget UserData ( data Callback : ĠNS UserData Callback ) Ġ{ ĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is User Dao ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġns UserData Ġ= Ġapp Database !!. user Dao () !!. all ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ns UserData Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Callback . on Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġns UserData !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Insert ĠUser Ġdata ĊĠĠĠ Ġfun Ġinsert UserData ( userData : ĠNS Data User , Ġdata Callback : ĠNS UserData Callback ) Ġ{ ĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( app Database !! ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( user Dao () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Users ( userData ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget UserData ( data Callback ) ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} Ċ }