package Ġf fc . app . person . gen o gram Ċ Ċ import Ġf fc . api . Api ErrorException Ċ import Ġf fc . api . F fc Central Ċ import Ġf fc . entity . Organization Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . dsl . enqueue Ċ import Ġretrofit 2 . http . GET Ċ import Ġretrofit 2 . http . Path Ċ Ċ internal Ġclass ĠApi F amilies ( val Ġorg : ĠOrganization , Ġval Ġperson Id : ĠString ) Ġ: Ġgen o gram Collect s Ġ{ Ċ Ċ // ĠĠĠ Ġprivate Ġval Ġfamily Gson Ġ= ĠGson Builder () Ċ // ĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Person :: class . java , ĠG eno gram Person Deserializer ()) Ċ // ĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ// private Ġval Ġapi Ġ= ĠF fc Central ( gson Ġ= Ġfamily Gson ). service < Gen o gram Api >() ĊĊĠĠĠ Ġvar Ġapi Ġ= ĠF fc Central (). service < Gen o gram Api >() ĊĠĠĠ Ġoverride Ġfun Ġgen o gram Collect s ( callback Dsl : Ġgen o gram Collect s . Callback . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġgen o gram Collect s . Callback (). apply ( callback Dsl ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġapi . get ( org . id , Ġperson Id ) ĊĠĠĠĠĠĠĠ Ġcall . enqueue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ{ Ġcallback . on Success ( body () !! ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ{ Ġcallback . on Fail ( Api ErrorException ( this )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Ġ{ Ġcallback . on Fail ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // private Ġclass ĠG eno gram Person Deserializer Ġ: ĠJson Deserializer < Person > Ġ{ Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġdeserialize ( json : ĠJson Element , ĠtypeOf T : ĠType , Ġcontext : ĠJson Deserialization Context ): ĠPerson Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġperson Ġ= Ġgen o gram Gson . fromJson < Person >( json , ĠtypeOf T ) Ċ // ĠĠĠĠĠĠĠ Ġperson . properties Ġ= Ġf fc Gson . fromJson < ffc . entity . Person >( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġjson . as JsonObject . get (" properties "), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġf fc . entity . Person :: class . java ) Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġperson Ċ // ĠĠĠ Ġ} Ċ //} Ċ Ċ interface Ġgen o gram Collect s Ġ{ ĊĠĠĠ Ġfun Ġgen o gram Collect s ( callback Dsl : ĠCallback . () Ġ-> ĠUnit ) ĊĠĠĠ Ġclass ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠonSuccess : Ġ(( List < gen o gram Collect >) Ġ-> ĠUnit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġon Fail : Ġ(( Throwable ?) Ġ-> ĠUnit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġfun ĠonSuccess ( on Found : Ġ( List < gen o gram Collect >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Success Ġ= Ġon Found ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Fail ( on Fail : Ġ( Throwable ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Fail Ġ= Ġon Fail ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠG eno gram Api Ġ{ Ċ Ċ // ĠĠĠ Ġ@ GET (" org / 1 / person / gen o gram / demo ") Ċ // ĠĠĠ Ġfun Ġdemo (): ĠCall < Family > Ċ Ċ // ĠĠĠ Ġ@ GET (" org /{ org Id }/ person /{ person Id }/ gen o gram ") Ċ // ĠĠĠ Ġfun Ġget (@ Path (" org Id ") Ġorg Id : ĠString , Ġ@ Path (" person Id ") Ġperson Id : ĠString ): ĠCall < Family > ĊĊĠĠĠ Ġ@ GET (" org /{ org Id }/ person /{ person Id }/ gen o gram / collect ") ĊĠĠĠ Ġfun Ġget (@ Path (" org Id ") Ġorg Id : ĠString , Ġ@ Path (" person Id ") Ġperson Id : ĠString ): ĠCall < List < gen o gram Collect >> Ċ } Ċ Ċ class Ġgen o gram Collect Ġ{ ĊĊĠĠĠ Ġvar Ġorg Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġident ities : ĠList < ident ities >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġavatar Url : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġdeath : Ġdeath ? Ġ= Ġnull ĊĠĠĠ Ġ// var Ġch ron ics : ĊĠĠĠ Ġvar Ġlink : Ġlink ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġrelationships : ĠList < relationships >? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġpre name : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġfirst name : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġlastname : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġsex : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġbirth Date : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġhouse Id : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġid : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġtype : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġtimestamp : ĠString Ċ } Ċ Ċ class Ġident ities Ġ{ ĊĠĠĠ Ġvar Ġtype : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġid : ĠString ? Ġ= Ġnull Ċ } Ċ Ċ class Ġlink Ġ{ ĊĠĠĠ Ġvar Ġis Sync ed : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġlateinit Ġvar Ġlast Sync : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġsystem : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġkeys : Ġkeys Ċ } Ċ Ċ class Ġkeys Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġp cu code person : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġpid : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġh code : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġm ary status : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġm ary stat ust h : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġf amp os name : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġfamily position : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġfam il yn o : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġfather id : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġfather : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġmother id : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġmother : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġright code : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġright no : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġh os main : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġho ss ub : ĠString Ċ } Ċ Ċ class Ġrelationships Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġre late : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġid : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġname : ĠString ĊĠĠĠ Ġvar Ġage : ĠInt Ġ= Ġ 0 Ċ } Ċ Ċ class Ġdeath Ġ{ ĊĠĠĠ Ġvar Ġdate : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcauses : ĠList < cause s >? Ġ= Ġnull Ċ } Ċ Ċ class Ġcauses Ġ{ ĊĠĠĠ Ġvar Ġic d 1 0 : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġis Ep ime dic : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġis Ch ron ic : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġis N CD : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġtype : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġtranslation : Ġtranslation ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġid : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġname : ĠString ? Ġ= Ġnull Ċ } Ċ Ċ class Ġtranslation Ġ{ ĊĠĠĠ Ġvar Ġen : ĠString ? Ġ= Ġnull Ċ } Ċ