/* Ċ Ġ* Ġ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 . integration Ċ Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġorg . apache . poi . x ss f . user model . XSS F Cell Ċ import Ġorg . nex ial . core . N ex ial Const . Data . SUM MARY _ TAB _ NAME Ċ import Ġorg . nex ial . core . excel . Excel Ċ import Ġorg . nex ial . core . excel . Excel . Work sheet Ċ import Ġorg . nex ial . core . excel . Excel . get CellValue Ċ import Ġorg . nex ial . core . excel . Excel Address Ċ import Ġorg . nex ial . core . excel . Excel Area Ċ import Ġorg . nex ial . core . excel . Excel Config .* Ċ import Ġorg . nex ial . core . model . Test Scenario Meta Ċ import Ġjava . io . File Ċ Ċ private Ġconst Ġval Ġscenario Start Address Ġ= Ġ" A 2 0 " Ċ Ċ class ĠExcel Output ( file : ĠFile ) Ġ{ ĊĊĠĠĠ Ġvar Ġexcel : ĠExcel ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġexcel Ġ= ĠExcel ( file , Ġfalse , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse (): ĠIteration Output Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġiteration Output Ġ= ĠIteration Output () ĊĠĠĠĠĠĠĠ Ġiteration Output . fileName Ġ= Ġexcel !!. file . name ĊĠĠĠĠĠĠĠ Ġval Ġsummary Sheet : ĠWork sheet Ġ= Ġexcel !!. worksheet ( SUM MARY _ TAB _ NAME ) ĊĠĠĠĠĠĠĠ Ġiteration Output . summary Ġ= Ġparse Summary Output ( summary Sheet ) ĊĠĠĠĠĠĠĠ Ġval Ġscenario End Row Ġ= Ġsummary Sheet . sheet . last Row Num ĊĠĠĠĠĠĠĠ Ġval Ġscenario Cells Ġ= Ġsummary Sheet . cells ( Excel Address ("$ scenario Start Address : A $ scenario End Row ")) ĊĠĠĠĠĠĠĠ Ġval Ġcell Values Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġscenario Cells . forEach Ġ{ Ġrow Ġ-> Ġrow . forEach Ġ{ Ġcell Ġ-> Ġcell Values . add ( get CellValue ( cell )) Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġcell Values . forEach Ġ{ Ġname Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . isNotBlank ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscenario Sheet Ġ= Ġexcel !!. worksheet ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscenario Output : ĠScenario Output Ġ= Ġread Scenario Output ( scenario Sheet ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiteration Output . scenarios . add ( scenario Output ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Output . iteration Output Ġ= Ġiteration Output ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġiteration Output ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Summary Output ( worksheet : ĠWork sheet ): ĠSummary Output Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddr TestCase Name Ġ= ĠExcel Address (" A 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġcell : ĠX SS F Cell Ġ= Ġworksheet . cell ( addr TestCase Name ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġget CellValue ( cell ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexec Summary Ġ= Ġread Execution Summary ( worksheet ) ĊĠĠĠĠĠĠĠ Ġval Ġsummary Output Ġ= ĠSummary Output () ĊĠĠĠĠĠĠĠ Ġsummary Output . title Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġsummary Output . exec Summary Ġ= Ġexec Summary ĊĠĠĠĠĠĠĠ Ġreturn Ġsummary Output ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Execution Summary ( worksheet : ĠWork sheet ): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcols : ĠList < Char > Ġ= ĠlistOf (' B ', Ġ' C ') ĊĠĠĠĠĠĠĠ Ġval Ġmap : ĠMutable Map < String , ĠString > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġ// Ġsummary Ġrows Ġrange Ġ( 2 .. 1 2 ) ĊĠĠĠĠĠĠĠ Ġ( 2 .. 1 2 ). forEach Ġ{ Ġrow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġget CellValue ( worksheet . cell ( Excel Address ("${ cols [ 0 ]} $ row "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġget CellValue ( worksheet . cell ( Excel Address ("${ cols [ 1 ]} $ row "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Scenario Output ( worksheet : ĠWork sheet ): ĠScenario Output ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscenario Output Ġ= Ġparse Step Results ( worksheet ) ĊĠĠĠĠĠĠĠ Ġval Ġscenario Name Ġ= Ġworksheet . name ĊĠĠĠĠĠĠĠ Ġscenario Output . scenario Name Ġ= Ġscenario Name ĊĠĠĠĠĠĠĠ Ġval Ġmeta Ġ= ĠTest Scenario Meta . newInstance ( worksheet ) ĊĠĠĠĠĠĠĠ Ġval Ġprojects Ġ= Ġget Project List ( meta ) ĊĠĠĠĠĠĠĠ Ġscenario Output . projects Ġ= Ġprojects ĊĠĠĠĠĠĠĠ Ġval Ġcell Ġ= Ġworksheet . cell ( Excel Address (" L 2 ")) ĊĠĠĠĠĠĠĠ Ġif Ġ( cell Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscenario Result Ġ= Ġget CellValue ( cell ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Output . scenario Summary Map Ġ= Ġparse Scenario Result ( scenario Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġscenario Output ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Project List ( meta : ĠTest Scenario Meta ): ĠMutable List < Project Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject List Ġ= Ġmutable ListOf < Project Info >() ĊĠĠĠĠĠĠĠ Ġval Ġprojects Ġ= ĠStringUtils . split ( meta . project , Ġ"\ n ") Ġ?: Ġreturn Ġproject List ĊĠĠĠĠĠĠĠ Ġprojects . forEach Ġ{ Ġproject Key Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠStringUtils . substring Between ( project Key , Ġ"[", Ġ"] ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Profile Ġ= ĠStringUtils . substring Before ( key , Ġ": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠStringUtils . substring After ( key , Ġ": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Info Ġ= ĠProject Info ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Integration Manager . isValid Server ( project Profile )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Info . server Ġ= Ġproject Profile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Info . profile Ġ= Ġproject Profile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Info . features Ġ= Ġparse Ref Values ( meta . feature Ref , Ġproject Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Info . test Ids Ġ= Ġparse Ref Values ( meta . test Ref , Ġproject Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Info . description Ġ= Ġmeta . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Info . author Ġ= Ġmeta . author ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject List . add ( project Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġproject List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Ref Values ( meta Cell : ĠString , Ġproject Profile : ĠString ?): ĠMutable List < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġref Values Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcell Values Ġ= ĠStringUtils . split ( meta Cell , Ġ"\ n ") ĊĠĠĠĠĠĠĠ Ġcell Values . forEach Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠStringUtils . substring Between ( value , Ġ"[", Ġ"] ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . substring Before ( ref , Ġ": ") Ġ== Ġproject Profile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref Values . add ( StringUtils . substring After ( ref , Ġ":" )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġref Values ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Step Results ( worksheet : ĠWork sheet ): ĠScenario Output Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġscenario Output Ġ= ĠScenario Output () ĊĠĠĠĠĠĠĠ Ġval Ġlast Command Row Ġ= Ġworksheet . find Last DataRow ( ADDR _ COMMAND _ START ) ĊĠĠĠĠĠĠĠ Ġval Ġstart RowIndex Ġ= ĠADD R _ COMMAND _ START . row StartIndex !! Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġarea Ġ= ĠExcel Area ( worksheet , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExcel Address ("$ COL _ TEST _ CASE $ start RowIndex :$ COL _ REASON $ last Command Row "), Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsteps Ġ= Ġmutable Map Of < Int , ĠList < String >>() ĊĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġrow Number Ġ= Ġstart RowIndex ĊĠĠĠĠĠĠĠ Ġvar Ġdescription Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġactivity Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġarea . whole Area . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstep Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġarea . whole Area [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get CellValue ( row [ 0 ]). isNotBlank ()) Ġactivity Ġ= Ġget CellValue ( row [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get CellValue ( row [ 1 ]). isNotBlank ()) Ġdescription Ġ= Ġget CellValue ( row [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get CellValue ( row [ 1 3 ]). contains (" FAIL ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Output . is Failed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow . forEach Ġ{ Ġcell Ġ-> Ġstep . add ( get CellValue ( cell )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsteps [ row Number ] Ġ= Ġstep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( step . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep [ 0 ] Ġ= Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep [ 1 ] Ġ= Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Number ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscenario Output . test Steps Ġ= Ġsteps ĊĠĠĠĠĠĠĠ Ġreturn Ġscenario Output ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Scenario Result ( scenario Result : ĠString ?): ĠMutable Map < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscenario Summary Map Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġval Ġlines : ĠList < String > Ġ= Ġscenario Result !!. split ( System . getProperty (" line . separator ")) ĊĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġlines ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . isNotEmpty ( line )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠStringUtils . substring Before ( line , Ġ": "). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠStringUtils . substring After ( line , Ġ": "). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Summary Map [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġscenario Summary Map ĊĠĠĠ Ġ} Ċ }