package Ġfr . v ours . sm ar tp ro j . services . proj Ċ Ċ import Ġfr . v ours . sm ar tp ro j . model . Proj Ċ import Ġfr . v ours . sm ar tp ro j . util . Basic Crud Ċ import Ġorg . springframework . data . domain . Page Ċ import Ġorg . springframework . data . domain . Page able Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . util .* Ċ Ċ @ Service Ċ class ĠPro j Service ( val Ġproj DAO : ĠPro j DAO ) Ġ: ĠBasic Crud < String , ĠPro j > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetAll ( page able : ĠPage able ): ĠPage < Proj > Ġ= Ġproj DAO . findAll ( page able ) ĊĊĊĠĠĠ Ġoverride Ġfun Ġget ById ( id : ĠString ): ĠOptional < Proj > Ġ= Ġproj DAO . findById ( id ) ĊĊĠĠĠ Ġoverride Ġfun Ġinsert ( obj : ĠPro j ): ĠPro j Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproj DAO . insert ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( id : ĠString , Ġobj : ĠPro j ): ĠPro j Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( proj DAO . exists ById ( id )) Ġ{// check Ġif Ġbook Ġexists Ġbecause Ġthe Ġsave Ġmethod Ġwill Ġinsert Ġa Ġrecord Ġif Ġdoes Ġnot Ġexists ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproj DAO . save ( obj ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġobject Ġ: ĠException (" Proj Ġnot Ġfound ") Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ById ( id : ĠString ): ĠOptional < Proj > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproj DAO . findById ( id ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . if Present Ġ{ Ġproj DAO . delete ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ