/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠRo ss ĠBind en Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġ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 Ġcom . r pk it . payments . bukkit . database . table Ċ Ċ import Ġcom . r pk it . core . database . Database Ċ import Ġcom . r pk it . core . database . Table Ċ import Ġcom . r pk it . econom y . bukkit . currency . RP K Currency Provider Ċ import Ġcom . r pk it . payments . bukkit . RP K Payments Bu kkit Ċ import Ġcom . r pk it . payments . bukkit . database . jooq . r pk it . Tables . RP KIT _ PAYMENT _ GROUP Ċ import Ġcom . r pk it . payments . bukkit . group . RP K Payment Group Ċ import Ġcom . r pk it . payments . bukkit . group . RP K Payment Group Impl Ċ import Ġorg . eh cache . config . builders . Cache Configuration Builder Ċ import Ġorg . eh cache . config . builders . Resource Pools Builder Ċ import Ġorg . jooq . impl . DSL . constraint Ċ import Ġorg . jooq . impl . SQL DataType Ċ import Ġjava . sql . Timestamp Ċ Ċ /** Ċ Ġ* ĠRepresents Ġpayment Ġgroup Ġtable . Ċ Ġ*/ Ċ class ĠRP K Payment Group Table ( database : ĠDatabase , Ġprivate Ġval Ġplugin : ĠRP K Payments Bu kkit ): ĠTable < RP K Payment Group >( database , ĠRP K Payment Group :: class ) Ġ{ ĊĊĠĠĠ Ġval Ġcache Ġ= Ġif Ġ( plugin . config . getBoolean (" caching . r pk it _ payment _ group . id . enabled ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . cache Manager . create Cache (" r pk - payments - bukkit . r pk it _ payment _ group . id ", ĠCache Configuration Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Cache Configuration Builder ( Int :: class . java ObjectType , ĠRP K Payment Group :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource Pools Builder . heap ( plugin . config . getLong (" caching . r pk it _ payment _ group . id . size ")) )) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. createTable IfNot Exists ( RP KIT _ PAYMENT _ GROUP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. column ( RP KIT _ PAYMENT _ GROUP . ID , ĠSQL DataType . INTEGER . identity ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. column ( RP KIT _ PAYMENT _ GROUP . NAME , ĠSQL DataType . VARCHAR ( 2 5 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. column ( RP KIT _ PAYMENT _ GROUP . AMOUNT , ĠSQL DataType . INTEGER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. column ( RP KIT _ PAYMENT _ GROUP . CUR RE NCY _ ID , ĠSQL DataType . INTEGER . nullable ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. column ( RP KIT _ PAYMENT _ GROUP . INTERVAL , ĠSQL DataType . BIG INT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. column ( RP KIT _ PAYMENT _ GROUP . LAST _ PAYMENT _ TIME , ĠSQL DataType . TIMESTAMP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. column ( RP KIT _ PAYMENT _ GROUP . BAL ANCE , ĠSQL DataType . INTEGER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. constraints ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint (" pk _ r pk it _ payment _ group "). primaryKey ( RP KIT _ PAYMENT _ GROUP . ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Migrations () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( database . getTable Version ( this ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . set Table Version ( this , Ġ" 0 . 4 . 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert ( entity : ĠRP K Payment Group ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. insert Into ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . AMOUNT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . CUR RE NCY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . INTERVAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . LAST _ PAYMENT _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . BAL ANCE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity . amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity . currency ?. id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity . interval , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimestamp ( entity . last Payment Time ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity . balance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġdatabase . create . last ID (). toInt () ĊĠĠĠĠĠĠĠ Ġentity . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġcache ?. put ( id , Ġentity ) ĊĠĠĠĠĠĠĠ Ġreturn Ġid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( entity : ĠRP K Payment Group ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( RP KIT _ PAYMENT _ GROUP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( RP KIT _ PAYMENT _ GROUP . NAME , Ġentity . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( RP KIT _ PAYMENT _ GROUP . AMOUNT , Ġentity . amount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( RP KIT _ PAYMENT _ GROUP . CUR RE NCY _ ID , Ġentity . currency ?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( RP KIT _ PAYMENT _ GROUP . INTERVAL , Ġentity . interval ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( RP KIT _ PAYMENT _ GROUP . LAST _ PAYMENT _ TIME , ĠTimestamp ( entity . last Payment Time )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( RP KIT _ PAYMENT _ GROUP . BAL ANCE , Ġentity . balance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( RP KIT _ PAYMENT _ GROUP . ID . eq ( entity . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠ Ġcache ?. put ( entity . id , Ġentity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( id : ĠInt ): ĠRP K Payment Group ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cache ?. containsKey ( id ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcache [ id ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdatabase . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . AMOUNT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . CUR RE NCY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . INTERVAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . LAST _ PAYMENT _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRP KIT _ PAYMENT _ GROUP . BAL ANCE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( RP KIT _ PAYMENT _ GROUP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( RP KIT _ PAYMENT _ GROUP . ID . eq ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fetch One () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Provider Ġ= Ġplugin . core . service Manager . get ServiceProvider ( RP K Currency Provider :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Id Ġ= Ġresult . get ( RP KIT _ PAYMENT _ GROUP . CUR RE NCY _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Ġ= Ġif Ġ( currency Id Ġ== Ġnull ) Ġnull Ġelse Ġcurrency Provider . getC urrency ( currency Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayment Group Ġ= ĠRP K Payment Group Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get ( RP KIT _ PAYMENT _ GROUP . NAME ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get ( RP KIT _ PAYMENT _ GROUP . AMOUNT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get ( RP KIT _ PAYMENT _ GROUP . INTERVAL ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get ( RP KIT _ PAYMENT _ GROUP . LAST _ PAYMENT _ TIME ). time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get ( RP KIT _ PAYMENT _ GROUP . BAL ANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache ?. put ( id , Ġpayment Group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpayment Group ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( name : ĠString ): ĠRP K Payment Group ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdatabase . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( RP KIT _ PAYMENT _ GROUP . ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( RP KIT _ PAYMENT _ GROUP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( RP KIT _ PAYMENT _ GROUP . NAME . eq ( name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fetch One () Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġget ( result . get ( RP KIT _ PAYMENT _ GROUP . ID )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll (): ĠList < RP K Payment Group > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġdatabase . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( RP KIT _ PAYMENT _ GROUP . ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( RP KIT _ PAYMENT _ GROUP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fetch () ĊĠĠĠĠĠĠĠ Ġreturn Ġresults . map Ġ{ Ġresult Ġ-> Ġget ( result . get ( RP KIT _ PAYMENT _ GROUP . ID )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter NotNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( entity : ĠRP K Payment Group ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . create ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete From ( RP KIT _ PAYMENT _ GROUP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( RP KIT _ PAYMENT _ GROUP . ID . eq ( entity . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠ Ġcache ?. remove ( entity . id ) ĊĠĠĠ Ġ} Ċ Ċ }