package Ġno . nav . kl age . kode ver k Ċ Ċ import Ġjavax . persistence . Attribute Converter Ċ import Ġjavax . persistence . Converter Ċ Ċ enum Ġclass ĠSource ( override Ġval Ġid : ĠString , Ġoverride Ġval Ġnav n : ĠString , Ġoverride Ġval Ġbes k riv else : ĠString ) Ġ: ĠK ode Ġ{ ĊĠĠĠ ĠK AK A (" 1 ", Ġ" K AK A ", Ġ" K AK A "), ĊĠĠĠ ĠK AB AL (" 2 ", Ġ" K AB AL ", Ġ" K AB AL "); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( id : ĠString ): ĠSource Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalues (). first OrNull Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" No ĠSource Ġwith Ġid Ġ$ id Ġexists ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Converter Ċ class ĠSource Converter Ġ: ĠAttribute Converter < Source , ĠString ?> Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠconvertTo Database Column ( entity : ĠSource ?): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġentity ?. id ĊĊĠĠĠ Ġoverride Ġfun ĠconvertTo Entity Attribute ( id : ĠString ?): ĠSource ? Ġ= ĊĠĠĠĠĠĠĠ Ġid ?. let Ġ{ ĠSource . of ( it ) Ġ} Ċ }