package Ġcom . gn ader i . is land hop ping . service Ċ Ċ import Ġcom . gn ader i . is land hop ping . dto . Is land Ċ import Ġcom . gn ader i . is land hop ping . entity . Is land Area Entity Ċ import Ġcom . gn ader i . is land hop ping . entity . Is land Entity Ċ import Ġcom . gn ader i . is land hop ping . entity . Map Entity Ċ import Ġcom . gn ader i . is land hop ping . entity . TileEntity Ċ import Ġcom . gn ader i . is land hop ping . repository .* Ċ import Ġcom . gn ader i . is land hop ping . common . Api ary Map Ċ import Ġcom . gn ader i . is land hop ping . common . Entity To Dto Converter Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . transaction . annotation . Transactional Ċ import Ġorg . springframework . web . client . Rest Template Ċ Ċ @ Service Ċ @ Transactional Ċ class ĠIsland Hop ping ServiceImpl Ġ: ĠIsland Discovery Service Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmap Crud Repository : ĠMap Crud Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġis land Crud Repository : ĠIsland Crud Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtile Crud Repository : ĠTile Crud Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtile Type Crud Repository : ĠTile Type Crud Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġarea Crud Repository : ĠIsland Area Crud Repository ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġis land Hop ing : ĠIsland Hop ing ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġe 2 d Converter : ĠEntity To Dto Converter ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrest Template : ĠRest Template ĊĊĠĠĠ Ġoverride Ġfun Ġget Map From Adv api (): ĠApi ary Map ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrest Template . get For Object ("/ map ", ĠApi ary Map :: class . java ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġmap Ġusing Ġ[ getMap From Adv api ] Ġcall Ġas ĠApi ary Ġservice Ġmap ĊĠĠĠĠ Ġ* Ġsource Ġand Ġsaves Ġit Ġdatabase . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcreate Map (): ĠMap Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi ary Map Ġ= Ġget Map From Adv api () ĊĠĠĠĠĠĠĠ Ġval Ġsaved Map Ġ= Ġmap Crud Repository . save ( Map Entity ( api ary Map !!. data . type )) ĊĠĠĠĠĠĠĠ Ġval Ġtiles Ġ= Ġapi ary Map . attributes . tiles ĊĊĠĠĠĠĠĠĠ Ġtiles !!. forEach Ġ{ Ġtile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġone Ġ= Ġtile Type Crud Repository . getOne ( tile . type . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile Crud Repository . save ( TileEntity ( tile . x , Ġtile . y , Ġone , Ġsaved Map )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtile Entities By Map By Map Id Ġ= Ġtile Crud Repository . find Tile Entities By Map Id ( saved Map . id ) Ġas ĠMutable List ĊĠĠĠĠĠĠĠ Ġval Ġis lands Ġ= Ġis land Hop ing . discover Is lands ( tile Entities By Map By Map Id , Ġsaved Map . id !! ) ĊĠĠĠĠĠĠĠ Ġis lands . forEach Ġ{ Ġisl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis land Entity Ġ= Ġis land Crud Repository . save ( Is land Entity ( saved Map )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġisl . tiles !!. forEach Ġ{ Ġtile Ġ-> Ġarea Crud Repository . save ( Is land Area Entity ( is land Entity , Ġtile Crud Repository . findById ( tile . id !! ). get ())) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmap Crud Repository . findById ( saved Map . id !! ). get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Is lands (): ĠList < Is land > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġe 2 d Converter . convert Is land Entities ( is land Crud Repository . findAll ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Is land ById ( id : ĠInt ?): ĠIsland Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġe 2 d Converter . convert Is land Entity To Is land ( is land Crud Repository . findById ( id !! ). get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmaps As Ascii Art (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmaps Ġ= Ġmap Crud Repository . findAll () ĊĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġmaps . forEach Ġ{ Ġit Ġ-> ĠstringBuilder . append ( map As Ascii Art ( it . id !! )) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmap As Ascii Art ( id : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtiles Ġ= Ġtile Crud Repository . find Tile Entities By Map Id ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tiles . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġe 2 d Converter . convert Map Tiles To Ascii Art ( id , tiles ) ĊĠĠĠ Ġ} Ċ } Ċ