package Ġcom . db flow 5 . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroid . database . sqlite . SQLite Open Helper Ċ import Ġcom . db flow 5 . config . DB Flow Database Ċ import Ġcom . db flow 5 . config . Open Helper Creator Ċ Ċ /** Ċ Ġ* ĠDescription : ĠWrap s Ġaround Ġthe Ġ[ SQLite Open Helper ] Ġand Ġprovides Ġextra Ġfeatures Ġfor Ġuse Ġin Ġthis Ġlibrary . Ċ Ġ*/ Ċ open Ġclass ĠAndroid SQLite Open Helper ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġdatabase Definition : ĠDB Flow Database , ĊĠĠĠ Ġlistener : ĠDatabase Callback ?) ĊĠĠĠ Ġ: ĠSQLite Open Helper ( context , ĊĠĠĠ Ġif Ġ( database Definition . isIn Memory ) Ġnull Ġelse Ġdatabase Definition . database FileName , ĊĠĠĠ Ġnull , ĊĠĠĠ Ġdatabase Definition . database Version ), ĠOpen Helper Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Helper Delegate : ĠDatabase Helper Delegate ĊĠĠĠ Ġprivate Ġvar Ġandroid Database : ĠAndroid Database ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġ_ database Name Ġ= Ġdatabase Definition . database FileName ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbackup Helper : ĠOpen Helper ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( database Definition . backup Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTemp Ġdatabase Ġmir rors Ġexisting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackup Helper Ġ= ĠBackup Helper ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Helper Delegate . get Temp Db FileName ( database Definition ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Definition . database Version , Ġdatabase Definition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate Ġ= ĠDatabase Helper Delegate ( context , Ġlistener , Ġdatabase Definition , Ġbackup Helper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Restore From Backup () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate . perform Restore From Backup () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġdelegate : ĠDatabase Helper Delegate ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdatabase Helper Delegate ĊĊĠĠĠ Ġoverride Ġval Ġis Database Integr ity Ok : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdatabase Helper Delegate . is Database Integr ity Ok ĊĊĠĠĠ Ġoverride Ġfun Ġbackup DB () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate . backup DB () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġdatabase : ĠDatabase Wrapper ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( android Database Ġ== Ġnull Ġ|| Ġandroid Database ?. database ?. isOpen Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Database Ġ= ĠAndroid Database . from ( writable Database ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġandroid Database !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġa Ġlistener Ġto Ġlisten Ġfor Ġspecific ĠDB Ġevents Ġand Ġperform Ġan Ġaction Ġbefore Ġwe Ġexecute Ġthis Ġclasses ĊĠĠĠĠ Ġ* Ġspecific Ġmethods . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Database Listener ( callback : ĠDatabase Callback ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate . set Database Helper Listener ( callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate . onCreate ( Android Database . from ( db )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Upgrade ( db : ĠSQLite Database , Ġold Version : ĠInt , Ġnew Version : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate . on Upgrade ( Android Database . from ( db ), Ġold Version , Ġnew Version ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Open ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate . on Open ( Android Database . from ( db )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Down grade ( db : ĠSQLite Database , Ġold Version : ĠInt , Ġnew Version : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Helper Delegate . on Down grade ( Android Database . from ( db ), Ġold Version , Ġnew Version ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose DB () Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid Database ?. database ?. close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete DB () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . delete Database (_ database Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSimple Ġhelper Ġto Ġmanage Ġbackup . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġinner Ġclass ĠBackup Helper ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , Ġversion : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Definition : ĠDB Flow Database ) ĊĠĠĠĠĠĠĠ Ġ: ĠSQLite Open Helper ( context , Ġname , Ġnull , Ġversion ), ĠOpen Helper Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġandroid Database : ĠAndroid Database ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbase Database Helper : ĠBase Database Helper Ġ= ĠBase Database Helper ( context , Ġdatabase Definition ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ database Name Ġ= Ġdatabase Definition . database FileName ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdatabase : ĠDatabase Wrapper ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( android Database Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Database Ġ= ĠAndroid Database . from ( writable Database ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġandroid Database !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Restore From Backup () Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdelegate : ĠDatabase Helper Delegate ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Database Integr ity Ok : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbackup DB () Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Database Listener ( callback : ĠDatabase Callback ?) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Database Helper . onCreate ( Android Database . from ( db )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Upgrade ( db : ĠSQLite Database , Ġold Version : ĠInt , Ġnew Version : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Database Helper . on Upgrade ( Android Database . from ( db ), Ġold Version , Ġnew Version ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Open ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Database Helper . on Open ( Android Database . from ( db )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Down grade ( db : ĠSQLite Database , Ġold Version : ĠInt , Ġnew Version : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Database Helper . on Down grade ( Android Database . from ( db ), Ġold Version , Ġnew Version ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclose DB () Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelete DB () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . delete Database (_ database Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Helper Creator ( context : ĠContext ): ĠOpen Helper Creator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġdb : ĠDB Flow Database , Ġdatabase Callback : ĠDatabase Callback ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid SQLite Open Helper ( context , Ġdb , Ġdatabase Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ