package Ġutils Ċ Ċ import ĠEntity Ċ import Ġcolumn Ċ import Ġorg . at te o . e vo . inf lect or . English Ċ import Ġjava . sql . Date Ċ import Ġjava . sql . Time Ċ import Ġjava . sql . Timestamp Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Local Time Ċ import Ġjava . util .* Ċ import Ġkotlin . reflect . K Mutable Property 1 Ċ Ċ fun ĠString . if True ( flag : ĠBoolean ) Ġ= Ġif Ġ( flag ) Ġthis Ġelse Ġ"" Ċ Ċ internal Ġfun ĠString . transform Case ( from : ĠCase , Ġto : ĠCase , Ġto Pl ural Form : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= Ġsplit By Case ( from ). to Mutable List () ĊĠĠĠ Ġif Ġ( to Pl ural Form ) ĊĠĠĠĠĠĠĠ Ġlist [ list . size Ġ- Ġ 1 ] Ġ= ĠEnglish . plural ( list [ list . size Ġ- Ġ 1 ]) ĊĠĠĠ Ġreturn Ġlist . join With Case ( to ) Ċ } Ċ Ċ private Ġfun ĠString . split By Case ( case : ĠCase ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġres Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġvar Ġtemp Ġ= Ġ"" ĊĠĠĠ Ġwhen Ġ( case ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCase . Normal , ĠCase . Pas cal , ĠCase . Camel Ġ-> Ġthis . forEach Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . is UpperCase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres . add ( temp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġ' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ+= Ġc . lowercase Char () ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġres . add ( temp ) Ġ} ĊĠĠĠĠĠĠĠ ĠCase . Snake Ġ-> Ġres . addAll ( this . split ("_ ")) ĊĠĠĠĠĠĠĠ ĠCase . K eb ab Ġ-> Ġres . addAll ( this . split ("- ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġres . apply Ġ{ Ġremove If Ġ{ Ġit . isEmpty () Ġ} Ġ} Ċ } Ċ Ċ private Ġfun ĠList < String >. join With Case ( case : ĠCase ): ĠString Ġ= Ġwhen Ġ( case ) Ġ{ ĊĠĠĠ ĠCase . Normal Ġ-> Ġthis . fold ("") Ġ{ Ġacc , Ġs Ġ-> Ġacc Ġ+ Ġs . capitalize () Ġ+ Ġ' Ġ' Ġ}. trim () ĊĠĠĠ ĠCase . Pas cal Ġ-> Ġthis . fold ("") Ġ{ Ġacc , Ġs Ġ-> Ġacc Ġ+ Ġs . capitalize () Ġ} ĊĠĠĠ ĠCase . Camel Ġ-> Ġthis . reduce Ġ{ Ġacc , Ġs Ġ-> Ġacc Ġ+ Ġs . capitalize () Ġ} ĊĠĠĠ ĠCase . Snake Ġ-> Ġthis . join ToString ("_ ") ĊĠĠĠ ĠCase . K eb ab Ġ-> Ġthis . join ToString ("- ") Ċ } Ċ Ċ private Ġfun ĠString . capitalize (): ĠString Ġ= ĊĠĠĠ Ġreplace First Char Ġ{ Ġit . uppercase Char () Ġ} Ċ Ċ internal Ġenum Ġclass ĠCase Ġ{ ĊĠĠĠ ĠNormal , ĠPas cal , ĠSn ake , ĠCamel , ĠK eb ab Ċ } ĊĊ Ċ internal Ġfun Ġ< T Ġ: ĠAny ?> ĠT . to Sql () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠCalendar Ġ-> Ġ"' ${ SimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss . SS "). format ( time )} '" ĊĠĠĠ Ġis ĠInstant Ġ-> Ġ"' ${ SimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss . SS "). format ( Timestamp ( to Epoch Milli ())) } '" ĊĠĠĠ Ġis ĠString , Ġis ĠDate , Ġis ĠTime , Ġis ĠTimestamp , Ġis ĠLocalDate , Ġis ĠLocalDateTime , Ġis ĠLocal Time , ĊĠĠĠ Ġis Ġkotlinx . datetime . LocalDate , Ġis Ġkotlinx . datetime . LocalDateTime , Ġis Ġkotlinx . datetime . Instant Ġ-> Ġ"' $ this '" ĊĠĠĠ Ġis ĠEntity Ġ-> Ġid . toString () ĊĠĠĠ Ġis ĠList < Any ?> Ġ-> Ġjoin ToString (", Ġ", Ġ" (", Ġ") ") Ġ{ Ġif Ġ( it Ġis ĠString ) Ġ"' $ it '" Ġelse Ġit . toString () Ġ} ĊĠĠĠ Ġis ĠK Mutable Property 1 < *, Ġ*> Ġ-> Ġcolumn . fullName ĊĠĠĠ Ġelse Ġ-> Ġthis . toString () Ċ } Ċ