/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 , ĠPeter ĠV in cent Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 , ĠAndroid ĠPromise . Ċ Ġ* Ġ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 Ġpromise . db Ċ Ċ import Ġpromise . commons . model . Ident ifiable Ċ import Ġpromise . utils . Visitor Ċ Ċ /** Ċ Ġ* ĠBase Ġclass Ġfor Ġclasses Ġannotated Ġwith ĠDatabase Entity Ċ Ġ*/ Ċ abstract Ġclass ĠPromise Database ( private Ġval Ġfast Database : ĠFast Database ?) Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ@ return Ġan Ġinstance Ġof ĠFast Database ĊĠĠ Ġ*/ ĊĠ Ġval Ġdatabase Instance : ĠFast Database ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ ĠcheckNotNull ( fast Database ) Ġ{ Ġ" Database Ġnot Ġinitialized Ġor Ġcreated Ġyet " Ġ} ĊĠĠĠĠĠ Ġreturn Ġfast Database ĊĠĠĠ Ġ} ĊĊĠ Ġabstract Ġfun Ġ< T Ġ: ĠIdent ifiable < Int >> Ġget Entity Class Visitor (): ĠVisitor < Class < out ĠT >, ĠFast Table < T >> ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġreturns Ġthe Ġtable Ġassociated Ġwith Ġthe Ġentity Ġclass ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġentity Class Ġclass Ġof Ġthe Ġentity Ġpersisted ĊĠĠ Ġ* Ġ@ param Ġ< T > ĠĠĠĠĠĠĠĠ Ġentity ĊĠĠ Ġ* Ġ@ return ĠFast Table Ġof Ġthe Ġentity ĊĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġentity Ġis Ġnot Ġregistered Ġwith Ġthe Ġdatabase ĊĠ Ġ</ T > Ġ*/ ĊĠ Ġ@ Throws ( IllegalArgumentException :: class ) ĊĠ Ġfun Ġ< T Ġ: ĠIdent ifiable < Int >> Ġtable Of ( entity Class : ĠClass < out ĠT >): ĠFast Table < T > Ġ{ ĊĠĠĠ Ġval Ġt : ĠVisitor < Class < out ĠT >, ĠFast Table < T >> Ġ= Ġget Entity Class Visitor () ĊĠĠĠ Ġreturn Ġt . visit ( entity Class ) ĊĠ Ġ} Ċ Ċ }