package Ġn is ui . cli Ċ Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . Print Stream Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . util . Arrays Ċ import Ġjava . util . List Ċ Ċ import Ġpic oc li . CommandLine Ċ Ċ import Ġn is ui . cli . print _ formats .* Ċ import Ġn is ui . core . N is ui Factory Ċ Ċ @ CommandLine . Command Ċ public Ġclass ĠEntry Point ( val Ġn is ui Factory : ĠN is ui Factory ) Ġ{ ĊĠĠĠ Ġ@ CommandLine . Option ( names Ġ= Ġ[" - h ", Ġ"-- help "], Ġusage Help Ġ= Ġtrue , Ġdescription Ġ= Ġ[" Show Ġthis Ġhelp Ġmessage Ġand Ġexit ." ]) ĊĠĠĠ Ġvar Ġhelp Requested : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ CommandLine . Option ( names Ġ= Ġ[" -- format "], Ġdescription Ġ= Ġ[" The Ġformat Ġto Ġprint Ġthe Ġresults Ġin ." ]) ĊĠĠĠ Ġvar Ġformat : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġfun Ġrun ( in _: ĠInputStream ?, Ġout _: ĠPrint Stream , Ġvar arg Ġargs : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= ĠCommandLine ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmain Command Ġ= ĠStart Gui Sub command ( nis ui Factory ) ĊĠĠĠĠĠĠĠ Ġmain Command . register ( command Line ) ĊĊĠĠĠĠĠĠĠ ĠExperiment Sub command ( nis ui Factory ). register ( command Line ) ĊĠĠĠĠĠĠĠ ĠData Point Sub command ( nis ui Factory ). register ( command Line ) ĊĠĠĠĠĠĠĠ ĠExperiment Result Sub command ( nis ui Factory ). register ( command Line ) ĊĠĠĠĠĠĠĠ ĠRun Sub command ( nis ui Factory ). register ( command Line ) ĊĠĠĠĠĠĠĠ ĠQueries Sub command ( nis ui Factory ). register ( command Line ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub Commands Ġ= Ġcommand Line . parse Args (* args ). as CommandLine List () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( help Requested ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Line . usage ( out _) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġran Something Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġsub Command ) Ġin Ġsub Commands . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġsub Command . get Command < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġis ĠCommand Group ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Group : ĠCommand Group Ġ= Ġobj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Group . help Requested ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġi Ġ== Ġsub Commands . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġsub Commands . get ( i Ġ+ Ġ 1 ). parent Ġ!= Ġsub Command ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Command . usage ( out _) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Group . print Format Creator Ġ= Ġwhen Ġ( format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" Ġ-> Ġ({ ĠPrint Tab ular < Any >() Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" csv " Ġ-> Ġ({ ĠPrint CSV < Any >() Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Unknown Ġformat Ġ$ format ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġis ĠSub Command ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Cmd : ĠSub Command Ġ= Ġobj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sub Cmd . help Requested ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Command . usage ( out _) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġran Something Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Cmd . run ( in _, Ġout _) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! ran Something ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Command . run ( in _, Ġout _) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun ( var arg Ġargs : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun ( System .` in `, ĠSystem .` out `, Ġ* args ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun GetOutput ( var arg Ġargs : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġreturn ĠPrint Stream ( ba os , Ġtrue , Ġ" utf - 8 "). use Ġ{ Ġps Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( null , Ġps , Ġ* args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġps . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString ( ba os . toByteArray (), ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ