package Ġcom . example . happy b aby . utils . k ts Ċ Ċ import Ġjava . io . File Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . util .* Ċ Ċ val Ġdatabase Ġ= Ġ" happy b aby " Ċ val ĠPACK AG ENAME Ġ= Ġ" com . example .${ database }. repo " Ċ val ĠENT ITY PACKAGE Ġ= Ġ" com . example .${ database }. entity " Ċ main () Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġvar Ġstart Ġ= ĠDate (). time ĊĠĠĠ Ġprintln (" å¼Ģå§ĭ çĶŁæĪĲ Ġ") ĊĠĠĠ Ġ// Ġ é¡¹çĽ® çĽ®å½ķ ĊĠĠĠ Ġval ĠBASE DIR Ġ= ĠSystem . getProperty (" user . dir "). replace (" com \\ example \\ ${ database }\\ utils \\ k ts ", Ġ"") ĊĠĠĠ Ġprintln (" å¼Ģå§ĭ çĶŁæĪĲ Ġ" Ġ+ ĠBASE DIR ) ĊĠĠĠ Ġ// Ġ è¦ģ çĶŁæĪĲ çļĦ åĮħ çĽ®å½ķ ĊĠĠĠ Ġval Ġout Dir Ġ= ĠBASE DIR Ġ+ ĠPACK AG ENAME . replace (".", Ġ"/") Ġ+ Ġ"/" ĊĠĠĠ Ġval Ġent Dir Ġ= ĠBASE DIR Ġ+ ĠENT ITY PACKAGE . replace (".", Ġ"/") Ġ+ Ġ"/" ĊĠĠĠ Ġprintln (" å¼Ģå§ĭ çĶŁæĪĲ Ġ" Ġ+ Ġout Dir Ġ+ Ġ" ----------- " Ġ+ Ġent Dir ) ĊĠĠĠ Ġvar Ġfiles Names Ġ= Ġget FileName ( ent Dir ) ĊĠĠĠ Ġfiles Names ?. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠclassName Ġ= Ġit Ġ+ Ġ" Repo " ĊĠĠĠĠĠĠĠ Ġprintln (" æŃ£åľ¨ è½¬æį¢ è¡¨ : Ġ" Ġ+ ĠclassName Ġ+ Ġ". kt ") ĊĠĠĠĠĠĠĠ Ġvar Ġentity Name Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġvar Ġout Ġ= ĠFile ( out Dir , Ġ"$ className . kt "). print Writer () ĊĠĠĠĠĠĠĠ Ġgenerate ( out , ĠclassName , Ġentity Name ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġend Ġ= ĠDate (). time ĊĠĠĠ Ġvar Ġtime Ġ= Ġend Ġ- Ġstart ĊĠĠĠ Ġvar Ġhour Ġ= Ġtime Ġ/ Ġ( 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 ) ĊĠĠĠ Ġvar Ġminute Ġ= Ġ( time Ġ- Ġhour Ġ* Ġ( 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 )) Ġ/ Ġ( 1 0 0 0 Ġ* Ġ 6 0 ) ĊĠĠĠ Ġvar Ġsecond Ġ= Ġ( time Ġ- Ġhour Ġ* Ġ( 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 ) Ġ- Ġminute Ġ* Ġ( 1 0 0 0 Ġ* Ġ 6 0 )) Ġ/ Ġ 1 0 0 0 ĊĠĠĠ Ġprintln (" è½¬æį¢ å®ĮæĪĲ , åħ± å®ĮæĪĲ " Ġ+ Ġfiles Names ?. size Ġ+ Ġ" ä¸ª ç±» , ĠçĶ¨ æĹ¶ " Ġ+ Ġhour Ġ+ Ġ" æĹ¶ " Ġ+ Ġminute Ġ+ Ġ" åĪĨ " Ġ+ Ġsecond Ġ+ Ġ" ç§Ĵ ") ĊĠĠĠ ĠSystem . exit ( 0 ) Ċ } ĊĊ Ċ fun ĠH ump To Underline ( para : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġsb Ġ= ĠStringBuilder ( para ); ĊĠĠĠ Ġvar Ġtemp Ġ= Ġ 0 ;// å®ļä½į ĊĠĠĠ Ġif Ġ(! para . contains ("_ ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠ Ġpara . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Character . is UpperCase ( it ) Ġ&& Ġi Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . insert ( i Ġ+ Ġtemp , Ġ"_ "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ+= Ġ 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } ĊĊ Ċ fun Ġgenerate ( out : ĠPrintWriter , ĠclassName : ĠString , Ġentity Name : ĠString ) Ġ{ ĊĠĠĠ Ġout . println (" package Ġ$ PACK AG ENAME ") ĊĠĠĠ Ġout . println ("") ĊĠĠĠ Ġout . println ("") ĊĠĠĠ Ġout . println ("") ĊĠĠĠ Ġout . println (" import Ġorg . springframework . data . jpa . repository . Jpa Repository ") ĊĠĠĠ Ġout . println (" import Ġorg . springframework . stereotype . Repository ") ĊĠĠĠ Ġout . println (" import Ġorg . springframework . data . jpa . repository . Query ") ĊĠĠĠ Ġout . println (" import Ġorg . springframework . data . repository . query . Param ") ĊĠĠĠ Ġout . println (" import Ġcom . example .${ database }. entity .$ entityName ; ") ĊĠĠĠ Ġout . println ("") ĊĠĠĠ Ġout . println ("@ Repository (\ "" Ġ+ ĠclassName Ġ+ Ġ"\ ") ") ĊĠĠĠ Ġout . println (" interface Ġ$ className Ġ: Jpa Repository < ${ entityName }, Long >{ ") ĊĊĠĠĠ Ġout . println (" ĠĠ Ġ@ Query ( value Ġ= Ġ\" SELECT Ġ* ĠFROM Ġ" Ġ+ ĠH ump To Underline ( entityName ) Ġ+ Ġ" Ġwhere Ġid Ġin Ġ(? 1 )\ ", Ġnative Query Ġ= Ġtrue )") ĊĠĠĠ Ġout . println (" ĠĠ Ġopen Ġfun ĠfindAll ById s (@ Param (\" ids \") Ġids : ĠString ): ĠList < ${ entityName }> ?") ĊĠĠĠ Ġout . println (" ĠĠ Ġ@ Query ( value Ġ= Ġ\" SELECT Ġ* ĠFROM Ġ" Ġ+ ĠH ump To Underline ( entityName ) Ġ+ Ġ" Ġwhere Ġ? 1 Ġ= Ġ? 2 \", Ġnative Query Ġ= Ġtrue )") ĊĠĠĠ Ġout . println (" ĠĠ Ġopen Ġfun Ġfind Entity By Eq (@ Param (\" one \") Ġone : ĠString , Ġ@ Param (\" two \") Ġtwo : ĠString ): List < ${ entityName }> ?") ĊĠĠĠ Ġout . println ("") ĊĠĠĠ Ġout . println ("") ĊĠĠĠ Ġvar Ġfilter Ġ= ĠarrayOf (" Scope ", Ġ" Message ") ĊĠĠĠ Ġif Ġ(! filter . contains ( entityName )) Ġ{ ĊĠĠĠĠĠĠĠ Ġout . println (" ĠĠ Ġfun Ġfind ByName ( name : ĠString ): Ġ${ entityName }? ") ĊĠĠĠĠĠĠĠ Ġout . println (" ĠĠ Ġfun Ġdelete ByName ( name : ĠString ): ĠBoolean ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġout . println (" }") ĊĠĠĠ Ġout . flush () Ċ } Ċ Ċ fun Ġget FileName ( path : ĠString ): ĠList < String >? Ġ{ ĊĠĠĠ Ġvar Ġfile Ġ= ĠFile ( path ) ĊĠĠĠ Ġvar Ġfiles : ĠArray < File >? Ġ= Ġfile . list Files () Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġvar Ġfile Names Ġ= Ġfiles !!. filter Ġ{ Ġit . isFile Ġ&& Ġ(( it . name . indexOf (". kt ") Ġ!= Ġ- 1 Ġ|| Ġit . name . indexOf (". java ") Ġ!= Ġ- 1 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĠlistOf ( it . name . replace (". kt ", Ġ""). replace (". java ", Ġ"")) Ġ} ĊĠĠĠ Ġreturn Ġfile Names . filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit Ġ!= Ġ" Base Entity " ĊĠĠĠ Ġ} Ċ Ċ } Ċ