package Ġcom . ml ree f . rest . domain . converters Ċ Ċ import Ġjavax . persistence . Attribute Converter Ċ import Ġjavax . persistence . Converter Ċ Ċ @ Converter Ċ class ĠString Map Converter Ġ: ĠAttribute Converter < Map < String , ĠString >, ĠString > Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġconst Ġval ĠEN TRY _ SEPARATOR Ġ= Ġ'\ u 0 0 0 1 ' Ċ // ĠĠĠĠĠĠĠ Ġconst Ġval ĠITEM _ SEPARATOR Ġ= Ġ" |" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEN TRY _ SEPARATOR Ġ= Ġ'\ t ' ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠITEM _ SEPARATOR Ġ= Ġ"\ n " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠconvertTo Database Column ( strings : ĠMap < String , ĠString >? ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( strings Ġ== Ġnull Ġ|| Ġstrings . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstrings . entries . map Ġ{ Ġ"${ it . key }$ ENTRY _ SEPARATOR ${ it . value }" Ġ}. join ToString ( ITEM _ SEPARATOR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠconvertTo Entity Attribute ( db Data : ĠString ?): ĠMutable Map < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( db Data Ġ== Ġnull Ġ|| Ġdb Data . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}. length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdb Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. split ( ITEM _ SEPARATOR . to Regex ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop Last While Ġ{ Ġit . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . trim () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries Ġ= Ġit . split ( ENTRY _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( entries . get OrNull ( 0 ) Ġ?: Ġ"") Ġto Ġ( entries . get OrNull ( 1 ) Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap (). to Mutable Map () ĊĠĠĠ Ġ} Ċ }