/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . build Info Ċ Ċ import Ġorg . jetbrains . report .* Ċ import Ġorg . jetbrains . report . json .* Ċ Ċ data Ġclass ĠBuild ( val Ġbuild Number : ĠString , Ġval ĠstartTime : ĠString , Ġval Ġfinish Time : ĠString , Ġval Ġbranch : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommits : ĠString , Ġval Ġfailures Number : ĠInt ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠEntity FromJson Factory < Build > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( data : ĠJson Element ): ĠBuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġis ĠJsonObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Number Ġ= Ġelement ToString ( data . get Required Field (" build Number "), Ġ" build Number "). replace (" \"", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= Ġelement ToString ( data . get Required Field (" startTime "), Ġ" startTime "). replace (" \"", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinish Time Ġ= Ġelement ToString ( data . get Required Field (" finish Time "), Ġ" finish Time "). replace (" \"", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbranch Ġ= Ġelement ToString ( data . get Required Field (" branch "), Ġ" branch "). replace (" \"", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommits Ġ= Ġelement ToString ( data . get Required Field (" commits "), Ġ" commits ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailures Number Ġ= Ġelement ToInt ( data . get Required Field (" failures Number "), Ġ" failures Number ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuild ( build Number , ĠstartTime , Ġfinish Time , Ġbranch , Ġcommits , Ġfailures Number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Top Ġlevel Ġentity Ġis Ġexpected Ġto Ġbe Ġan Ġobject . ĠPlease , Ġcheck Ġorigin Ġfiles .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Time ( time : ĠString , Ġtarget Zone : ĠInt Ġ= Ġ 3 ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġ"^ \\ d { 8 } T (\\ d { 2 })( \\ d { 2 }) \\ d { 2 } (( \\ + |- )\\ d { 2 }) ". to Regex (). find ( time )?. group Values ĊĠĠĠĠĠĠĠ Ġmatch Result ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Zone Ġ= Ġmatch Result [ 3 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Difference Ġ= Ġtarget Zone Ġ- Ġtime Zone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhours Ġ= Ġ( match Result [ 1 ]. toInt () Ġ+ Ġtime Difference ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hours Ġ> Ġ 2 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhours Ġ-= Ġ 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"${ if Ġ( hours Ġ< Ġ 1 0 ) Ġ" 0 $ hours " Ġelse Ġ"$ hours "} :${ match Result [ 2 ]}" ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġerror Ġ{ Ġ" Wrong Ġformat Ġof Ġtime Ġ$ startTime " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdate : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġ"^ (\\ d { 4 })( \\ d { 2 })( \\ d { 2 }) ". to Regex (). find ( startTime )?. group Values ĊĠĠĠĠĠĠĠ Ġmatch Result ?. let Ġ{ Ġ"${ match Result [ 3 ] }/${ match Result [ 2 ] }/${ match Result [ 1 ]}" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror Ġ{ Ġ" Wrong Ġformat Ġof Ġtime Ġ$ startTime " Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġformatted StartTime : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġformat Time ( startTime ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġformatted Finish Time : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġformat Time ( finish Time ) ĊĠĠĠ Ġ} Ċ }