package Ġorg . m ga id am ak . dao . seat Ċ Ċ import Ġorg . m ga id am ak . dao . Db Repo Ċ import Ġorg . m ga id am ak . dao . Seat Ċ import Ġorg . m ga id am ak . dao . Page Ċ Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . sql . ResultSet Ċ import Ġjava . util . Properties Ċ Ċ /** Ċ Ġ* ĠProduction Ġready Ġrepository Ġon ĠPostgreSQL Ċ Ġ*/ Ċ class ĠDb Seat Repo ( url : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops : ĠProperties Ġ= ĠProperties ()): ĠDb Repo < Seat >( url , Ġprops ), ĠI Seat Repo Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġform ( rs : ĠResultSet ) Ġ= ĠSe at ( rs ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Seat ( seat : ĠSe at ): ĠSe at ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" INSERT ĠINTO Ġseat Ġ( hall , Ġx , Ġy ) ĠVALUES Ġ( ?, Ġ?, Ġ? ) ĠRET UR NING Ġid , Ġhall , Ġx , Ġy " ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDriver Manager . getConnection ( url , Ġprops ). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . prepareStatement ( sql ). use Ġ{ Ġps Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . setInt ( 1 , Ġseat . hall ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . setInt ( 2 , Ġseat . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . setInt ( 3 , Ġseat . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . executeQuery (). use Ġ{ Ġrs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rs . next ()) Ġform ( rs ) Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Se ats ( hall : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage : ĠPage ): ĠCollection < Seat > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" SELECT Ġid , Ġhall , Ġx , Ġy ĠFROM Ġseat ĠWHERE Ġhall =? ĠLIMIT Ġ? ĠOFFSET Ġ? " ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDriver Manager . getConnection ( url , Ġprops ). use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . prepareStatement ( sql ). use Ġ{ Ġps Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . setInt ( 1 , Ġhall ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . setInt ( 2 , Ġpage . limit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . setInt ( 3 , Ġpage . offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps . executeQuery (). use Ġ{ Ġit . collect ( emptyList ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Seat ById ( id : ĠInt ): ĠSe at ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" SELECT Ġid , Ġhall , Ġx , Ġy ĠFROM Ġseat ĠWHERE Ġid Ġ= Ġ? " ĊĠĠĠĠĠĠĠ Ġreturn Ġsingle ( id , Ġsql ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Seat ById ( id : ĠInt ): ĠSe at ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= Ġ" DELETE ĠFROM Ġseat ĠWHERE Ġid Ġ= Ġ? ĠRET UR NING Ġid , Ġhall , Ġx , Ġy " ĊĠĠĠĠĠĠĠ Ġreturn Ġsingle ( id , Ġsql ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ= Ġclear (" DELETE ĠFROM Ġseat ") ĊĊĠĠĠ Ġoverride Ġfun Ġtotal () Ġ= Ġtotal (" SELECT ĠCOUNT (*) ĠFROM Ġseat ") Ċ }