/* ĠCopyright Ġ 2 0 2 1 ĠBetter ĠLtd Ġ( www . better . care ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcare . better . platform . web . template . converter . structured . mapper Ċ Ċ import Ġcare . better . platform . web . template . converter . mapper . Conversion ObjectMapper Ċ import Ġcare . better . platform . web . template . converter . mapper . put Collection As Array Ċ import Ġcare . better . platform . web . template . converter . mapper . put If NotNull Ċ import Ġcare . better . platform . web . template . converter . value . Value Converter Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . node . Object Node Ċ import Ġcom . fasterxml . jackson . databind . node . Text Node Ċ import Ġcare . better . platform . web . template . builder . model . Web Template Node Ċ import Ġorg . open e hr . base . base types . Generic Id Ċ import Ġorg . open e hr . base . base types . Object Ref Ċ import Ġorg . open e hr . rm . common . Part icipation Ċ import Ġorg . open e hr . rm . common . Party Ident ified Ċ Ċ /** Ċ Ġ* Ġ@ author ĠPri moz ĠDe lop st Ċ Ġ* Ġ@ since Ġ 3 . 1 . 0 Ċ Ġ* Ċ Ġ* ĠSingleton Ġinstance Ġof Ġ[ Rm Object To Structured Mapper ] Ġthat Ġmaps Ġ[ Part icipation ] Ġto ĠSTR UCT URE D Ġformat . Ċ Ġ*/ Ċ internal Ġobject ĠPart icipation To Structured Mapper Ġ: ĠR m Object To Structured Mapper < Part icipation > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmap ( web Template Node : ĠWeb Template Node , Ġvalue Converter : ĠValue Converter , Ġrm Object : ĠPart icipation ): ĠJsonNode Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( Conversion ObjectMapper . createObject Node ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Internal ( rm Object , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmap Formatted ( web Template Node : ĠWeb Template Node , Ġvalue Converter : ĠValue Converter , Ġrm Object : ĠPart icipation ): ĠJsonNode Ġ= ĊĠĠĠĠĠĠĠ Ġmap ( web Template Node , Ġvalue Converter , Ġrm Object ) ĊĊĠĠĠ Ġprivate Ġfun Ġmap Internal ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrm Object : ĠPart icipation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Node : ĠObject Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Node . put If NotNull ("| function ", Ġrm Object . function ?. value ) ĊĠĠĠĠĠĠĠ Ġobject Node . put If NotNull ("| mode ", Ġrm Object . mode ?. value ) ĊĊĠĠĠĠĠĠĠ Ġval Ġperform er Ġ= Ġrm Object . perform er ĊĠĠĠĠĠĠĠ Ġif Ġ( perform er Ġis ĠParty Ident ified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Node . put If NotNull ("| name ", Ġperform er . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform er . external Ref ?. also Ġ{ Ġmap Party Ref ( it , Ġobject Node ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Node . put Collection As Array ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"| identifiers _ assign er ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform er . identifiers . filter Ġ{ Ġ! it . assign er . isNull Or Blank () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . assign er ?. let Ġ{ Ġassign er Ġ-> ĠText Node . valueOf ( assign er ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Node . put Collection As Array ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"| identifiers _ issuer ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform er . identifiers . filter Ġ{ Ġ! it . issuer . isNull Or Blank () Ġ}) Ġ{ Ġit . issuer ?. let Ġ{ Ġissuer Ġ-> ĠText Node . valueOf ( issuer ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Node . put Collection As Array ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"| identifiers _ type ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform er . identifiers . filter Ġ{ Ġ! it . type . isNull Or Blank () Ġ}) Ġ{ Ġit . type ?. let Ġ{ Ġtype Ġ-> ĠText Node . valueOf ( type ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Node . put Collection As Array ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"| identifiers _ id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform er . identifiers . filter Ġ{ Ġ! it . id . isNull Or Blank () Ġ}) Ġ{ Ġit . id ?. let Ġ{ Ġid Ġ-> ĠText Node . valueOf ( id ) Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmap Party Ref ( object Ref : ĠObject Ref , Ġobject Node : ĠObject Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Node . put If NotNull ("| id ", Ġobject Ref . id ?. value ) ĊĠĠĠĠĠĠĠ Ġobject Node . put If NotNull ("| id _ namespace ", Ġobject Ref . namespace ) ĊĠĠĠĠĠĠĠ Ġif Ġ( object Ref . id Ġis ĠGeneric Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Node . put If NotNull ("| id _ scheme ", Ġ( object Ref . id Ġas ĠGeneric Id ). scheme ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ