package Ġcom . read yst ates o ftware . sqlite asset Ċ Ċ import Ġandroid . util . Log Ċ Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . Scanner Ċ import Ġjava . util . zip . Zip Entry Ċ import Ġjava . util . zip . Zip InputStream Ċ Ċ internal Ġobject ĠUtils Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠSQLite Asset Helper :: class . java . simple Name ĊĊĠĠĠ Ġfun Ġsplit Sql Script ( script : ĠString , Ġdelim : ĠChar ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatements Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġvar Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġvar Ġin Literal Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġscript . toCharArray () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġscript . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content [ i ] Ġ== Ġ'" ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Literal Ġ= Ġ! in Literal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content [ i ] Ġ== Ġdelim Ġ&& Ġ! in Literal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sb . length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( sb . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( content [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( sb . length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( sb . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstatements ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġwrite Extract ed File To Disk (` in `: ĠInputStream , Ġout s : ĠOutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠ Ġvar Ġlength : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// while Ġ(( length Ġ= Ġ` in `. read ( buffer )) Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ({ Ġlength Ġ= Ġ` in `. read ( buffer ); Ġlength Ġ} () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout s . write ( buffer , Ġ 0 , Ġlength ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġout s . flush () ĊĠĠĠĠĠĠĠ Ġout s . close () ĊĠĠĠĠĠĠĠ Ġ` in `. close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun ĠgetFile From Zip ( zip FileStream : ĠInputStream ): ĠZip InputStream ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġz is Ġ= ĠZip InputStream ( zip FileStream ) ĊĠĠĠĠĠĠĠ Ġvar Ġze : ĠZip Entry ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// while Ġ(( ze Ġ= Ġz is . next Entry () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ({ Ġze Ġ= Ġz is . next Entry ; Ġze Ġ} () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" extract ing Ġfile : Ġ'" Ġ+ Ġze ?. name Ġ+ Ġ"' ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġz is ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert Stream ToString (` is `: ĠInputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠScanner (` is `). use Delimiter ("\\ A "). next () ĊĠĠĠ Ġ} Ċ Ċ } Ċ