package Ġcom . db flow 5 . config Ċ Ċ import Ġcom . db flow 5 . adapter . Model Adapter Ċ import Ġcom . db flow 5 . adapter . quer iable . ListModel Loader Ċ import Ġcom . db flow 5 . adapter . quer iable . Single Model Loader Ċ import Ġcom . db flow 5 . adapter . save able . Model Saver Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠDescription : ĠRepresents Ġcertain Ġtable Ġconfiguration Ġoptions . ĠThis Ġallows Ġyou Ġto Ġeasily Ġspecify Ċ Ġ* Ġcertain Ġconfiguration Ġoptions Ġfor Ġa Ġtable . Ċ Ġ*/ Ċ class ĠTable Config < T Ġ: ĠAny >( val Ġtable Class : ĠClass < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Saver : ĠModel Saver < T >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsingle Model Loader : ĠSingle Model Loader < T >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Model Loader : ĠList Model Loader < T >? Ġ= Ġnull ) Ġ{ ĊĊĠĠĠ Ġinternal Ġconstructor ( builder : ĠBuilder < T >) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġtable Class Ġ= Ġbuilder . table Class , ĊĠĠĠĠĠĠĠ Ġmodel Saver Ġ= Ġbuilder . model Adapter Model Saver , ĊĠĠĠĠĠĠĠ Ġsingle Model Loader Ġ= Ġbuilder . single Model Loader , ĊĠĠĠĠĠĠĠ Ġlist Model Loader Ġ= Ġbuilder . list Model Loader ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTable Ġbuilder Ġfor Ġjava Ġconsumers . Ġuse Ġ[ Table Config ] Ġdirectly Ġif Ġcalling Ġfrom ĠKotlin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠBuilder < T Ġ: ĠAny >( internal Ġval Ġtable Class : ĠClass < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġmodel Adapter Model Saver : ĠModel Saver < T >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġsingle Model Loader : ĠSingle Model Loader < T >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġlist Model Loader : ĠList Model Loader < T >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġconstructor ( table Class : ĠK Class < T >) Ġ: Ġthis ( table Class . java ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefine Ġhow Ġthe Ġ[ Model Adapter ] Ġsaves Ġdata Ġinto Ġthe ĠDB Ġfrom Ġits Ġassociated Ġ[ T ]. ĠThis ĊĠĠĠĠĠĠĠĠ Ġ* Ġwill Ġoverride Ġthe Ġdefault . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġmodel Adapter Model Saver ( model Saver : ĠModel Saver < T >) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . model Adapter Model Saver Ġ= Ġmodel Saver ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefine Ġhow Ġthe Ġtable Ġloads Ġsingle Ġmodels . ĠThis Ġwill Ġoverride Ġthe Ġdefault . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġsingle Model Loader ( single Model Loader : ĠSingle Model Loader < T >) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . single Model Loader Ġ= Ġsingle Model Loader ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefine Ġhow Ġthe Ġtable Ġloads Ġa Ġ[ List ] Ġof Ġitems . ĠThis Ġwill Ġoverride Ġthe Ġdefault . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġlist Model Loader ( list Model Loader : ĠList Model Loader < T >) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . list Model Loader Ġ= Ġlist Model Loader ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew Ġ[ Table Config ]. ĠSub sequent Ġcalls Ġto Ġthis Ġmethod Ġproduce Ġa Ġnew Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ* Ġof Ġ[ Table Config ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠTable Config < *> Ġ= ĠTable Config ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġbuilder ( table Class : ĠClass < T >): ĠBuilder < T > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuilder ( table Class ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġbuilder ( table Class : ĠK Class < T >): ĠBuilder < T > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuilder ( table Class ) ĊĠĠĠ Ġ} Ċ } Ċ