package Ġde . j px 3 . int av est orage . mysql Ċ Ċ import Ġcom . mysql . cj . jdbc . Driver Ċ import Ġde . j px 3 . int av est orage . Jdbc Back ed Storage Gateway Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . sql . PreparedStatement Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠStorage Ġgateway Ġbetween ĠInt ave Ġand Ġa ĠMySQL Ġdatabase . Ċ Ġ* Ċ Ġ* Ġ@ property Ġconfig ĠThe Ġ[ MySql Configuration ]. Ċ Ġ*/ Ċ class ĠMySql Storage Gateway ( ĊĠĠĠ Ġprivate Ġval Ġconfig : ĠMySql Configuration Ċ ) Ġ: ĠJdbc Back ed Storage Gateway Ġ{ ĊĠĠĠ Ġprivate Ġval Ġconnection Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ ĠDriver Manager . register Driver ( Driver ()) ĊĠĠĠĠĠĠĠ ĠDriver Manager . getConnection ( config . uri , Ġconfig . user , Ġconfig . password ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprepare Table () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprepare Table () Ġ{ ĊĠĠĠĠĠĠĠ Ġconnection . createStatement (). execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġint ave _ storage Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ĠCHAR ( 3 6 ) ĠPRIMARY ĠKEY ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĠMED IUM BLOB ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ used ĠBIGINT ĠNOT ĠNULL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Storage Query (): ĠPreparedStatement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconnection . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġint ave _ storage ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġid Ġ= Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Storage Query (): ĠPreparedStatement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconnection . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġint ave _ storage ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVALUES ( ?, Ġ?, Ġ? ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠON ĠD UP LIC ATE ĠKEY ĠUPDATE ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠVALUES ( data ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ used Ġ= ĠVALUES ( last _ used ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Entries Query (): ĠPreparedStatement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconnection . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDELETE ĠFROM Ġint ave _ storage ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġlast _ used Ġ< Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexpiration Threshold (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTimeUnit . DAYS . to Millis ( config . expiration Threshold ) ĊĠĠĠ Ġ} Ċ } Ċ