package Ġio . github . ho ch ik ong . kt meta . dao . impl Ċ Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġio . github . ho ch ik ong . kt meta . dao .* Ċ import Ġio . github . ho ch ik ong . kt meta . dao . impl _ dao . ML Dao Ċ import Ġorg . j db i . v 3 . core . J db i Ċ import Ġorg . j db i . v 3 . core . extension . Extension Callback Ċ import Ġorg . j db i . v 3 . core . extension . Extension Consumer Ċ import Ġorg . j db i . v 3 . core . statement . Unable To Create Statement Exception Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ object ĠML Resource Pool Ġ: ĠResources Register API Ġ{ ĊĠĠĠ Ġprivate Ġval ĠtableName Ġ= ĠDA OT able Names . ML Resource . t Name ĊĠĠĠ Ġprivate Ġval ĠdataSource Ġ= ĠH ikari DataSource ( DAO Config Factory . build Sqlite CP Config ( this . tableName )) ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( DAO Config Factory . log Key [ tableName ]) ĊĠĠĠ Ġprivate Ġval Ġj db i Instance : ĠJ db i Ġ= ĠJ db i . create ( dataSource ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall Plugins () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġinsert Record ( record : ĠResources Record ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( record Ġis ĠML Resource Record ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Insert Ġnew Ġrecord ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġj db i Instance . with Extension ( ML Dao :: class . java , ĠExtension Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . insert ( record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġid Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Record ( id : ĠLong , Ġnew Record : ĠResources Record ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( new Record Ġis ĠML Resource Record ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Update Ġrecord ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeffect Rows Ġ= Ġj db i Instance . with Extension ( ML Dao :: class . java , ĠExtension Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . update ( id , Ġnew Record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġeffect Rows Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Records (): ĠList < ML Resource Record > Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . logger . info (" Get Ġall Ġrecords ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġj db i Instance . with Extension ( ML Dao :: class . java , ĠExtension Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . query () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Record ByName ( name : ĠString ): ĠML Resource Record Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . logger . info (" Get Ġrecord Ġby Ġname ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġj db i Instance . with Extension ( ML Dao :: class . java , ĠExtension Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . query ByName ( name ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Record ( id : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . logger . info (" Delete Ġa Ġrecord ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġid Ġ== Ġj db i Instance . with Extension ( ML Dao :: class . java , ĠExtension Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . delete ( id ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Table (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . logger . info (" Checking Ġhas Ġtable Ġor Ġnot ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġj db i Instance . with Extension ( ML Dao :: class . java , ĠExtension Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . check () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Table Ġfound ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġhas Ġtable Ġbut Ġno Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhas Ġtable Ġhas Ġa Ġleast Ġone Ġrow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ== Ġr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnable To Create Statement Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Table Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset Table (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . has Table ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj db i Instance . open (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdao Ġ= Ġit . attach ( ML Dao :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Drop Ġtable Ġbefore Ġcreate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdao . drop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Create Ġtable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdao . createTable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj db i Instance . open (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdao Ġ= Ġit . attach ( ML Dao :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Create Ġtable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdao . createTable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdrop () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . has Table ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj db i Instance . use Extension ( ML Dao :: class . java , ĠExtension Consumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . drop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . logger . info (" Drop Ġtable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }