/* Ċ Ġ* ĠCopyright Ġ 2 0 1 2 - 2 0 1 8 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . nex ial . core . tools Ċ Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġorg . nex ial . commons . utils . TextUtils Ċ import Ġorg . nex ial . core . N ex ial Const . Project .* Ċ import Ġorg . nex ial . core . utils . Input FileUtils Ċ import Ġjava . io . File Ċ import Ġjava . io . File . separator Ċ import Ġjava . util . stream . Stream Ċ Ċ /** Ċ Ġ* Ġutilities Ġcommon Ġto Ġthe Ġcommand line Ġtools , Ġesp . Ġthose Ġdealing Ġwith Ġproject Ġartifacts Ċ Ġ*/ Ċ object ĠProject Tool Utils Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval Ġcolumn 1 Width Ġ= Ġ 5 0 ĊĠĠĠ Ġprivate Ġconst Ġval Ġcolumn 2 Width Ġ= Ġ 2 0 ĊĠĠĠ Ġprivate Ġconst Ġval Ġcolumn 3 Width Ġ= Ġ 1 1 ĊĠĠĠ Ġconst Ġval Ġcolumn 4 Left Margin Ġ= Ġcolumn 1 Width Ġ+ Ġcolumn 2 Width Ġ+ Ġcolumn 3 Width ĊĠĠĠ Ġconst Ġval Ġcolumn 3 Left Margin Ġ= Ġcolumn 1 Width Ġ+ Ġcolumn 2 Width ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġbefore After Arrow Ġ= Ġ"\ n " Ġ+ ĠStringUtils . repeat (" Ġ", Ġcolumn 1 Width Ġ+ Ġcolumn 2 Width Ġ+ Ġcolumn 3 Width Ġ- Ġ 3 ) Ġ+ Ġ" => Ġ" ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠisValid Test Artifact ( file : ĠFile ) Ġ= Ġ! file . name . startsWith (" ~ ") Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! file . absolute Path . contains ("$ separator $ DEF _ REL _ LOC _ OUTPUT ") ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Test Script File ( file : ĠFile ) Ġ= ĠisValid Test Artifact ( file ) Ġ&& Ġ! file . name . endsWith ( DEF _ DATA FILE _ SUFFIX ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Test Script ( file : ĠFile ) Ġ= ĠisValid Test Artifact ( file ) Ġ&& ĠInput FileUtils . isValid Script ( file . absolute Path ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Macro File ( file : ĠFile ) Ġ= Ġis Test Script File ( file ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Macro ( file : ĠFile ) Ġ= Ġis Test Script File ( file ) Ġ&& ĠInput FileUtils . isValid Macro ( file . absolute Path ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Data File ( file : ĠFile ) Ġ= ĠisValid Test Artifact ( file ) Ġ&& Ġfile . name . endsWith ( DEF _ DATA FILE _ SUFFIX ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Data ( file : ĠFile ) Ġ= Ġis Data File ( file ) Ġ&& ĠInput FileUtils . isValid Data File ( file . absolute Path ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Plan ( file : ĠFile ) Ġ= Ġis Test Script File ( file ) Ġ&& ĠInput FileUtils . isValid Plan File ( file . absolute Path ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġlist Macro Files ( dir : ĠFile ): ĠStream < File > Ġ= ĠFileUtils . list Files ( dir , ĠarrayOf ( SCRIPT _ FILE _ SUFFIX ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ. stream (). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Test Script File ( it ) Ġ&& ĠInput FileUtils . isValid Macro ( it . absolute Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġlist Test Scripts ( dir : ĠFile ): ĠStream < File > Ġ= ĠFileUtils . list Files ( dir , ĠarrayOf ( SCRIPT _ FILE _ SUFFIX ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ. stream (). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Test Script File ( it ) Ġ&& ĠInput FileUtils . isValid Script ( it . absolute Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġlist Data Files ( dir : ĠFile ): ĠCollection < File > Ġ= ĠFileUtils . list Files ( dir , ĠarrayOf ( DATA _ FILE _ SUFFIX ), Ġtrue ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġlog ( action : ĠString , Ġsubject : ĠAny ) Ġ= Ġlog ( StringUtils . right Pad ( action , Ġ 2 6 ) Ġ+ Ġ" Ġ" Ġ+ Ġsubject ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġlog ( message : ĠString ) Ġ= Ġprintln (" Ġ>> Ġ$ message ") ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġformat Columns ( file : ĠString , Ġworksheet : ĠString ?, Ġposition : ĠString , Ġupdating Vars : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ StringUtils . abbre vi ate ( StringUtils . right Pad ( file , Ġcolumn 1 Width Ġ- Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn 1 Width Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn 1 Width Ġ- Ġ 1 )} Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ StringUtils . abbre vi ate ( StringUtils . right Pad ( worksheet Ġ?: Ġ"", Ġcolumn 2 Width Ġ- Ġ 1 ), Ġcolumn 2 Width Ġ- Ġ 1 )} Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ ${ StringUtils . right Pad ( position , Ġcolumn 3 Width Ġ- Ġ 3 )} ] Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdating Vars ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġformat Columns ( file : ĠString , Ġprocess Time : ĠString , Ġnew File : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ StringUtils . right Pad ( abbre vi ate ( file , Ġcolumn 1 Width ), Ġcolumn 1 Width )} Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ StringUtils . left Pad ( process Time , Ġcolumn 2 Width Ġ- Ġ 7 )} Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabbre vi ate ( new File , Ġcolumn 3 Left Margin ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġabbre vi ate ( text : ĠString , ĠmaxWidth : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġtext . length ĊĠĠĠĠĠĠĠ Ġif Ġ( length Ġ<= ĠmaxWidth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠstartIndex Ġ= Ġlength Ġ- ĠmaxWidth Ġ+ Ġ 3 ĊĠĠĠĠĠĠĠ Ġreturn Ġ"... ${ StringUtils . substring ( text , ĠstartIndex , Ġlength )}" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġre format Lines ( before : ĠString , Ġafter : ĠString , Ġleft Margin : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . isBlank ( before ) Ġ&& ĠStringUtils . isBlank ( after )) Ġreturn Ġbefore Ġ+ Ġbefore After Arrow Ġ+ Ġafter ĊĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . contains ( before , Ġ"\ n ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Lines ( before , Ġleft Margin , Ġlines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines . append ( before After Arrow ). append ("\ n ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines . append ( before ). append ( before After Arrow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . contains ( after , Ġ"\ n ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Lines ( after , Ġleft Margin , Ġlines ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines . append ( after ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlines . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġto Lines ( text : ĠString , Ġleft Margin : ĠInt , Ġnew Lines : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmargin Ġ= ĠStringUtils . repeat (" Ġ", Ġleft Margin ) ĊĊĠĠĠĠĠĠĠ ĠText Utils . toList ( StringUtils . remove ( text , Ġ"\ r "), Ġ"\ n ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠStringUtils . isNotEmpty ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Lines . isNotEmpty ()) Ġnew Lines . append ( margin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Lines . append ( it ). append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnew Lines . delete Char At ( new Lines . length Ġ- Ġ 1 ) ĊĠĠĠ Ġ} Ċ }