package Ġban ane . io . pdb . web Ċ Ċ import Ġban ane . io . pdb . model . Hero Ċ import Ġban ane . io . pdb . model . Map Point Ċ import Ġban ane . io . pdb . repository . Hero Repository Ċ import Ġban ane . io . pdb . repository . Map Point Repository Ċ import Ġban ane . io . pdb . security . Security Service Ċ import Ġban ane . io . pdb . service . Map Point Service Ċ import Ġban ane . io . pdb . validator . Hero Validator Ċ import Ġcom . google . common . base . Preconditions Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . validation . Binding Result Ċ import Ġorg . springframework . validation . Object Error Ċ import Ġorg . springframework . web . bind . annotation .* Ċ import Ġjava . util .* Ċ Ċ @ RestController Ċ @ RequestMapping ("/ api / hero ") Ċ class ĠHero Controller Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġhero Validator : ĠHero Validator ? Ġ= Ġnull ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġhero Repository : ĠHero Repository ? Ġ= Ġnull ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġmap Point Repository : ĠMap Point Repository ? Ġ= Ġnull ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġsecurity Service : ĠSecurity Service ? Ġ= Ġnull ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġmap Point Service : ĠMap Point Service ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ GetMapping ĊĠĠĠ Ġfun ĠcurrentUser Player (): ĠHero ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogged In User Ġ= Ġsecurity Service !!. find LoggedIn User () ĊĠĠĠĠĠĠĠ Ġreturn Ġlogged In User ?. hero ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ĊĠĠĠ Ġfun Ġcreate (@ RequestBody Ġhero : ĠHero , Ġbinding Result : ĠBinding Result ): ĠResponseEntity < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġsecurity Service !!. find LoggedIn User () ĊĠĠĠĠĠĠĠ ĠPreconditions . check Argument ( user ?. hero Ġ== Ġnull , Ġ" The Ġuser Ġalready Ġhave Ġhave Ġa Ġhero ") ĊĠĠĠĠĠĠĠ ĠPreconditions . checkNotNull ( hero ) ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Valid ating Ġhero ") ĊĠĠĠĠĠĠĠ Ġhero Validator !!. validate ( hero , Ġbinding Result ) ĊĠĠĠĠĠĠĠ Ġif Ġ( binding Result . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Hero Ġis Ġnot Ġvalid , Ġreturning ĠBAD _ REQUEST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . BAD _ REQUEST ). body ( getField Errors ( binding Result )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhero . owner Ġ= Ġuser ĊĠĠĠĠĠĠĠ Ġhero . current Zone Ġ= Ġmap Point Repository !!. getOne ( 1 L ) ĊĠĠĠĠĠĠĠ Ġhero . stone Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġhero . wood Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġhero Repository !!. save ( hero ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" Creation Ġof Ġhero Ġ: Ġ{} Ġsuccessful ", Ġhero . username ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . OK ). body ( hero ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ move Player /{ id }") ĊĠĠĠ Ġfun Ġmove Player (@ PathVariable (" id ") Ġmap Point Id : ĠLong ): ĠResponseEntity < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Starting Ġto Ġmove Ġhero Ġto Ġthe Ġzone Ġwith Ġid Ġ: Ġ{}", Ġmap Point Id . toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Hero Ġ= Ġsecurity Service !!. find LoggedIn User ()?. hero Ġ?: Ġreturn ĠResponseEntity . status ( HttpStatus . BAD _ REQUEST ). body (" Hero Ġshould Ġnot Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Point To Move Ġ= Ġmap Point Repository !!. findById ( map Point Id ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Map Point Ġ= Ġmap Point To Move . get () ĊĠĠĠĠĠĠĠ Ġlogger . info (" Moving Ġhero Ġ{} Ġto Ġthe Ġzone Ġwith Ġid Ġ: Ġ{}", Ġcurrent Hero . username , Ġmap Point Id . toString ()) ĊĠĠĠĠĠĠĠ Ġmap Point Service !!. move Player ( current Hero , Ġnew Map Point ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . OK ). body ( new Map Point ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Field Errors ( result : ĠBinding Result ): ĠMap < String , ĠObject Error > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap : ĠMutable Map < String , ĠObject Error > Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġfor Ġ( error Ġin Ġresult . field Errors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ error . field ] Ġ= Ġerror ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Hero Controller :: class . java ) ĊĠĠĠ Ġ} Ċ }