package Ġorg . v accine impact . api . app . logic Ċ Ċ import Ġorg . v accine impact . api . app . errors . BadRequest Ċ import Ġorg . v accine impact . api . app . errors . Invalid Operation Error Ċ import Ġorg . v accine impact . api . app . errors . Missing Rows Error Ċ import Ġorg . v accine impact . api . app . filters . Scenario Filter Parameters Ċ import Ġorg . v accine impact . api . app . repositories .* Ċ import Ġorg . v accine impact . api . app . repositories . jooq . Respons ibility Info Ċ import Ġorg . v accine impact . api . app . validate Ċ import Ġorg . v accine impact . api . app . validate Sto chastic Ċ import Ġorg . v accine impact . api . models .* Ċ import Ġorg . v accine impact . api . models . expect ations . Age Lookup Ċ import Ġorg . v accine impact . api . models . expect ations . first Age With Missing Rows Ċ import Ġorg . v accine impact . api . models . expect ations . first Missing Year Ċ import Ġorg . v accine impact . api . models . expect ations . has Missing A ges Ċ import Ġorg . v accine impact . api . models . respons ibilities . Respons ibility Set Status Ċ import Ġorg . v accine impact . api . serialization . Flex ible DataTable Ċ import Ġjava . time . Instant Ċ Ċ interface ĠBur den Estimate Logic Ċ { ĊĠĠĠ Ġfun Ġcreate Bur den Estimate Set ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties : ĠCreate Bur den Estimate Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup loader : ĠString , Ġtimestamp : ĠInstant ): ĠInt ĊĊĠĠĠ Ġfun Ġpopulate Bur den Estimate Set ( setId : ĠInt , ĠgroupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġestimates : ĠSequence < Bur den Estimate With Run Id >, Ġfilename : ĠString ?) ĊĊĠĠĠ Ġ@ Throws ( Missing Rows Error :: class ) ĊĠĠĠ Ġfun Ġclose Bur den Estimate Set ( setId : ĠInt , ĠgroupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString ) ĊĊĠĠĠ Ġfun Ġadd Model Run ParameterSet ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġdisease : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Runs : ĠList < Model Run >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup loader : ĠString , Ġtimestamp : ĠInstant ): ĠInt ĊĊĠĠĠ Ġfun Ġget Est im ates ( setId : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtouch stone Version Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutcome : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Grouping : ĠBur den Estimate Grouping Ġ= ĠBur den Estimate Grouping . AGE ): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBur den Estimate Data Series ĊĊĠĠĠ Ġfun Ġget Bur den Estimate Sets ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString ): ĠList < Bur den Estimate Set > ĊĊĠĠĠ Ġfun Ġget Bur den Estimate Set ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString , ĠsetId : ĠInt ): ĠBur den Estimate Set ĊĊĠĠĠ Ġfun Ġget Bur den Estimate Data ( setId : ĠInt , ĠgroupId : ĠString , Ġtouch stone Version Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Id : ĠString ): ĠFlex ible DataTable < Bur den Estimate > Ċ } Ċ Ċ class ĠRe positories Bur den Estimate Logic ( private Ġval Ġmode lling Group Repository : ĠMode lling Group Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġbur den Estimate Repository : ĠBur den Estimate Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġexpectations Repository : ĠExpect ations Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġscenario Repository : ĠScenario Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġrespons ibilities Repository : ĠResp ons ibilities Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġnot ifier : ĠNot ifier ) Ġ: ĠBur den Estimate Logic Ċ { ĊĊĠĠĠ Ġconstructor ( repositories : ĠRe positories , Ġnot ifier : ĠNot ifier Ġ= ĠFlow Notifier ()) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . mode lling Group , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . bur den Est im ates , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . expect ations , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . scenario , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepositories . respons ibilities , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Bur den Estimate Set ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties : ĠCreate Bur den Estimate Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup loader : ĠString , Ġtimestamp : ĠInstant ): ĠInt ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠD ere ference Ġmode lling Ġgroup ĠIDs ĊĠĠĠĠĠĠĠ Ġval Ġmode lling Group Ġ= Ġmode lling Group Repository . get Mode lling Group ( groupId ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponsibility Info Ġ= Ġbur den Estimate Repository . get Respons ibility Info ( mode lling Group . id , Ġtouch stone Version Id , Ġscenario Id ) ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġresponsibility Info . setStatus . toLowerCase () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġ== ĠResp ons ibility Set Status . SUBMIT TED . name . toLowerCase ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Operation Error (" The Ġbur den Ġestimates Ġuploaded Ġfor Ġthis Ġtouch stone Ġhave Ġbeen Ġsubmitted Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" for Ġreview . ĠYou Ġcannot Ġupload Ġany Ġnew Ġestimates .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġ== ĠResp ons ibility Set Status . APPRO VED . name . toLowerCase ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Operation Error (" The Ġbur den Ġestimates Ġuploaded Ġfor Ġthis Ġtouch stone Ġhave Ġbeen Ġreviewed " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġand Ġapproved . ĠYou Ġcannot Ġupload Ġany Ġnew Ġestimates .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Run Parameter SetId Ġ= Ġproperties . model Run ParameterSet ĊĠĠĠĠĠĠĠ Ġif Ġ( model Run Parameter SetId Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Repository . check Model Run ParameterSet Exists ( model Run Parameter SetId , Ġmode lling Group . id , Ġtouch stone Version Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlatest Model Version Ġ= Ġmode lling Group Repository . get Latest Model Version For Group ( mode lling Group . id , Ġresponsibility Info . d isease ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbur den Estimate Repository . create Bur den Estimate Set ( respons ibility Info . id , Ġlatest Model Version , Ġproperties , Ġup loader , Ġtimestamp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Model Run ParameterSet ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġdisease : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Runs : ĠList < Model Run >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup loader : ĠString , Ġtimestamp : ĠInstant ): ĠInt ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! model Runs . any ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBadRequest (" No Ġmodel Ġruns Ġprovided ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠD ere ference Ġmode lling Ġgroup ĠIDs ĊĠĠĠĠĠĠĠ Ġval Ġmode lling Group Ġ= Ġmode lling Group Repository . get Mode lling Group ( groupId ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Version Ġ= Ġmode lling Group Repository . get Latest Model Version For Group ( mode lling Group . id , Ġdisease ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbur den Estimate Repository . add Model Run ParameterSet ( mode lling Group . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtouch stone Version Id , Ġmodel Version , Ġmodel Runs , Ġup loader , Ġtimestamp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Bur den Estimate Sets ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString ): ĠList < Bur den Estimate Set > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġscenario Repository . check Scenario Description Exists ( scenario Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbur den Estimate Repository . get Bur den Estimate Sets ( groupId , Ġtouch stone Version Id , Ġscenario Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Bur den Estimate Set ( groupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString , ĠsetId : ĠInt ): ĠBur den Estimate Set ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġscenario Repository . check Scenario Description Exists ( scenario Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbur den Estimate Repository . get Bur den Estimate Set ( groupId , Ġtouch stone Version Id , Ġscenario Id , ĠsetId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Est im ates ( setId : ĠInt , ĠgroupId : ĠString , Ġtouch stone Version Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutcome : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Grouping : ĠBur den Estimate Grouping ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠBur den Estimate Data Series ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġmode lling Group Repository . get Mode lling Group ( groupId ) ĊĠĠĠĠĠĠĠ Ġval Ġresponsibility Info Ġ= Ġbur den Estimate Repository . get Respons ibility Info ( group . id , Ġtouch stone Version Id , Ġscenario Id ) ĊĠĠĠĠĠĠĠ Ġval Ġoutcome Ids Ġ= Ġbur den Estimate Repository . get Bur den Outcome Ids ( outcome ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbur den Estimate Repository . get Est im ates ( setId , Ġresponsibility Info . id , Ġoutcome Ids , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Grouping ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Bur den Estimate Data ( setId : ĠInt , ĠgroupId : ĠString , Ġtouch stone Version Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Id : ĠString ): ĠFlex ible DataTable < Bur den Estimate > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// check Ġthat Ġthe Ġbur den Ġestimate Ġset Ġexists Ġin Ġthe Ġgroup Ġetc ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġget Bur den Estimate Set ( groupId , Ġtouch stone Version Id , Ġscenario Id , ĠsetId ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( set . is Sto chastic ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Operation Error (" Cannot Ġget Ġbur den Ġestimate Ġdata Ġfor Ġst och astic Ġbur den Ġestimate Ġsets ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Outcome s Ġ= Ġbur den Estimate Repository . get Expected Outcome s For Bur den Estimate Set ( setId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . first Ġ} Ġ// Ġsort Ġby Ġid ĊĠĠĠĠĠĠĠ Ġval Ġdisease Ġ= Ġscenario Repository . get Scenario For Touch stone ( touch stone Version Id , Ġscenario Id ). d isease ĊĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġbur den Estimate Repository . get Bur den Estimate Outcome s Sequence ( setId , Ġexpected Outcome s , Ġdisease ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFlex ible DataTable . new ( rows , Ġexpected Outcome s . map Ġ{ Ġit . second Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose Bur den Estimate Set ( setId : ĠInt , ĠgroupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠD ere ference Ġmode lling Ġgroup ĠIDs ĊĠĠĠĠĠĠĠ Ġval Ġmode lling Group Ġ= Ġmode lling Group Repository . get Mode lling Group ( groupId ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġall Ġthe ĠIDs Ġmatch Ġup ĊĠĠĠĠĠĠĠ Ġval Ġresponsibility Info Ġ= Ġbur den Estimate Repository . get Respons ibility Info ( mode lling Group . id , Ġtouch stone Version Id , Ġscenario Id ) ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġbur den Estimate Repository . get Bur den Estimate Set For Respons ibility ( setId , Ġresponsibility Info . id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( set . status Ġ== ĠBur den Estimate Set Status . COMPLETE ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Operation Error (" This Ġbur den Ġestimate Ġset Ġhas Ġalready Ġbeen Ġclosed .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( bur den Estimate Repository . central Estimate Writer . isSet Empty ( setId )) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Operation Error (" This Ġbur den Ġestimate Ġset Ġdoes Ġnot Ġhave Ġany Ġbur den Ġestimate Ġdata . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" It Ġcannot Ġbe Ġmarked Ġas Ġcomplete ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Rows Ġ= Ġexpectations Repository . get Expectations For Respons ibility ( respons ibility Info . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect ation . expected Row Lookup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalidated Row Map Ġ= Ġbur den Estimate Repository . validate Est im ates ( set , Ġexpected Rows ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcountries With Missing Rows Ġ= Ġvalidated Row Map . filter Ġ{ Ġit . has Missing A ges () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( countries With Missing Rows . any ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Repository . change Bur den Estimate Status ( setId , ĠBur den Estimate Set Status . INVALID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdding Ġproblem Ġto Ġestimate Ġset Ġalso Ġmarks ĠResp ons ibility Status Ġas ĠINVALID Ġvia Ġconvert Scenario To Respons ibility () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmissing Estimate Count Ġ= Ġvalidated Row Map ?. values ?. flatMap Ġ{ Ġage Ġ-> Ġage . values . flatMap Ġ{ Ġyear Ġ-> Ġyear . values Ġ} Ġ} ?. count Ġ{ Ġ! it Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Repository . add Bur den Estimate Set Problem ( setId , Ġ"$ missing Estimate Count Ġmissing Ġestimate ( s )") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier . notify ( groupId , Ġresponsibility Info . d isease , Ġscenario Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBur den Estimate Set Status . INVALID , Ġfalse , Ġtouch stone Version Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMissing Rows Error ( row ErrorMessage ( countries With Missing Rows )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Repository . change Bur den Estimate Status ( setId , ĠBur den Estimate Set Status . COMPLETE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrespons ibilities Ġ= Ġrespons ibilities Repository . get Respons ibilities For Group ( groupId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtouch stone Version Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScenario Filter Parameters ( null , Ġresponsibility Info . d isease )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponsibility Set Complete Ġ= Ġrespons ibilities . respons ibilities . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . current Estimate Set Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . current Estimate Set ?. status Ġ== ĠBur den Estimate Set Status . COMPLETE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot ifier . notify ( groupId , Ġresponsibility Info . d isease , Ġscenario Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBur den Estimate Set Status . COMPLETE , Ġresponsibility Set Complete , Ġtouch stone Version Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrow ErrorMessage ( countries With Missing Rows : ĠMap < String , ĠAge Lookup >): ĠString ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcountries Ġ= Ġcountries With Missing Rows . keys ĊĠĠĠĠĠĠĠ Ġval Ġexample Row Lookup Ġ= Ġcountries With Missing Rows . values . first () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Age With Missing Years Ġ= Ġexample Row Lookup . first Age With Missing Rows () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Missing Year Ġ= Ġexample Row Lookup . getValue ( first Age With Missing Years ). first Missing Year () ĊĊĠĠĠĠĠĠĠ Ġval Ġbasic Message Ġ= Ġ" Missing Ġrows Ġfor Ġ${ countries . join ToString (", Ġ") }" ĊĠĠĠĠĠĠĠ Ġval Ġexample Row Message Ġ= Ġ" For Ġexample :\ n ${ countries . first ()}, Ġage Ġ$ first Age With Missing Years ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġyear Ġ$ first Missing Year " ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ basic Message \ n $ example Row Message " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopulate Bur den Estimate Set ( setId : ĠInt , ĠgroupId : ĠString , Ġtouch stone Version Id : ĠString , Ġscenario Id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġestimates : ĠSequence < Bur den Estimate With Run Id >, Ġfilename : ĠString ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġmode lling Group Repository . get Mode lling Group ( groupId ) ĊĠĠĠĠĠĠĠ Ġval Ġresponsibility Info Ġ= Ġbur den Estimate Repository . get Respons ibility Info ( group . id , Ġtouch stone Version Id , Ġscenario Id ) ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġbur den Estimate Repository . get Bur den Estimate Set For Respons ibility ( setId , Ġresponsibility Info . id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( set . status Ġ== ĠBur den Estimate Set Status . COMPLETE ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Operation Error (" This Ġbur den Ġestimate Ġset Ġhas Ġbeen Ġmarked Ġas Ġcomplete ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠYou Ġmust Ġcreate Ġa Ġnew Ġset Ġif Ġyou Ġwant Ġto Ġupload Ġany Ġnew Ġestimates .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( set . is Sto chastic ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Sto chastic Bur den Estimate Set ( set , Ġresponsibility Info , Ġestimates ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Central Bur den Estimate Set ( set , Ġresponsibility Info , Ġestimates ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbur den Estimate Repository . change Bur den Estimate Status ( setId , ĠBur den Estimate Set Status . PAR TIAL ) ĊĠĠĠĠĠĠĠ Ġbur den Estimate Repository . update Current Bur den Estimate Set ( respons ibility Info . id , ĠsetId , Ġset . type ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( filename Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbur den Estimate Repository . update Bur den Estimate Set Filename ( setId , Ġfilename ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Central Bur den Estimate Set ( set : ĠBur den Estimate Set , Ġresponsibility Info : ĠResp ons ibility Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġestimates : ĠSequence < Bur den Estimate With Run Id >) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Rows Ġ= Ġexpectations Repository . get Expectations For Respons ibility ( respons ibility Info . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect ation . expected Row Lookup () ĊĊĠĠĠĠĠĠĠ Ġval Ġvalidated Est im ates Ġ= Ġestimates . validate ( expected Rows ) ĊĊĠĠĠĠĠĠĠ Ġbur den Estimate Repository . central Estimate Writer . add Est im ates To Set ( set . id , Ġvalidated Est im ates , Ġresponsibility Info . d isease ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Sto chastic Bur den Estimate Set ( set : ĠBur den Estimate Set , Ġresponsibility Info : ĠResp ons ibility Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġestimates : ĠSequence < Bur den Estimate With Run Id >) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalidated Est im ates Ġ= Ġestimates . validate Sto chastic () ĊĠĠĠĠĠĠĠ Ġbur den Estimate Repository . central Estimate Writer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Est im ates To Set ( set . id , Ġvalidated Est im ates , Ġresponsibility Info . d isease ) ĊĠĠĠ Ġ} Ċ }