@ file : Suppress (" Sql No DataSource Inspection ") Ċ Ċ package Ġdev . k am ko . bw _ rs _ backup . bit ward en Ċ Ċ import Ġnet . ling ala . zip 4 j . Zip File Ċ import Ġnet . ling ala . zip 4 j . model . Zip Parameters Ċ import Ġnet . ling ala . zip 4 j . model . enums . Aes Key Strength Ċ import Ġnet . ling ala . zip 4 j . model . enums . Encryption Method Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . time . Instant Ċ Ċ private Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Backup Provider :: class . java ) Ċ Ċ class ĠBackup Provider ( ĊĠĠĠ Ġprivate Ġval Ġpassword : ĠString , ĊĠĠĠ Ġprivate Ġval Ġdata Folder : ĠPath Ġ= ĠPath . of ("/ bw - data ") Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Zip (): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" Generating ĠZIP ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= ĠPath . of ( System . getProperty (" java . io . tmpdir "), Ġ" b wb ck p -${ Instant . now ()}. tmp ") ĊĊĠĠĠĠĠĠĠ Ġval Ġzip Ġ= ĠZip File ( target . to File ()) ĊĠĠĠĠĠĠĠ Ġzip . set Password ( password . toCharArray ()) ĊĊĠĠĠĠĠĠĠ Ġadd Db ( zip ) ĊĠĠĠĠĠĠĠ Ġadd Attachments ( zip ) ĊĠĠĠĠĠĠĠ Ġadd Icon Cache ( zip ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbyte Is Ġ= ĠByteArrayInputStream ( Files . read All Bytes ( target )) ĊĠĠĠĠĠĠĠ ĠFiles . delete IfExists ( target ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbyte Is ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Db ( zip : ĠZip File ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠDriver Manager . getConnection (" jdbc : sqlite :${ data Folder }/ db . sqlite 3 "); ĊĠĠĠĠĠĠĠ Ġval Ġstm Ġ= Ġconnection . createStatement () ĊĊĠĠĠĠĠĠĠ Ġval Ġtmp Folder Ġ= ĠFiles . create Temp Directory (" b wb ck p ") ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġtmp Folder . to AbsolutePath (). resolve (" db . sqlite 3 ") ĊĊĠĠĠĠĠĠĠ Ġstm . executeUpdate (" backup Ġto Ġ$ target ") ĊĊĠĠĠĠĠĠĠ Ġzip . add File ( target . to File (), Ġzip Parameters ()) ĊĊĠĠĠĠĠĠĠ ĠFiles . delete IfExists ( target ) ĊĠĠĠĠĠĠĠ ĠFiles . delete IfExists ( tmp Folder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Attachments ( zip : ĠZip File ) Ġ= Ġzip . add Folder ( File ( data Folder . to File (), Ġ" attachments "), Ġzip Parameters ()) ĊĊĠĠĠ Ġprivate Ġfun Ġadd Icon Cache ( zip : ĠZip File ) Ġ= Ġzip . add Folder ( File ( data Folder . to File (), Ġ" icon _ cache "), Ġzip Parameters ()) ĊĊĠĠĠ Ġprivate Ġfun Ġzip Parameters (): ĠZip Parameters Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġzip Parameters Ġ= ĠZip Parameters (); ĊĊĠĠĠĠĠĠĠ Ġzip Parameters . is Encrypt Files Ġ= Ġtrue ; ĊĠĠĠĠĠĠĠ Ġzip Parameters . encryption Method Ġ= ĠEncryption Method . AES ; ĊĠĠĠĠĠĠĠ Ġzip Parameters . aes Key Strength Ġ= ĠA es Key Strength . KEY _ STRE NG TH _ 2 5 6 ; ĊĊĠĠĠĠĠĠĠ Ġreturn Ġzip Parameters ĊĠĠĠ Ġ} Ċ } Ċ