package Ġcom . star schema . br illi ant . table aut rack er . exception Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . Missing Kotlin Parameter Exception Ċ import Ġcom . microsoft . sql server . jdbc . SQL Server Exception Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . features . Status Pages Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . response . respond Ċ import Ġorg . jetbrains . ex posed . exceptions . Ex posed SQLException Ċ import Ġjavax . security . auth . message . Auth Exception Ċ Ċ enum Ġclass ĠError ( private Ġval Ġregex : ĠString , Ġprivate Ġval Ġmessage Template : ĠString ) Ġ{ ĊĠĠĠ ĠD UP LIC ATE _ ERROR _ MSS QL (" The Ġduplicate Ġkey Ġvalue Ġis Ġ\\ (( . +) \\ )", Ġ" Already Ġexists : Ġ{ param } "), ĊĠĠĠ ĠD UP LIC ATE _ ERROR _ EXPOSE D (" Detail : ĠKey Ġ. + \\ = \\ (( . +) \\ ) Ġalready Ġexists ", Ġ" Already Ġexists : Ġ{ param } "), ĊĠĠĠ ĠREQUIRED _ PARAM _ ERROR (" Instantiation Ġof Ġ.* Ġvalue Ġfailed Ġfor ĠJSON Ġproperty Ġ([ a - zA - Z ]+) Ġdue Ġto Ġmissing ", Ġ" Parameter Ġ{ param } Ġis Ġrequired !"); ĊĊĠĠĠ Ġfun Ġmatch ( message : ĠString ): ĠString Ġ= Ġregex . to Regex ( Regex Option . IGNORE _ CASE ). find ( message )?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġmessage Template . replace ("{ param }", Ġit . group Values . last ()) ĊĠĠĠ Ġ} Ġ?: Ġmessage Ċ } Ċ Ċ fun ĠString . isError ( err : ĠError ) Ġ= Ġerr . match ( this ) Ċ Ċ fun Ġexception Handler (): ĠStatus Pages . Configuration . () Ġ-> ĠUnit Ġ Ġ= Ġ{ ĊĠĠĠ Ġexception < SQL Server Exception > Ġ{ Ġcause Ġ-> ĊĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest , ĠError . DUPLIC ATE _ ERROR _ MSS QL . match ( cause . message Ġ?: Ġ" Unknown Ġdatabase Ġerror Ġoccurred ! ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġexception < Ex posed SQLException > Ġ{ Ġcause Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġcause . message ?. isError ( Error . DUPLIC ATE _ ERROR _ MSS QL )?. isError ( Error . DUPLIC ATE _ ERROR _ EXPOSE D ) Ġ?: Ġ" Unknown Ġdatabase Ġerror Ġoccurred !" ĊĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest , Ġmessage ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġexception < Missing Kotlin Parameter Exception > Ġ{ Ġcause Ġ-> ĊĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest , ĠError . REQUIRED _ PARAM _ ERROR . match ( cause . message Ġ?: Ġ" Unknown Ġrequest Ġerror Ġoccurred ! ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġexception < IllegalArgumentException > Ġ{ Ġcause Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġcause . message Ġ?: Ġ" Unknown Ġerror Ġoccurred !" ĊĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest , Ġmessage ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġexception < Auth Exception > Ġ{ Ġcause Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġcause . message Ġ?: Ġcause . cause ?. message Ġ?: Ġ" Unauthorized !" ĊĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Unauthorized , Ġmessage ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġexception < Throwable > Ġ{ Ġcause Ġ-> ĊĠĠĠĠĠĠĠ Ġcause . message ?. let Ġ{ Ġcall . respond ( HttpStatusCode . InternalServerError , Ġit ) Ġ} Ġ?: ĊĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . InternalServerError , Ġ" Unknown Ġerror Ġoccurred ! ĠPlease Ġcontact Ġyour Ġserver Ġadministrator !") ĊĠĠĠĠĠĠĠ Ġthrow Ġcause ĊĠĠĠ Ġ} Ċ }