package Ġorg . jetbrains . bio . pub trend s . ss Ċ Ċ import Ġj opts imple . Option Parser Ċ import Ġj opts imple . Value Conversion Exception Ċ import Ġj opts imple . Value Converter Ċ import Ġorg . jetbrains . bio . pub trend s . Config Ċ import Ġorg . jetbrains . bio . pub trend s . db . Abstract DB Writer Ċ import Ġorg . jetbrains . bio . pub trend s . db . Semantic Sch olar Postgres Writer Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ import Ġkotlin . system . exit Process Ċ Ċ object ĠSemantic Sch olar Loader Ġ{ ĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLoggerFactory . getLogger ( Semantic Sch olar Loader :: class . java ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwith ( Option Parser ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccepts (" reset Database ", Ġ" Reset ĠDatabase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccepts (" finish ", Ġ" Finish Ġdatabase Ġloading , Ġupdate Ġindexes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccepts (" fill Database ", Ġ" Create Ġand Ġfill Ġdatabase Ġwith Ġarticles ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Required Arg () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Values Convert edBy ( exists ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccepts All ( listOf (" h ", Ġ" ?", Ġ" help "), Ġ" Show Ġhelp "). for Help () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġparse (* args ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( options . has (" help ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Help On ( System . err ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Process ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLoad Ġconfiguration Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( config , Ġconfig Path , Ġsettings Root ) Ġ= ĠConfig . load () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Config Ġpath : Ġ$ config Path ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Writer : ĠAbstract DB Writer < Semantic Sch olar Article > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(!( config [" postgres _ host "] ?. toString ()). isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Init ĠPostgres ql Ġdatabase Ġconnection ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Writer Ġ= ĠSemantic Sch olar Postgres Writer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig [" postgres _ host "] !!. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig [" postgres _ port "] !!. toString (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig [" postgres _ database "] !!. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig [" postgres _ username "] !!. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig [" postgres _ password "] !!. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" finish " Ġin Ġconfig ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" No Ġdatabase Ġconfigured ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Writer . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( options . has (" reset Database ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Reset ting Ġdatabase ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Writer . reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( options . has (" fill Database ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstats File Ġ= Ġsettings Root . resolve (" semantic _ sch olar _ stats . tsv ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollect Stats Ġ= Ġconfig [" loader _ collect _ stats "]. toString (). to Boolean () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( options . valueOf (" fill Database "). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Started Ġparsing Ġarticles Ġ$ file ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSemantic Sch olar Archive Parser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Writer , Ġfile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig [" loader _ batch _ size "]. toString (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect Stats , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). parse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" Finished Ġparsing Ġarticles ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġexists () Ġ= Ġobject Ġ: ĠValue Converter < Path > Ġ{ ĊĠĠĠ Ġ@ Throws ( Value Conversion Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġconvert ( value : ĠString ): ĠPath Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPaths . get ( value ). to AbsolutePath () ĊĠĠĠĠĠĠĠ Ġif Ġ(! path . to File (). exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠValue Conversion Exception (" Path Ġ$ path Ġdoes Ġnot Ġexists ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpath ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalue Type () Ġ= ĠPath :: class . java ĊĊĠĠĠ Ġoverride Ġfun Ġvalue Pattern (): ĠString ? Ġ= Ġnull Ċ } Ċ