package Ġno . nav . fo . ve ilar bre gist r ering . db . ar be id ss oker Ċ Ċ import Ġno . nav . fo . ve ilar bre gist r ering . ar be id ss oker . Ar be id ss oker peri ode Ċ import Ġno . nav . fo . ve ilar bre gist r ering . ar be id ss oker . Ar be id ss oker period er Ċ import Ġno . nav . fo . ve ilar bre gist r ering . ar be id ss oker . E ld ste Fo er st Ċ import Ġno . nav . fo . ve ilar bre gist r ering . ar be id ss oker . Form idl ings grup pe Ċ import Ġno . nav . fo . ve ilar bre gist r ering . br uk er . Per i ode Ċ import Ġno . nav . fo . ve ilar bre gist r ering . db . ar be id ss oker . Form idl ings grup pe end ring . Ny este Fo er st Ċ import Ġjava . time . LocalDate Ċ Ċ internal Ġobject ĠAr be id ss oker period er Mapper Ġ{ ĊĠĠĠ Ġfun Ġmap ( form idl ings grup pe end ring er : ĠList < Form idl ings grup pe end ring >): ĠAr be id ss oker period er Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAr be id ss oker period er ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform idl ings grup pe end ring er ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted With ( Ny este Fo er st . ny este Fo er st ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( Form idl ings grup pe end ring :: er A ktiv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. run (:: s lett T ek nis ke IS ER V End ring er ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. run (:: be hold K un S iste End ring Per Dag I Listen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. run (:: pop uler Til D ato Med N este Per i odes F ra D ato Minus En ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted With ( E ld ste Fo er st ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġs lett T ek nis ke IS ER V End ring er ( form idl ings grup pe end ring er : ĠList < Form idl ings grup pe end ring >) Ġ= ĊĠĠĠĠĠĠĠ Ġform idl ings grup pe end ring er . groupBy Ġ{ Ġit . form idl ings grup pe End ret Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values . flatMap Ġ{ Ġsam t idi ge End ring er Ġ-> Ġif Ġ( sam t idi ge End ring er . size Ġ> Ġ 1 ) Ġsam t idi ge End ring er . filter Ġ{ Ġ! it . er IS ER V () Ġ} Ġelse Ġsam t idi ge End ring er Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted With ( Ny este Fo er st . ny este Fo er st ()) ĊĊĠĠĠ Ġprivate Ġfun Ġbe hold K un S iste End ring Per Dag I Listen ( form idl ings grup pe end ring er : ĠList < Form idl ings grup pe end ring >): ĠList < Ar be id ss oker peri ode > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġar be id ss oker period er : ĠMutable List < Ar be id ss oker peri ode > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġvar Ġfor ri ge End ret D ato Ġ= ĠLocalDate . MAX ĊĠĠĠĠĠĠĠ Ġfor Ġ( form idl ings grup pe end ring Ġin Ġform idl ings grup pe end ring er ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend ret D ato Ġ= Ġform idl ings grup pe end ring . form idl ings grup pe End ret . to LocalDateTime (). to LocalDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( end ret D ato . isEqual ( for ri ge End ret D ato )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar be id ss oker period er . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr be id ss oker peri ode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠForm idl ings grup pe . of ( form idl ings grup pe end ring . form idl ings grup pe ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend ret D ato , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ri ge End ret D ato Ġ= Ġend ret D ato ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġar be id ss oker period er ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpop uler Til D ato Med N este Per i odes F ra D ato Minus En ( ar be id ss oker period er : ĠList < Ar be id ss oker peri ode >): ĠList < Ar be id ss oker peri ode > Ġ= ĊĠĠĠĠĠĠĠ Ġar be id ss oker period er . map Indexed Ġ{ Ġindex , Ġar be id ss oker peri ode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfor ri ge Per i odes F ra D ato Ġ= Ġif Ġ( index Ġ> Ġ 0 ) Ġar be id ss oker period er [ index Ġ- Ġ 1 ]. peri ode . f ra Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar be id ss oker peri ode . til Og Med ( for ri ge Per i odes F ra D ato ?. minus Days ( 1 )) ĊĠĠĠĠĠĠĠ Ġ} Ċ }