package Ġde . ke v code z . metr onom . rest Ċ Ċ import Ġde . ke v code z . metr onom . model . route . Route Ċ import Ġde . ke v code z . metr onom . provider . Route Provider Ċ import Ġde . ke v code z . metr onom . provider . Station Provider Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ Ċ /** Ċ Ġ* ĠREST Ġresource Ġthat Ġprovides ĠMe tr onom Ġroutes . Ċ Ġ* Ċ Ġ* Ġ@ author ĠKevin ĠGr Ã¼ ne berg Ċ Ġ*/ Ċ @ RestController Ċ @ RequestMapping ( value Ġ= Ġ[" route "], Ġproduces Ġ= Ġ[" application / json "]) Ċ class ĠRoute Resource Ġ{ ĊĊĠĠĠ Ġ@ GetMapping ĊĠĠĠ Ġfun ĠfindAll Routes (): ĠList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoute Provider . get Routes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping (" stop /{ stop }") ĊĠĠĠ Ġfun ĠfindBy Stop (@ PathVariable ( value Ġ= Ġ" stop ") Ġstop : ĠString ?): ĠList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( stop Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠRoute Provider . get Routes (). filter Ġ{ Ġhas Station ( it , Ġstop ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Station ( route : ĠRoute , Ġstation Name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroute . stations ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġstation Ġ-> ĠStation Provider . station Name Matches ( station Name , Ġstation ) Ġ|| ĠStation Provider . alternative Name Matches ( station Name , Ġstation ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping (" name /{ name }") ĊĠĠĠ Ġfun Ġfind ByName (@ PathVariable ( value Ġ= Ġ" name ") Ġname : ĠString ): ĠRoute ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoute Provider . get Routes (). first OrNull Ġ{ Ġname . equals ( it . name , Ġignore Case Ġ= Ġtrue ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping ("{ start }/ to /{ stop }") ĊĠĠĠ Ġfun ĠfindBy Start And Stop ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable ( value Ġ= Ġ" start ") Ġstart : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ PathVariable ( value Ġ= Ġ" stop ") Ġstop : ĠString ĊĠĠĠ Ġ): ĠList < Route > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoute Provider . get Routes (). filter Ġ{ Ġhas Station ( it , Ġstart ) Ġ&& Ġhas Station ( it , Ġstop ) Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ