package Ġch . ay ed o . jooq model ator . core . configuration Ċ Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . nio . file . Path Ċ import Ġjavax . xml . stream . XML Input Factory Ċ import Ġjavax . xml . stream . XML StreamReader Ċ Ċ data Ġclass ĠDatabase Config ( val Ġdriver : ĠString , Ġval Ġurl : ĠString , Ġval Ġuser : ĠString , Ġval Ġpassword : ĠString ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom J oo q Config ( jooq ConfigPath : ĠPath ): ĠDatabase Config Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠXML Input Factory . newInstance () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= Ġj oo q ConfigPath . to File (). reader ( Charset . forName (" UTF - 8 ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġxml StreamReader Ġ= Ġfactory . create XML StreamReader ( reader ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip To Tag ( xml StreamReader , Ġ" jdbc ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip To Tag ( xml StreamReader , Ġ" driver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdriver Ġ= Ġxml StreamReader . element Text ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip To Tag ( xml StreamReader , Ġ" url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġxml StreamReader . element Text ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip To Tag ( xml StreamReader , Ġ" user ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġxml StreamReader . element Text ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip To Tag ( xml StreamReader , Ġ" password ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġxml StreamReader . element Text ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Config ( driver , Ġurl , Ġuser , Ġpassword ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Could Ġnot Ġparse Ġdatabase Ġconfiguration Ġfrom Ġj oo q Ġconfiguration Ġfile .\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ XML StreamReader =${ xml StreamReader :: class . java } Ġj oo q ConfigPath =${ jooq ConfigPath . to AbsolutePath () }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" content =${ jooq ConfigPath . to File (). read Text ()} ]", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxml StreamReader . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġskip To Tag ( xml StreamReader : ĠXML StreamReader , Ġtag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml StreamReader . next Tag () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( xml StreamReader . local Name Ġ!= Ġtag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxml StreamReader . next Tag () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ