package Ġapp . m ord red . what sc loud . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ Ċ class ĠDb Reader ( ctx : ĠContext , Ġdb F Name : ĠString ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdb FileName : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġdb FilePath : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmsg Query : ĠString Ġ= Ġ" SELECT Ġdata ĠFROM Ġ' messages ' ĠWHERE Ġkey _ from _ me Ġ= Ġ 1 ĠAND Ġdata ĠIS ĠNOT ĠNULL " ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Data Base : ĠSQLite Database ? Ġ= Ġnull ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconnect To Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( File ( db FilePath ). isFile Ġ&& Ġ( m Data Base Ġ== Ġnull Ġ|| Ġ! m Data Base !!. isOpen )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Data Base Ġ= ĠSQLite Database . open Database ( db FilePath , Ġnull , ĠSQLite Database . OPEN _ READ ONLY ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Data Base Ġ!= Ġnull Ġ&& Ġm Data Base !!. isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Data Base !!. close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdb FileName Ġ= Ġdb F Name ĊĠĠĠĠĠĠĠ Ġdb FilePath Ġ= Ġctx . files Dir . absolute Path Ġ+ ĠFile . separator Ġ+ Ġdb FileName ĊĠĠĠĠĠĠĠ Ġcopy Database From Asset ( ctx ) ĊĠĠĠĠĠĠĠ Ġconnect To Database () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Messages ( opt Query : ĠString ?): ĠMutable List < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( m Data Base Ġ!= Ġnull Ġ&& Ġm Data Base !!. isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Data Base !!. raw Query ( opt Query Ġ?: Ġmsg Query , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( result . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( result . getString ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" MSG : Ġ" Ġ+ Ġresult . getString ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcopy Database From Asset ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġctx . assets . open ( db FileName ) ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= ĠFileOutputStream ( db FilePath ) ĊĊĠĠĠĠĠĠĠ ĠinputStream . use Ġ{ Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . use Ġ{ Ġoutput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . copy To ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠoutputStream . flush () ĊĠĠĠĠĠĠĠ ĠoutputStream . close () ĊĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠ Ġ} Ċ }