package Ġcom . github . sab ote ur . ticket bookings ystem . ticket booking service . config Ċ Ċ import Ġcom . github . sab ote ur . ticket bookings ystem . ticket booking service . model . Session State Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . context . annotation . Dep ends On Ċ import Ġjava . sql . ResultSet Ċ import Ġjava . sql . SQLException Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ import Ġjava . util . concurrent . Concurrent Map Ċ Ċ @ Configuration Ċ class ĠSession State Storage Config ( ĊĠĠĠ Ġprivate Ġval Ġpostgres Config : ĠPostgres Config Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġ@ Dep ends On ( value Ġ= Ġ[" postgres DataSource "]) ĊĠĠĠ Ġfun Ġsession State Storage (): ĠConcurrent Map < Long , ĠSession State > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstorage Ġ= ĠConcurrent HashMap < Long , ĠSession State >() ĊĠĠĠĠĠĠĠ Ġvar Ġrs : ĠResultSet ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs Ġ= Ġpostgres Config ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Postgres DataSource () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prepareStatement (" SELECT Ġ* ĠFROM Ġsessions Ġs ĠWHERE Ġs . begin _ date Ġ> ĠNOW () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. executeQuery () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġthis Ġmay Ġnot Ġbe Ġthe Ġbest Ġway Ġto Ġget Ġdata Ġfrom ĠDB , Ġshould Ġbe Ġred one Ġl 8 r Ġ( lazy ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( rs . next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠsessionId Ġ= Ġrs . getLong ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession State Ġ= ĠSession State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisOpen For Every one Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Date Ġ= Ġrs . getTimestamp ( 2 ). to LocalDateTime (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Date Ġ= Ġrs . getTimestamp ( 3 ). to LocalDateTime () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstorage [ sessionId ] Ġ= Ġsession State ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Session Ġwith ĠID Ġ= Ġ$ sessionId Ġadded Ġto Ġthe Ġsession Ġstate Ġstorage " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSQLException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error Ġ{ Ġ" Error Ġinitializing Ġsession Ġstate Ġstorage : Ġ${ e . localized Message }" Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs ?. close () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstorage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĠĠĠ Ġ} Ċ Ċ }