package Ġdg . dao Ċ Ċ import Ġorg . apache . commons . db cp 2 . Basic DataSource Ċ import Ġjava . sql .* Ċ import Ġjava . sql . Date Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠBase Ġclass Ġfor Ġall ĠDAO Ġwith Ġre - usable Ġmethods Ċ Ġ*/ Ċ abstract Ġclass ĠAbstract DAO ( private Ġval Ġconfig : Properties ) Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠExec utes ĠINSERT Ġdatabase Ġoperation Ġusing Ġthe ĠSQL Ġstatement Ġand Ġdata Ġprovided ĊĠĠ Ġ*/ ĊĠ Ġfun Ġinsert ( Ġsql Stmt : String , Ġdata : Array < Any > Ġ): Int Ġ{ ĊĠĠĠ Ġval Ġds : Basic DataSource ? ĊĠĠĠ Ġvar Ġcn : Connection ? Ġ= Ġnull ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġds Ġ= Ġget DataSource ( config ) ĊĠĠĠĠĠ Ġcn Ġ= Ġds . connection ĊĠĠĠĠĠ Ġval Ġstmt : PreparedStatement Ġ= Ġcn . prepareStatement ( sql Stmt , ĠStatement . RETURN _ GENERATED _ KEYS ) ĊĊĠĠĠĠĠ Ġapply Data ( Ġstmt , Ġdata Ġ) ĊĠĠĠĠĠ Ġstmt . executeUpdate () ĊĊĠĠĠĠĠ Ġvar Ġgenerated Id Ġ= Ġ 0 ĊĠĠĠĠĠ Ġval Ġrs : ResultSet Ġ= Ġstmt . generated Keys ĊĊĠĠĠĠĠ Ġif ( Ġrs . next () Ġ){ ĊĠĠĠĠĠĠĠ Ġgenerated Id Ġ= Ġrs . getInt ( 1 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġreturn Ġgenerated Id ĊĠĠĠ Ġ} ĊĠĠĠ Ġfinally Ġ{ ĊĠĠĠĠĠ Ġcn ?. close () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġa Ġsingle Ġvalue Ġfrom Ġexecuting Ġa ĠSELECT Ġdatabase Ġoperation Ġusing Ġthe ĠSQL Ġstatement Ġand Ġdata Ġprovided ĊĠĠ Ġ*/ ĊĠ Ġfun Ġquery For Int ( Ġsql Stmt : String , Ġdata : Array < Any > Ġ): Int Ġ{ ĊĠĠĠ Ġval Ġds : Basic DataSource ? ĊĠĠĠ Ġvar Ġcn : Connection ? Ġ= Ġnull ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġds Ġ= Ġget DataSource ( config ) ĊĠĠĠĠĠ Ġcn Ġ= Ġds . connection ĊĠĠĠĠĠ Ġval Ġstmt : PreparedStatement Ġ= Ġcn . prepareStatement ( sql Stmt ) ĊĊĠĠĠĠĠ Ġapply Data ( Ġstmt , Ġdata Ġ) ĊĠĠĠĠĠ Ġval Ġrs : ResultSet Ġ= Ġstmt . executeQuery () ĊĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 ĊĊĠĠĠĠĠ Ġif ( Ġrs . next () Ġ){ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġrs . getInt ( 1 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĠĠĠ Ġfinally Ġ{ ĊĠĠĠĠĠ Ġcn ?. close () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠExec utes Ġa ĠSELECT Ġdatabase Ġoperation Ġusing Ġthe ĠSQL Ġstatement Ġand Ġdata Ġprovided ĊĠĠ Ġ* Ġand Ġreturns Ġthe ĠResultSet ĊĠĠ Ġ*/ ĊĠ Ġfun Ġquery ( Ġsql Stmt : String , Ġdata : Array < Any > Ġ): ResultSet Ġ{ ĊĠĠĠ Ġval Ġds : Basic DataSource ? ĊĠĠĠ Ġval Ġcn : Connection ? ĊĊĠĠĠ Ġds Ġ= Ġget DataSource ( config ) ĊĠĠĠ Ġcn Ġ= Ġds . connection ĊĠĠĠ Ġval Ġstmt : PreparedStatement Ġ= Ġcn . prepareStatement ( sql Stmt ) ĊĊĠĠĠ Ġapply Data ( Ġstmt , Ġdata Ġ) ĊĠĠĠ Ġreturn Ġstmt . executeQuery () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLoop Ġth ru Ġeach Ġdata Ġparameter Ġand Ġassign Ġit Ġto Ġthe Ġstatement ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġapply Data ( Ġstmt : PreparedStatement , Ġdata : Array < Any > Ġ) Ġ{ ĊĠĠĠ Ġfor ( Ġidx Ġin Ġdata . indices Ġ) Ġ{ ĊĠĠĠĠĠ Ġwhen ( Ġdata [ idx ] Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġstmt . setString (( idx Ġ+ Ġ 1 ), Ġdata [ idx ] Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġstmt . setInt (( idx Ġ+ Ġ 1 ), Ġdata [ idx ] Ġas ĠInt ) ĊĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġstmt . set Double (( idx Ġ+ Ġ 1 ), Ġdata [ idx ] Ġas ĠDouble ) ĊĠĠĠĠĠĠĠ Ġis ĠDate Ġ-> Ġstmt . setDate (( idx Ġ+ Ġ 1 ), Ġdata [ idx ] Ġas ĠDate ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġds : Basic DataSource ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġinitializes Ġand Ġreturns Ġp ooled Ġdata Ġsource ĊĠĠĠ Ġfun Ġget DataSource ( Ġconfig : Properties Ġ): Basic DataSource Ġ{ ĊĠĠĠĠĠ Ġif ( Ġds Ġ== Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġds Ġ= ĠBasic DataSource () ĊĠĠĠĠĠĠĠ Ġds ?. url Ġ= Ġconfig . getProperty (" db . url ") ĊĠĠĠĠĠĠĠ Ġds ?. username Ġ= Ġconfig . getProperty (" db . username ") ĊĠĠĠĠĠĠĠ Ġds ?. password Ġ= Ġconfig . getProperty (" db . password ") ĊĠĠĠĠĠĠĠ Ġds ?. driver ClassName Ġ= Ġconfig . getProperty (" db . driver ClassName ") ĊĠĠĠĠĠĠĠ Ġds ?. min Idle Ġ= Ġconfig . getProperty (" db . min Idle "). toInt () ĊĠĠĠĠĠĠĠ Ġds ?. max Idle Ġ= Ġconfig . getProperty (" db . max Idle "). toInt () ĊĠĠĠĠĠĠĠ Ġds ?. max Open Prepared Statements Ġ= Ġconfig . getProperty (" db . max Open Prepared Statements "). toInt () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġreturn Ġds !! ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }