package Ġcom . nab en ik . k ob sid ian . ext Ċ Ċ import Ġcom . nab en ik . k ob sid ian . client . Credential Ċ import Ġpic oc li . CommandLine Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . lang . Exception Ċ Ċ /** Ċ Ġ* ĠGeneral Ġimplementation Ġfor ĠPostgres Ġbackup Ġcreation Ċ Ġ* Ċ Ġ* Ġ@ author ĠV ictor ĠO ro z co Ċ Ġ*/ Ċ class ĠP g Backup Creator { ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInv okes Ġpostgres Ġutility Ġfor Ġbackup ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġbackup Ġis Ġsuccessful Ġit Ġreturns Ġ 0 , Ġotherwise Ġ- 1 Ġor Ġan Ġspecific ĠN ix Ġcode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdo Backup ( credential : ĠCredential , Ġdb Name : ĠString , Ġdestination File : ĠString ): Int { ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Builder Ġ= ĠProcess Builder (" pg _ dump ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- host ", Ġ" localhost ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- port ", Ġ" 5 4 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- username ", Ġcredential . subject , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- no - password ", Ġ"-- verbose ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- file ", Ġdestination File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Name ) ĊĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġprocess Builder . environment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv . put (" PG PASSWORD ", Ġcredential . token ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= Ġprocess Builder . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Reader Ġ= ĠBufferedReader ( InputStream Reader ( process . error Stream )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġoutput Reader . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( line Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Reader . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess . waitFor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Postgres Ġbackup Ġexit Ġcode Ġ${ process . exit Value () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprocess . exit Value () ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( ex : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCommandLine . ExitCode . SOFTWARE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ