package Ġcom . pack t . kotlin quickstart . dictionary . data Ċ Ċ import Ġjava . sql . PreparedStatement Ċ import Ġjava . sql . ResultSet Ċ import Ġjava . sql . Statement Ċ Ċ class ĠRepository ( private Ġval Ġdb Connection Provider : ĠDb Connection Provider Ġ= ĠDb Connection Provider . default Provider ) Ġ{ ĊĊĠĠĠ Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute Statement Ġ{ Ġexecute Update (" CREATE ĠV IRTUAL ĠTABLE ĠIF ĠNOT ĠEXISTS Ġentries ĠUSING ĠF TS 4 Ġ( entry , Ġexplanation )") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Data Loaded (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexecute Statement Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexecute Query (" SELECT ĠCOUNT (*) ĠFROM Ġentries ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . next () Ġ&& Ġresult . getInt ( 1 ) Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch ( search Term : ĠString , Ġexact Match : ĠBoolean Ġ= Ġtrue ): ĠList < Dictionary Entry > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprepare Statement (" SELECT Ġ* ĠFROM Ġentries ĠWHERE Ġentry ĠMATCH Ġ? ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset String ( 1 , Ġif Ġ( exact Match ) Ġsearch Term Ġelse Ġ"$ search Term * ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Query (). use Ġ{ ĠresultSet Ġ-> ĠresultSet . get Entries () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< T > Ġexecute Statement ( block : ĠStatement . () Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Connection Provider . getConnection (). use Ġ{ Ġconn Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . createStatement (). use Ġ{ Ġstmt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstmt . block () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< T > Ġprepare Statement ( sql : ĠString , Ġblock : ĠPreparedStatement . () Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġdb Connection Provider . getConnection (). use Ġ{ Ġconn Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . prepareStatement ( sql ). use Ġ{ Ġstmt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstmt . block () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠResultSet . get Entries (): ĠList < Dictionary Entry > Ġ{ ĊĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Dictionary Entry >() ĊĠĠĠ Ġwhile Ġ( this . next ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġterm Ġ= Ġthis . getString ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġexplanation Ġ= Ġthis . getString ( 2 ) ĊĠĠĠĠĠĠĠ Ġentries . add ( Dictionary Entry ( term , Ġexplanation )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġentries Ċ }