package Ġorg . cassandra . starter Ċ Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . File Ċ import Ġjava . io . FileReader Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . ExecutionException Ċ Ċ /** Ċ Ġ* ĠStart Ġof Ġstop Ġhandler Ġfor Ġc assandra Ġdatabase Ġservice Ġon Ġany Ġplatform . Ċ Ġ* Ċ Ġ* Ġ@ author ĠS ach ith ĠD ick well a Ċ Ġ*/ Ċ private Ġclass ĠCassandra Ġ{ ĊĊĠĠĠ Ġval Ġlog DirPath : ĠString Ġ= Ġ"/ var / log / cassandra " ĊĠĠĠ Ġval Ġlog Access LogFile : ĠString Ġ= Ġ"/ access . log " ĊĠĠĠ Ġval Ġlog Error LogFile : ĠString Ġ= Ġ"/ error . log " ĊĠĠĠ Ġval Ġpid File : ĠString Ġ= Ġ"/ pid " ĊĊĠĠĠ Ġfun Ġstart ( command : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog Dir : ĠFile Ġ= ĠFile ( log DirPath ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! log Dir . exists ()) Ġlog Dir . mkdir s () ĊĊĠĠĠĠĠĠĠ Ġval Ġp Builder : ĠProcess Builder ĊĊĠĠĠĠĠĠĠ Ġif Ġ( System . getProperty (" os . name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. startsWith (" windows ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp Builder Ġ= ĠProcess Builder (" cmd . exe ", Ġ"/ c ", Ġ" cassandra . bat ", Ġ"- p ", Ġpid File ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp Builder Ġ= ĠProcess Builder ( command , Ġ"- p ", Ġpid File ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġredirect Output ( p Builder ) ĊĠĠĠĠĠĠĠ Ġp Builder . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpid File : ĠFile Ġ= ĠFile ( pid File ) ĊĠĠĠĠĠĠĠ Ġvar Ġpid : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠBufferedReader ( FileReader ( pid File )). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpid Ġ= Ġit . lines (). findFirst (). get () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pid Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Builder : ĠProcess Builder Ġ= ĠProcess Builder (" kill ", Ġ"- 9 ", Ġpid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredirect Output ( p Builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġp Builder . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrestart () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġcode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġredirect Output ( p Builder : ĠProcess Builder ): ĠProcess Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġp Builder . redirect Output ( File ( log DirPath Ġ+ Ġlog Access LogFile )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Error ( File ( log DirPath Ġ+ Ġlog Error LogFile )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġenum Ġclass ĠOp Ġ{ ĊĠĠĠ ĠSTART , ĠSTOP , ĠRE START ; ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTART Ġ-> Ġreturn Ġ" start " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTOP Ġ-> Ġreturn Ġ" stop " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRE START Ġ-> Ġreturn Ġ" restart " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġcas : ĠCassandra Ġ= ĠCassandra () ĊĠĠĠ Ġif Ġ( args . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargc : ĠArray < String > Ġ= ĠArrays . copyOf ( args , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( argc [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOp . START . toString () Ġ-> Ġcas . start ( argc [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOp . STOP . toString () Ġ-> Ġcas . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠExecution Exception ( IllegalArgumentException (" Invalid Ġoperation Ġprovided ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Provide Ġan Ġoperation Ġto Ġexecute ") ĊĠĠĠ Ġ} Ċ }