package Ġit . uni bo . autom ated car park ing . sprint 1 . gui Ċ Ċ import Ġit . uni bo . autom ated car park ing . sprint 1 . gui . status . Transport T rol ley Status Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . messaging . simp . Simp Messaging Template Ċ import Ġorg . springframework . stereotype . Controller Ċ import Ġorg . springframework . ui . Model Ċ import Ġorg . springframework . web . bind . annotation .* Ċ import Ġjavax . annotation . Post Construct Ċ Ċ @ Controller Ċ class ĠTransport T rol ley Controller Ġ: ĠI Transport T rol ley Observer Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtemplate Ġ: ĠSimp Messaging Template ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbusiness Logic Config : ĠBusiness Logic Config ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġw env Config : ĠW Env Config ĊĊĠĠĠ Ġ@ Post Construct ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . template ĊĠĠĠĠĠĠĠ ĠTransport T rol ley . init ( business Logic Config ) ĊĠĠĠĠĠĠĠ ĠTransport T rol ley . register Observer ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Value ("\ ${ spring . application . name }") ĊĠĠĠ Ġvar ĠappName : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ@ GetMapping ("/") ĊĠĠĠ Ġfun Ġhome Page ( model : ĠModel ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" ------------------- ĠTransport T rol ley Controller Ġhome Page Ġ$ model ") ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" arg ", ĠappName ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ" gui " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ w env _ url ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġsend W Env Url (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" send ĠW Env Ġurl ") ĊĠĠĠĠĠĠĠ Ġreturn Ġw env Config . url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ transport _ t rol ley _ start ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġsend Start To Transport T rol ley (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" send Ġstart Ġto Ġtransport Ġt rol ley ") ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransport T rol ley . transport T rol ley Start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ transport _ t rol ley _ stop ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġsend Stop To Transport T rol ley (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" send Ġstop Ġto Ġtransport Ġt rol ley ") ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransport T rol ley . transport T rol ley Stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ transport _ t rol ley _ sleep ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġdo Sleep Mode (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" sleep Ġmode Ġrequest ") ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransport T rol ley . sleep () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ car _ park ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġdo Car Par k (@ RequestBody Ġbody : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" car Ġpar k Ġrequest ") ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransport T rol ley . do Car Par k ( body . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" error Ġnot Ġinteger ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ car _ pick _ up ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġdo Car Pick Up (@ RequestBody Ġbody : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" car Ġpick Ġup Ġrequest ") ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransport T rol ley . do Car Pick Up ( body . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" error Ġnot Ġinteger ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ExceptionHandler ĊĠĠĠ Ġfun Ġhandle ( ex : ĠException ): ĠResponseEntity < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Headers Ġ= ĠHttp Headers () ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Base Controller ĠERROR Ġ${ ex . message }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Headers , ĠHttpStatus . CREATED ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( status : ĠTransport T rol ley Status ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" received Ġupdate : Ġ$ status ") ĊĠĠĠĠĠĠĠ Ġtemplate . convert And Send ("/ topic / transport t rol le yst atus ", Ġstatus ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ PostMapping ("/ status ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun ĠgetStatus (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" requested Ġstatus ") ĊĠĠĠĠĠĠĠ Ġreturn ĠTransport T rol ley . get Latest Status Json () ĊĠĠĠ Ġ} Ċ }