/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠDis 4 IRC . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 1 9 ĠDis 4 IRC Ġcontributors Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ*/ Ċ Ċ package Ġio . z ach br . dis 4 irc . config Ċ Ċ import Ġio . z ach br . dis 4 irc . logger Ċ import Ġn inja . le aping . configur ate . Configuration Options Ċ import Ġn inja . le aping . configur ate . comment ed . Comment ed Configuration Node Ċ import Ġn inja . le aping . configur ate . ho con . Ho con Configuration Loader Ċ import Ġn inja . le aping . configur ate . loader . Header Mode Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ Ċ private Ġconst Ġval ĠHEADER Ġ= Ġ" Dis 4 IRC ĠConfiguration ĠFile " Ċ Ċ /** Ċ Ġ* ĠResp ons ible Ġfor Ġinteracting Ġwith Ġthe Ġunderlying Ġconfiguration Ġsystem Ċ Ġ*/ Ċ class ĠConfiguration ( path In : ĠString ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġconfig Ġfile Ġfor Ġuse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġconfig Path : ĠPath Ġ= ĠPaths . get ( path In ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOur Ġconfiguration Ġloader ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġconfiguration Loader : ĠHo con Configuration Loader Ġ= ĠHo con Configuration Loader . builder () ĊĠĠĠĠĠĠĠ Ġ. set Path ( config Path ) ĊĠĠĠĠĠĠĠ Ġ. setDefault Options ( Configuration Options . defaults (). setHeader ( HEADER )) ĊĠĠĠĠĠĠĠ Ġ. setHeader Mode ( Header Mode . PRE SET ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRoot Ġconfiguration Ġnode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġroot Node : ĠComment ed Configuration Node ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReads Ġconfiguration Ġfile Ġand Ġpre pa res Ġfor Ġuse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Node Ġ= Ġconfiguration Loader . load () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Could Ġnot Ġload Ġconfiguration ! Ġ$ ex ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġex ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġconfig Ġback Ġto Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġsave Config (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Loader . save ( root Node ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Could Ġnot Ġsave Ġconfiguration Ġfile !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġchild Ġnode Ġfrom Ġthe Ġroot Ġnode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun ĠgetNode ( var arg Ġkeys : ĠString ): ĠComment ed Configuration Node Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroot Node . getNode (* keys ) ĊĠĠĠ Ġ} Ċ } Ċ