package Ġcom . eta . shapes . impl . persistence Ċ Ċ import Ġcom . eta . shapes . api . Shape Ċ import Ġcom . eta . shapes . api . geometry . Geometry Ċ import Ġcom . eta . shapes . api . geometry . Geometry Type Ċ import Ġcom . eta . shapes . api . geometry . Rectangle Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ /** Ċ Ġ* ĠA Ġhelper Ġclass Ġto Ġtranslate Ġan Ġentity Ġto Ġan ĠAPI ĠPO JO Ġand Ġvice Ġvers a . Ċ Ġ* Ċ Ġ* ĠAll Ġdifferent Ġgeometry Ġimplementations Ġare Ġserial ised Ġinto Ġa Ġjson Ġstring Ġto Ġbe Ġstored Ġin Ġthe ĠDB Ċ Ġ* Ċ Ġ* ĠSuper Ġuseful Ġlib Ġ[ Map struct ]( https :// map struct . org /) Ġcan Ġhelp Ġwith Ġthese Ġmappings Ġa Ġlot , Ċ Ġ* Ġbut Ġin Ġthis Ġcase , Ġjust Ġmanual Ġmapping Ġwill Ġdo ĊĠ Ġ*/ Ċ @ Component Ċ internal Ġclass ĠShape Mapper ( private Ġval ĠobjectMapper : ĠObjectMapper ) Ġ{ ĊĊĠĠĠ Ġfun Ġto Entity ( name : ĠString , Ġboundary : ĠRectangle , Ġgeometry : ĠGeometry ) Ġ= ĠShape Entity ( ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠ Ġgeometry . type . name , ĊĠĠĠĠĠĠĠ Ġboundary . x 1 , Ġboundary . x 2 , Ġboundary . y 1 , Ġboundary . y 2 , ĊĠĠĠĠĠĠĠ ĠobjectMapper . writeValue AsString ( geometry ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġto Shape ( entity : ĠShape Entity ): ĠShape Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠGeometry Type . valueOf ( entity . type ) ĊĠĠĠĠĠĠĠ Ġval Ġgeometry Ġ= ĠobjectMapper . readValue ( entity . geometry , Ġtype . geometry Class . java ) ĊĠĠĠĠĠĠĠ Ġreturn ĠShape ( entity . id !! , Ġentity . name , Ġtype , Ġgeometry ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ