package Ġfr . vs ct . to ck . nlp . front . storage . mongo Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Parser Ċ import Ġcom . fasterxml . jackson . core . Json Token Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Context Ċ import Ġcom . fasterxml . jackson . databind . Json Deserializer Ċ import Ġcom . fasterxml . jackson . databind . module . Simple Module Ċ import Ġfr . vs ct . to ck . nlp . front . shared . config . Application Definition Ċ import Ġfr . vs ct . to ck . shared . jackson . Any Value Wrapper Ċ import Ġjava . time . Instant Ċ import Ġkotlin . Boolean Ċ import Ġkotlin . String Ċ import Ġkotlin . collections . Map Ċ import Ġkotlin . reflect . K Function Ċ import Ġkotlin . reflect . K Parameter Ċ import Ġkotlin . reflect . full . find Parameter ByName Ċ import Ġkotlin . reflect . full . primary Constructor Ċ import Ġorg . lit ote . jackson . Jack son Module Service Loader Ċ import Ġorg . lit ote . km ongo . Id Ċ Ċ internal Ġclass ĠUser Action Log Col _ Deserializer Ġ: ĊĠĠĠĠĠĠĠ ĠJson Deserializer < User Action Log Mongo DAO . User Action Log Col >(), ĠJack son Module Service Loader Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmodule () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Module (). add Deserializer ( User Action Log Mongo DAO . User Action Log Col :: class . java , Ġthis ) ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Action Log Mongo DAO . User Action Log Col Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( p ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ namespace _: ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ namespace _ set Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ application Id _: ĠId < Application Definition >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ application Id _ set Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ login _: ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ login _ set Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ action Type _: ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ action Type _ set Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ new Data _: ĠAny Value Wrapper ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ new Data _ set Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ error _: ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ error _ set Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ date _: ĠInstant ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ date _ set Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ_ token _ Ġ: ĠJson Token ? Ġ= Ġcurrent Token ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(_ token _ ?. is StructEnd Ġ!= Ġtrue ) Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ token _ Ġ!= ĠJson Token . FIELD _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ token _ Ġ= Ġnext Token () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ token _ ?. is StructEnd Ġ== Ġtrue ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ fieldName _ Ġ= Ġcurrent Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ token _ Ġ= Ġnext Token () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ(_ fieldName _) Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" namespace " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ namespace _ Ġ= Ġif (_ token _ Ġ== ĠJson Token . VALUE _ NULL ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġp . text ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ namespace _ set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" application Id " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ application Id _ Ġ= Ġif (_ token _ Ġ== ĠJson Token . VALUE _ NULL ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġp . readValue As (_ application Id __ reference ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ application Id _ set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" login " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ login _ Ġ= Ġif (_ token _ Ġ== ĠJson Token . VALUE _ NULL ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġp . text ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ login _ set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action Type " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ action Type _ Ġ= Ġif (_ token _ Ġ== ĠJson Token . VALUE _ NULL ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġp . text ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ action Type _ set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" new Data " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ new Data _ Ġ= Ġif (_ token _ Ġ== ĠJson Token . VALUE _ NULL ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġp . readValue As ( Any Value Wrapper :: class . java ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ new Data _ set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error _ Ġ= Ġif (_ token _ Ġ== ĠJson Token . VALUE _ NULL ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġp . boolean Value ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error _ set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" date " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ date _ Ġ= Ġif (_ token _ Ġ== ĠJson Token . VALUE _ NULL ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġp . readValue As ( Instant :: class . java ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ date _ set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ token _ ?. is Struct Start Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . skip Children () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Token () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ token _ Ġ= Ġcurrent Token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif (_ namespace _ set Ġ&& Ġ_ application Id _ set Ġ&& Ġ_ login _ set Ġ&& Ġ_ action Type _ set Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ new Data _ set Ġ&& Ġ_ error _ set Ġ&& Ġ_ date _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Action Log Mongo DAO . User Action Log Col ( namespace Ġ= Ġ_ namespace _ !! , Ġapplication Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġ_ application Id _, Ġlogin Ġ= Ġ_ login _ !! , Ġaction Type Ġ= Ġ_ action Type _ !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewData Ġ= Ġ_ new Data _, Ġerror Ġ= Ġ_ error _ !! , Ġdate Ġ= Ġ_ date _ !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < K Parameter , ĠAny ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ namespace _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ parameters . getValue (" namespace ")] Ġ= Ġ_ namespace _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ application Id _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ parameters . getValue (" application Id ")] Ġ= Ġ_ application Id _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ login _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ parameters . getValue (" login ")] Ġ= Ġ_ login _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ action Type _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ parameters . getValue (" action Type ")] Ġ= Ġ_ action Type _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ new Data _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ parameters . getValue (" new Data ")] Ġ= Ġ_ new Data _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ error _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ parameters . getValue (" error ")] Ġ= Ġ_ error _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (_ date _ set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ parameters . getValue (" date ")] Ġ= Ġ_ date _ ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . call By ( map ) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĠĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprimary Constructor : ĠK Function < User Action Log Mongo DAO . User Action Log Col > Ġby ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlazy ( Lazy Thread Safety Mode . PUBLIC ATION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Action Log Mongo DAO . User Action Log Col :: class . primary Constructor !! Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġparameters : ĠMap < String , ĠK Parameter > Ġby Ġlazy ( Lazy Thread Safety Mode . PUBLIC ATION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . collections . map Of (" namespace " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . find Parameter ByName (" namespace ") !! , Ġ" application Id " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . find Parameter ByName (" application Id ") !! , Ġ" login " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . find Parameter ByName (" login ") !! , Ġ" action Type " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . find Parameter ByName (" action Type ") !! , Ġ" new Data " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . find Parameter ByName (" new Data ") !! , Ġ" error " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . find Parameter ByName (" error ") !! , Ġ" date " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Constructor . find Parameter ByName (" date ") !! ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ application Id __ reference : ĠType Reference < Id < Application Definition >> Ġ= Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType Reference < Id < Application Definition >>() Ġ{} ĊĠĠĠ Ġ} Ċ } Ċ