package Ġde . dd k fm . plan 4 ba . controller Ċ Ċ import Ġde . dd k fm . plan 4 ba . models .* Ċ import Ġde . dd k fm . plan 4 ba . models . database . Hibernate L ecture Ċ import Ġde . dd k fm . plan 4 ba . models . database . Hibernate User Ċ import Ġde . dd k fm . plan 4 ba . utils .* Ċ import Ġspark . Request Ċ import Ġspark . Response Ċ import Ġjavax . ws . rs .* Ċ Ċ @ Path ("/ lect ures ") Ċ class ĠL ecture Controller ( req Ġ: ĠRequest , Ġresp Ġ: ĠResponse ) Ġ: ĠController Interface ( req Ġ= Ġreq , Ġresp Ġ= Ġresp ) Ġ{ ĊĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġ@ Path ("") ĊĠĠĠ Ġfun Ġall L ect ures (@ QueryParam (" userId ") ĠuserId Ġ: ĠInt ) Ġ: ĠList < L ecture >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHibernate Utils . do In Hibernate Ġ{ Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwhere Ġ= Ġ" 1 = 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( userId Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Ġ+= Ġ" AND Ġuser _ id Ġ= Ġ$ userId " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlect ures Ġ= Ġsession . list < Hibernate L ecture >( where )?. map Ġ{ Ġit . to Model () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( userId Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġsession . single < Hibernate User >( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . last L ecture Call Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġsave Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do In Hibernate Ġlect ures ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DELETE ĊĠĠĠ Ġ@ Path ("") ĊĠĠĠ Ġfun Ġdelete L ect ures (@ QueryParam (" userId ") ĠuserId Ġ: ĠInt ) Ġ: ĠOK ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHibernate Utils . do In Hibernate Ġ{ Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaffected Rows Ġ= Ġsession . createQuery (" Delete ĠFrom ĠHibernate L ecture ĠWHERE Ġuser _ id Ġ= Ġ$ userId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. executeUpdate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOK (" affected Ġrows : Ġ$ affected Rows ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġ@ Path ("/ : id ") ĊĠĠĠ Ġfun Ġget L ecture (@ Path Param (" id ") Ġid Ġ: ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ QueryParam (" userId ") ĠuserId Ġ: ĠInt ) Ġ: ĠL ecture ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlect ure Ġ= Ġin Session Ġ{ Ġit . single < Hibernate L ecture >( id ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( lecture Ġ== Ġnull Ġ|| Ġ( userId Ġ!= Ġ- 1 Ġ&& Ġlect ure . user . id Ġ!= ĠuserId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotFound () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlect ure . to Model () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PUT ĊĠĠĠ Ġ@ Path ("") ĊĠĠĠ Ġfun Ġcreate L ecture ( lecture Ġ: ĠL ecture ) Ġ: ĠL ecture ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhi bernate L ecture Ġ= Ġlect ure . to Hibernate < Hibernate L ecture >() ĊĠĠĠĠĠĠĠ Ġin Session Ġ{ session Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġsave Ġhi bernate L ecture ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhi bernate L ecture . to Model () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ POST ĊĠĠĠ Ġ@ Path ("/ : id ") ĊĠĠĠ Ġfun Ġupdate L ecture ( lecture Ġ: ĠL ecture , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Path Param (" id ") Ġid Ġ: ĠInt ) Ġ: ĠL ecture ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting L ecture Ġ= Ġin Session Ġ{ Ġit . single < Hibernate L ecture >( id ) Ġ} ĊĠĠĠĠĠĠĠ Ġif ( existing L ecture Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotFound (" L ecture Ġdoes Ġnot Ġexist ") ĊĠĠĠĠĠĠĠ Ġexisting L ecture . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Day Ġ= Ġlect ure . all Day ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġlect ure . color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġlect ure . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġlect ure . start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġlect ure . end ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam Ġ= Ġlect ure . exam ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin structor Ġ= Ġlect ure . in structor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre marks Ġ= Ġlect ure . remarks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Ġ= Ġlect ure . room ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs room Ġ= Ġlect ure . s room ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġlect ure . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated Ġ= Ġlect ure . deprecated ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġin Session Ġ{ Ġit . single < Hibernate User >( lecture . userId ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNotFound (" user Ġwith Ġid Ġ${ lecture . userId } Ġdoes Ġnot Ġexist ") ĊĠĠĠĠĠĠĠ Ġexisting L ecture . user Ġ= Ġuser ĊĊĠĠĠĠĠĠĠ Ġin Session Ġ{ Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġupdate Ġexisting L ecture ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġexisting L ecture . to Model () ĊĠĠĠ Ġ} Ċ }