/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠSh rey as ĠPat il Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġdev . sh rey as pat il . not y . api . controller Ċ Ċ import Ġdev . sh rey as pat il . not y . api . exception . BadRequest Exception Ċ import Ġdev . sh rey as pat il . not y . api . exception . Note NotFoundException Ċ import Ġdev . sh rey as pat il . not y . api . exception . Unauthorized Activity Exception Ċ import Ġdev . sh rey as pat il . not y . api . model . request . Note Request Ċ import Ġdev . sh rey as pat il . not y . api . model . response . Note Ċ import Ġdev . sh rey as pat il . not y . api . model . response . Note Response Ċ import Ġdev . sh rey as pat il . not y . api . model . response . Notes Response Ċ import Ġdev . sh rey as pat il . not y . data . dao . Note Dao Ċ import Ġdev . sh rey as pat il . not y . data . model . User Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠController Ġfor Ġnotes Ġmanagement Ċ Ġ*/ Ċ @ Singleton Ċ class ĠNotes Controller Ġ@ Inject Ġconstructor ( private Ġval Ġnote Dao : ĠNote Dao ) Ġ{ ĊĊĠĠĠ Ġfun Ġget Notes ByUser ( user : ĠUser ): ĠNotes Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotes Ġ= Ġnote Dao . getAll ByUser ( user . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotes Response . success ( notes . map Ġ{ ĠNote ( it . id , Ġit . title , Ġit . note , Ġit . created ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ua e : ĠUnauthorized Activity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotes Response . un authorized ( ua e . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Note ( user : ĠUser , Ġnote : ĠNote Request ): ĠNote Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Title Ġ= Ġnote . title . trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Text Ġ= Ġnote . note . trim () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Note OrThrow Exception ( note Title , Ġnote Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Id Ġ= Ġnote Dao . add ( user . id , Ġnote Title , Ġnote Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . success ( note Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( bre : ĠBadRequest Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . failed ( bre . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Note ( user : ĠUser , Ġnote Id : ĠString , Ġnote : ĠNote Request ): ĠNote Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Title Ġ= Ġnote . title . trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Text Ġ= Ġnote . note . trim () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Note OrThrow Exception ( note Title , Ġnote Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Note Exists OrThrow Exception ( note Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Owner OrThrow Exception ( user . id , Ġnote Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġnote Dao . update ( note Id , Ġnote Title , Ġnote Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . success ( id ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ua e : ĠUnauthorized Activity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . un authorized ( ua e . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( bre : ĠBadRequest Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . failed ( bre . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( n fe : ĠNote NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . not Found ( n fe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Note ( user : ĠUser , Ġnote Id : ĠString ): ĠNote Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Note Exists OrThrow Exception ( note Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Owner OrThrow Exception ( user . id , Ġnote Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( note Dao . delete ById ( note Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . success ( note Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . failed (" Error ĠOcc urred ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ua e : ĠUnauthorized Activity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . un authorized ( ua e . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( bre : ĠBadRequest Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . failed ( bre . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( n fe : ĠNote NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNote Response . not Found ( n fe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Note Exists OrThrow Exception ( note Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! note Dao . exists ( note Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNote NotFoundException (" Note Ġnot Ġexist Ġwith ĠID Ġ'$ note Id '") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Owner OrThrow Exception ( userId : ĠString , Ġnote Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! note Dao . is Note Owned ByUser ( note Id , ĠuserId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnauthorized Activity Exception (" Access Ġdenied ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Note OrThrow Exception ( title : ĠString , Ġnote : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( title . isBlank () Ġor Ġnote . isBlank ()) Ġ-> Ġ" Title Ġand ĠNote Ġshould Ġnot Ġbe Ġblank " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( title . length Ġ! in Ġ( 4 .. 3 0 )) Ġ-> Ġ" Title Ġshould Ġbe Ġof Ġmin Ġ 4 Ġand Ġmax Ġ 3 0 Ġcharacter Ġin Ġlength " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthrow ĠBadRequest Exception ( message ) ĊĠĠĠ Ġ} Ċ }