package Ġorg . ion project . integration . domain . timetable . dto Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonInclude Ċ import Ġorg . ion project . integration . domain . common . dto . Program me Dto Ċ import Ġorg . ion project . integration . domain . common . dto . School Dto Ċ import Ġorg . ion project . integration . domain . timetable . Time table Te achers Ċ import Ġorg . ion project . integration . domain . timetable . get Cur ric ular Term From Section Ċ import Ġorg . ion project . integration . domain . timetable . model . Course Ċ import Ġorg . ion project . integration . domain . timetable . model . Course Teacher Ċ import Ġorg . ion project . integration . domain . timetable . model . Event Category Ċ import Ġorg . ion project . integration . domain . timetable . model . In structor Ċ import Ġorg . ion project . integration . domain . timetable . model . Re current Event Ċ import Ġorg . ion project . integration . infrastructure . Date Utils Ċ Ċ data Ġclass ĠTime table Dto ( ĊĠĠĠ Ġval Ġcreation DateTime : ĠString , ĊĠĠĠ Ġval Ġretrieval DateTime : ĠString , ĊĠĠĠ Ġval Ġschool : ĠSchool Dto , ĊĠĠĠ Ġval Ġprogram me : ĠProgram me Dto , ĊĠĠĠ Ġval Ġcalendar Term : ĠString , ĊĠĠĠ Ġval Ġclasses : ĠList < Class Dto > Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( timetable Te achers : ĠTime table Te achers ): ĠTime table Dto Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( timetable Te achers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreation DateTime Ġ= ĠDate Utils . format To ISO 8 6 0 1 ( timetable [ 0 ]. creation DateTime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrieval DateTime Ġ= ĠDate Utils . format To ISO 8 6 0 1 ( timetable [ 0 ]. retrie val DateTime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschool Ġ= ĠSchool Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime table [ 0 ]. school . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime table [ 0 ]. school . acr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogram me Ġ= ĠProgram me Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime table [ 0 ]. program me . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime table [ 0 ]. program me . acr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Term Ġ= Ġtime table [ 0 ]. calendar Term ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġto Ġget Ġclasses / courses Ġassociated Ġto Ġsections Ġas Ġper ĠD TO Ġdefinition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= Ġtime table . flatMap Ġ{ Ġtime table Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime table . courses . map Ġ{ Ġcourse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Ac ronym And Section Dto ( course , Ġtime table Te achers , Ġtime table . calendar Section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( key Selector Ġ= Ġ{ Ġit . first Ġ}, Ġvalue Transform Ġ= Ġ{ Ġit . second Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( ac ronym , Ġsections ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnormalized Sections Ġ= Ġsections . normalized () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Dto ( ac ronym , Ġnormalized Sections ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTime table Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreation DateTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretrieval DateTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschool , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram me , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Term , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Ac ronym And Section Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse : ĠCourse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table Te achers : ĠTime table Te achers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Section : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠPair < String , ĠSection Dto > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġcourse . events . flatMap ( Event Dto . Factory :: from ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstruct ors Ġ= Ġget In struct ors ( timetable Te achers . te achers , Ġcourse , Ġcalendar Section ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġac ronym Ġ= Ġcourse . label . acr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsection Ġ= ĠSection Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Section , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Cur ric ular Term From Section ( calendar Section ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstruct ors ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġac ronym Ġto Ġsection ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget In struct ors ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Teacher List : ĠList < Course Teacher >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse : ĠCourse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠList < In structor Dto > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcourse Teacher List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . calendar Section Ġ== Ġsection Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . courses Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . class Detail . ac ronym Ġ== Ġcourse . label . acr Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġfac ulty Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfac ulty . in struct ors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn structor Dto . from ( it , Ġfac ulty . class Detail . type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠList < Section Dto >. normalized (): ĠList < Section Dto > Ġ{ ĊĠĠĠ Ġreturn Ġgroup By Ġ{ Ġit . section Ġ}. values . map Ġ{ Ġsections Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġsample Ġ= Ġsections . first () Ġ// ĠAll Ġfields Ġwill Ġbe Ġthe Ġsame Ġexcept Ġthe Ġevents ĊĠĠĠĠĠĠĠ ĠSection Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection Ġ= Ġsample . section , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur ric ular Term Ġ= Ġsample . cur ric ular Term , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstruct ors Ġ= Ġsample . in struct ors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ= Ġsections . flatMap Ġ{ Ġsection Ġ-> Ġsection . events Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠClass Dto ( ĊĠĠĠ Ġval Ġac r : ĠString , ĊĠĠĠ Ġval Ġsections : ĠList < Section Dto > Ċ ) Ċ Ċ data Ġclass ĠSection Dto ( ĊĠĠĠ Ġval Ġsection : ĠString , ĊĠĠĠ Ġval Ġcur ric ular Term : ĠInt , ĊĠĠĠ Ġval Ġevents : ĠList < Event Dto >, ĊĠĠĠ Ġval Ġinstruct ors : ĠList < In structor Dto > Ċ ) Ċ Ċ @ JsonInclude ( JsonInclude . Include . NON _ NULL ) Ċ data Ġclass ĠEvent Dto ( ĊĠĠĠ Ġval Ġcategory : ĠString , ĊĠĠĠ Ġval Ġlocation : ĠList < String >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġbegin Time : ĠString , Ġ// ĠFormat ĠHH : MM ĊĠĠĠ Ġval Ġduration : ĠString , Ġ// ĠFormat ĠHH : MM ĊĠĠĠ Ġval Ġweek days : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( event : ĠRe current Event ): ĠList < Event Dto > Ġ= Ġevent . week days . map Ġ{ Ġweek day Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . category . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . location . if Empty Ġ{ Ġnull Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . begin Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweek day . short Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠIn structor Dto ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġcategory : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject ĠFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( in structor : ĠIn structor , Ġevent Category : ĠEvent Category ): ĠIn structor Dto Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIn structor Dto ( in structor . name , Ġevent Category . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ