package Ġnet . nem eros a . on track . extension . indicators Ċ Ċ import Ġnet . nem eros a . on track . extension . indicators . model .* Ċ import Ġnet . nem eros a . on track . extension . indicators . portfolio .* Ċ import Ġnet . nem eros a . on track . extension . indicators . support . Integer Threshold s Ċ import Ġnet . nem eros a . on track . extension . indicators . support . Percentage Ċ import Ġnet . nem eros a . on track . extension . indicators . support . Percentage Threshold Ċ import Ġnet . nem eros a . on track . extension . indicators . support . percent Ċ import Ġnet . nem eros a . on track . extension . indicators . values . Boolean Indicator ValueType Ċ import Ġnet . nem eros a . on track . extension . indicators . values . Boolean Indicator ValueType Config Ċ import Ġnet . nem eros a . on track . extension . indicators . values . Integer Indicator ValueType Ċ import Ġnet . nem eros a . on track . extension . indicators . values . Percentage Indicator ValueType Ċ import Ġnet . nem eros a . on track . graphql . Abstract QL KT IT Support Ċ import Ġnet . nem eros a . on track . model . labels . Label Ċ import Ġnet . nem eros a . on track . model . structure . Project Ċ import Ġnet . nem eros a . on track . test . TestUtils . uid Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġjava . time . LocalDateTime Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertNull Ċ Ċ abstract Ġclass ĠAbstract Indicators Test Support Ġ: ĠAbstract QL KT IT Support () Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġboolean Indicator ValueType : ĠBoolean Indicator ValueType ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġinteger Indicator ValueType : ĠInteger Indicator ValueType ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġpercentage Indicator ValueType : ĠPer centage Indicator ValueType ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġindicator Category Service : ĠIndicator Category Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġindicator Type Service : ĠIndicator Type Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġindicator Service : ĠIndicator Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġindicator Portfolio Service : ĠIndicator Portfolio Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġindicator View Service : ĠIndicator View Service ĊĊĠĠĠ Ġprotected Ġfun Ġclear Indicators () Ġ{ ĊĠĠĠĠĠĠĠ Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Category Service . findAll (). forEach Ġ{ Ġcategory Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Category Service . delete Category ( category . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġclear Port fol ios () Ġ{ ĊĠĠĠĠĠĠĠ Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Portfolio Service . findAll (). forEach Ġ{ Ġportfolio Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Portfolio Service . delete Portfolio ( portfolio . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġcategory ( ĊĠĠĠĠĠĠĠ Ġid : ĠString Ġ= Ġuid (" C "), ĊĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġid , ĊĠĠĠĠĠĠĠ Ġsource : ĠIndicator Source ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdeprecated : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ= Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠ Ġindicator Category Service . create Category ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIndicator Form ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated Ġ= Ġdeprecated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġindicator View ( ĊĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġuid (" V "), ĊĠĠĠĠĠĠĠ Ġcategories : ĠList < Indicator Category >, ĊĠĠĠ Ġ) Ġ= Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠ Ġindicator View Service . save Indicator View ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIndicator View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories Ġ= Ġcategories . map Ġ{ Ġit . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġsource () Ġ= ĠIndicator Source ( ĊĠĠĠĠĠĠĠ ĠIndicator Source Provider Description (" test - provider ", Ġ" Provider Ġfor Ġtest "), ĊĠĠĠĠĠĠĠ Ġ" test " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprotected Ġfun ĠIndicator Category . boolean Type ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString Ġ= Ġuid (" T "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġ"$ id Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource : ĠIndicator Source ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠIndicator Type < Boolean , ĠBoolean Indicator ValueType Config > Ġ= Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠ Ġindicator Type Service . create Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Type Ġ= Ġboolean Indicator ValueType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Config Ġ= ĠBoolean Indicator ValueType Config ( required ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated Ġ= Ġdeprecated ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠIndicator Category . integer Type ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString Ġ= Ġuid (" T "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġ"$ id Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax : ĠInt Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhigher Is Better : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource : ĠIndicator Source ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠIndicator Type < Int , ĠInteger Threshold s > Ġ= Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠ Ġindicator Type Service . create Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Type Ġ= Ġinteger Indicator ValueType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Config Ġ= ĠInteger Threshold s ( min , Ġmax , Ġhigher Is Better ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠIndicator Category . percentage Type ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString Ġ= Ġuid (" T "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġ"$ id Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthreshold : ĠInt Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhigher Is Better : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource : ĠIndicator Source ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠIndicator Type < Percentage , ĠPer centage Threshold > Ġ= Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠ Ġindicator Type Service . create Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Type Ġ= Ġpercentage Indicator ValueType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Config Ġ= ĠPer centage Threshold ( threshold . percent (), Ġhigher Is Better ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > ĠProject . indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠIndicator Type < T , Ġ* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠT ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime : ĠLocalDateTime ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Service . update Project Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġcomment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > ĠProject . check Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠIndicator Type < T , Ġ* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode : Ġ( Indicator < T >) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindicator Ġ= Ġindicator Service . getProject Indicator ( project , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode ( indicator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T Ġ: ĠAny > ĠProject . assert Indicator Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠIndicator Type < T , Ġ* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode : Ġ( T ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Indicator ( type ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindicator Value Ġ= Ġi . value ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( indicator Value , Ġ" Indicator Ġvalue Ġmust Ġbe Ġset ") Ġ{ Ġvalue : ĠT Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T Ġ: ĠAny > ĠProject . assert Indicator Value Is ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠIndicator Type < T , Ġ* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Value : ĠT ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Indicator ( type ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindicator Value Ġ= Ġi . value ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Value , Ġindicator Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > ĠProject . assert Indicator No Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠIndicator Type < T , Ġ*> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Indicator ( type ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( i . value , Ġ" Indicator Ġvalue Ġmust Ġnot Ġbe Ġset ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġportfolio ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString Ġ= Ġuid (" P "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġ"$ id Ġportfolio ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategories : ĠList < Indicator Category > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel : ĠLabel ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠIndicator Portfolio Ġ= Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġportfolio Ġ= Ġindicator Portfolio Service . create Portfolio ( id Ġ= Ġid , Ġname Ġ= Ġname ) ĊĠĠĠĠĠĠĠ Ġif Ġ( categories . isNotEmpty () Ġ|| Ġlabel Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġportfolio Ġ= Ġindicator Portfolio Service . update Portfolio ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPortfolio Update Form ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategories Ġ= Ġcategories . map Ġ{ Ġit . id Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġlabel ?. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġportfolio ĊĠĠĠ Ġ} Ċ Ċ }