package Ġio . the . orm . internal Ċ Ċ import Ġio . r 2 dbc . spi . R 2 dbc Data Integr ity Violation Exception Ċ import Ġio . the . orm . Data Integr ity Violation Exception Ċ import Ġio . the . orm . Unique Constraint Vi olated Exception Ċ import Ġio . vertx . pg client . Pg Exception Ċ import Ġjava . util . Locale Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Property 1 Ċ import Ġkotlin . reflect . full . member Properties Ċ Ċ internal Ġclass ĠException Inspector < T Ġ: ĠAny >( private Ġval Ġtable : ĠTable , Ġk Class : ĠK Class < T >) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfield Names Properties Ġ= Ġk Class . member Properties . associate By Ġ{ Ġit . name . lowercase ( Locale . getDefault ()) Ġ} ĊĠĠĠ Ġfun Ġr 2 dbc Data Integr ity Violation Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠR 2 dbc Data Integr ity Violation Exception , ĊĠĠĠĠĠĠĠ Ġinstance : ĠT ĊĠĠĠ Ġ): ĠData Integr ity Violation Exception Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfield Ġ= Ġcompute Affected Field ( e . message !! ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġfield ?. invoke ( instance ) ĊĠĠĠĠĠĠĠ Ġreturn ĠUnique Constraint Vi olated Exception ( e . message !! , Ġe . cause , Ġfield , Ġvalue ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompute Affected Field ( message : ĠString ): ĠK Property 1 < T , Ġ* >? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlower Case d Message Ġ= Ġmessage . lowercase ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġval Ġfield String Ġ= Ġwhen Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġh 2 : ĠUnique Ġindex Ġor Ġprimary Ġkey Ġviolation : Ġ" PUBLIC . CONSTRAINT _ INDEX _ 4 ĠON ĠPUBLIC . USERS ( EMAIL ) ĠVALUES Ġ 1 "; ĠSQL Ġstatement : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlower Case d Message . contains (" unique Ġindex Ġor Ġprimary Ġkey Ġviolation ") Ġ-> Ġlower Case d Message . substring After (" public .${ table . name } (" ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring Before (" )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġp sql : Ġduplicate Ġkey Ġvalue Ġviol ates Ġunique Ġconstraint Ġ" users _ email _ key " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlower Case d Message . startsWith (" duplicate Ġkey Ġvalue Ġviol ates Ġunique Ġconstraint ") Ġ-> Ġlower Case d Message . substring After ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" constraint Ġ\" ${ table . name }_ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring Before ("_ key \" ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfield Names Properties [ field String ?. lowercase ( Locale . getDefault ()) ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpg Exception ( e : ĠP g Exception , Ġinstance : ĠT ): ĠData Integr ity Violation Exception Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfield Ġ= Ġcompute Affected Field ( e . errorMessage ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġfield ?. invoke ( instance ) ĊĠĠĠĠĠĠĠ Ġreturn ĠUnique Constraint Vi olated Exception ( e . errorMessage , Ġe . cause , Ġfield , Ġvalue ) ĊĊĠĠĠ Ġ} Ċ } Ċ