// Ċ // Ġ ĠCopyright Ġ 2 0 2 0 ĠP LA ID , ĠInc . Ċ // Ċ // Ġ Ġ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 Ċ // Ċ // ĠĠĠĠĠ Ġhttps :// 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 Ġio . k arte . android . utilities . datastore Ċ Ċ import Ġjava . io . Closeable Ċ Ċ internal Ġinterface ĠContract < T Ġ: ĠPers ist able > Ġ{ ĊĠĠĠ Ġval Ġnamespace : ĠString ĊĠĠĠ Ġval Ġversion : ĠInt ĊĠĠĠ Ġval Ġcolumns : ĠMap < String , ĠInt > ĊĠĠĠ Ġfun Ġcreate ( map : ĠMap < String , ĠAny ?> ): ĠT Ċ } Ċ Ċ internal Ġabstract Ġclass ĠPers ist able Ġ{ ĊĠĠĠ Ġvar Ġid : ĠLong Ġ= Ġ- 1 ĊĠĠĠ Ġval Ġvalues : ĠMutable Map < String , ĠAny ?> Ġ= Ġmutable Map Of () ĊĠĠĠ Ġabstract Ġval Ġcontract : ĠContract < *> ĊĠĠĠ Ġabstract Ġfun Ġon Pers isted (): ĠMap < String , ĠAny ?> ĊĠĠĠ Ġabstract Ġval Ġsize : ĠInt Ċ } Ċ Ċ internal Ġinterface ĠPers ister Ġ{ ĊĠĠĠ Ġfun Ġput ( persist able : ĠPers ist able ): ĠLong ĊĠĠĠ Ġfun Ġ< T Ġ: ĠPers ist able > Ġread ( ĊĠĠĠĠĠĠĠ Ġcontract : ĠContract < T >, ĊĠĠĠĠĠĠĠ Ġquery : ĠList < Triple < String , ĠRel ational Operator , ĠString >>, ĊĠĠĠĠĠĠĠ Ġorder : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠList < T > ĊĊĠĠĠ Ġfun Ġdelete ( persist able : ĠPers ist able ) ĊĠĠĠ Ġfun Ġupdate ( persist able : ĠPers ist able ): ĠInt Ċ } Ċ Ċ internal Ġclass ĠTransaction ( ĊĠĠĠ Ġprivate Ġval Ġpers ister : ĠPers ister , ĊĠĠĠ Ġprivate Ġval Ġtransaction al : ĠTransaction al Ċ ) Ġ: ĊĠĠĠ ĠClose able , ĠPers ister Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction al . begin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsuccess () Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction al . success () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction al . end () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġput ( persist able : ĠPers ist able ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpers ister . put ( persist able ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠPers ist able > Ġread ( ĊĠĠĠĠĠĠĠ Ġcontract : ĠContract < T >, ĊĠĠĠĠĠĠĠ Ġquery : ĠList < Triple < String , ĠRel ational Operator , ĠString >>, ĊĠĠĠĠĠĠĠ Ġorder : ĠString ? ĊĠĠĠ Ġ): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpers ister . read ( contract , Ġquery , Ġorder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( persist able : ĠPers ist able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpers ister . delete ( persist able ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( persist able : ĠPers ist able ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpers ister . update ( persist able ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġinterface ĠTransaction al Ġ{ ĊĠĠĠ Ġfun Ġtransaction (): ĠTransaction ĊĠĠĠ Ġfun Ġbegin () ĊĠĠĠ Ġfun Ġsuccess () ĊĠĠĠ Ġfun Ġend () Ċ } Ċ Ċ internal Ġinterface ĠSubscriber Ġ{ ĊĠĠĠ Ġfun Ġnotified () Ċ } Ċ Ċ internal Ġenum Ġclass ĠRel ational Operator ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠ ĠEqual (" =") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( a : ĠAny , Ġb : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa Ġ== Ġb ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠU ne qual (" ! =") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( a : ĠAny , Ġb : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa Ġ!= Ġb ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}; ĊĊĠĠĠ Ġabstract Ġfun Ġrun ( a : ĠAny , Ġb : ĠAny ): ĠBoolean Ċ } Ċ