package Ġcom . github . aly 8 2 4 6 . core . dispatcher . base Dao Handler ĊĊ Ċ import Ġcom . github . aly 8 2 4 6 . core . annotation . Strategy Route Ċ import Ġcom . github . aly 8 2 4 6 . core . dispatcher . Initializer Dispatcher Ċ import Ġcom . github . aly 8 2 4 6 . core . driver . Mongo Connection Ċ import Ġjava . lang . reflect . Method Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠBase Dao Dispatcher < T >( proxy : ĠAny , Ġmethod : ĠMethod , Ġargs : ĠArray < Any > ?, Ġmongo Connection : ĠMongo Connection , Ġtarget : ĠClass < T >) Ġ: ĠInitial izer Dispatcher < T >( proxy , Ġmethod , Ġargs , Ġmongo Connection , Ġtarget ) Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġparam : ĠMutable Map < String , ĠAny ?> ĊĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġoriginal Command : ĠString ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġstrategy Signature : ĠString ĊĠĠĠ Ġoverride Ġfun Ġresolver Base Command ( method : ĠMethod ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æł¹æį® æĸ¹æ³ķ æĭ ¼ æİ¥ sql ĊĠĠĠĠĠĠĠ Ġval Ġcontext Factory Ġ= ĠBase Dao Context Factory < T >() ĊĠĠĠĠĠĠĠ Ġval Ġstrategy Route Ġ= Ġmethod . getDeclared Annotation ( Strategy Route :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġstrategy Ġ= Ġcontext Factory . produce Strategy ( strategy Route . path , Ġmethod . name ) ĊĠĠĠĠĠĠĠ Ġstrategy Signature Ġ= Ġstrategy . strategy Signature ĊĠĠĠĠĠĠĠ Ġreturn Ġstrategy . create ( proxy , Ġmethod , Ġargs , Ġmongo Connection , Ġtarget , Ġparam ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtransmit Original Command ( original Command : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . original Command Ġ= Ġoriginal Command ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolver PrimaryKey ( original Command : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal Command ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġrun (): ĠT ? Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ// è§£æŀĲ èİ·å¾Ĺ åıĤæķ° Ċ // ĠĠĠĠĠĠĠ Ġval Ġparam Ġ= Ġresolver Param ( method ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// ä»İ æĸ¹æ³ķ çļĦ æ³¨è§£ ä¸Ń èİ·å¾Ĺ sql / æĪĸèĢħ çĶŁæĪĲ base Ġsql Ċ // ĠĠĠĠĠĠĠ Ġbase Command Ġ= Ġthis . resolver Base Command ( method ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// èİ·å¾Ĺ åİŁå§ĭ sql ( æ¨¡æĿ¿ æĽ¿æį¢ å®ĮæĪĲ ) Ċ // ĠĠĠĠĠĠĠ Ġvar Ġoriginal Command Ġ= Ġtemplate ( base Command , Ġparam ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// è§£æŀĲ ä¸»éĶ® ID Ċ // ĠĠĠĠĠĠĠ Ġoriginal Command Ġ= Ġresolver PrimaryKey ( original Command ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// å°Ĩ è§£æŀĲ å¥½çļĦ sql ä¼łéĢĴ ç»Ļ åŃĲ ç±» Ċ // ĠĠĠĠĠĠĠ Ġthis . transmit Original Command ( original Command ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// åĪĽå»º statement Ċ // ĠĠĠĠĠĠĠ Ġval Ġstatement Ġ= Ġmongo Connection . createStatement () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// èİ·å¾Ĺ æŁ¥è¯¢ ç»ĵæŀľ Ċ // ĠĠĠĠĠĠĠ Ġval Ġexecutor Result Ġ= Ġselect Statement ( statement , Ġoriginal Command , Ġparam , Ġstatement ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// åħ³éĹŃ è¿ŀæİ¥ Ċ // ĠĠĠĠĠĠĠ Ġstatement . close () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġexecutor Result Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtransmit Param ( param Map : ĠMutable Map < String , ĠAny ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . param Ġ= Ġparam Map ĊĠĠĠ Ġ} Ċ }