package Ġcom . ro bo h orse . rob op oj ogener ator . utils Ċ Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . properties . Class Enum Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . properties . Class Item Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . properties . templates . Class Template Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . models . Field Model Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . models . Generation Model Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . models . Visibility Ċ Ċ internal Ġclass ĠClass Template Helper ( ĊĠĠĠ Ġprivate Ġval Ġclass Generate Helper : ĠClass Generate Helper Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Setter ( field : ĠString , Ġtype : ĠString ?) Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠ ĠClass Template . SET TER , ĊĠĠĠĠĠĠĠ Ġclass Generate Helper . upper Case First ( field ), ĊĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠ Ġclass Generate Helper . lower Case First ( field ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate Getter ( field : ĠString , Ġtype : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Class Enum . BOOLEAN . primitive . equals ( type , Ġignore Case Ġ= Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . GET TER _ BOOLEAN Ġelse ĠClass Template . GET TER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Generate Helper . upper Case First ( field ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Generate Helper . lower Case First ( field ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate ToString ( class Item : ĠClass Item ) Ġ= ĊĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . TO _ STRING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item . className , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate To St ing Item ( class Item ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate To St ing Item ( class Item : ĠClass Item ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġis First Field Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġfield ToString Statement Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġclass Item . class Fields . keys ĊĠĠĠĠĠĠĠ Ġfor Ġ( field Ġin Ġfields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield ToString Statement . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . TO _ STRING _ LINE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Generate Helper . lower Case First ( field ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Generate Helper . format Class Field ( field ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First Field ) Ġ"" Ġelse Ġ"," ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First Field ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Field Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfield ToString Statement . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Field ( model : ĠField Model ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfield Declaration Ġ= Ġif Ġ( model . visibility Ġ== ĠVisibility . NONE ) ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . FIELD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . class Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName Formatted ĊĠĠĠĠĠĠĠ Ġ) Ġelse Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . FIELD _ WITH _ VIS IBILITY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . visibility . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . class Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName Formatted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Annotated Field ( model . fieldName , Ġmodel . annotation , Ġfield Declaration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Auto Value Field ( model : ĠField Model ) Ġ= ĊĠĠĠĠĠĠĠ Ġcreate Annotated Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName , Ġmodel . annotation , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . FIELD _ AUTO _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . class Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName Formatted ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate Kotlin Data Class Field ( generation Model : ĠGeneration Model , Ġmodel : ĠField Model ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( generation Model . kotlin Nullable Fields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Annotated Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName , Ġmodel . annotation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . FIELD _ K OT LIN _ DTO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName Formatted , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . class Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). replace ("> ", Ġ" ?> ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Annotated Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName , Ġmodel . annotation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . FIELD _ K OT LIN _ DTO _ NON _ NULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName Formatted , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . class Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Java Record Class Field ( model : ĠField Model ) Ġ= ĊĠĠĠĠĠĠĠ Ġcreate Annotated Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName , Ġmodel . annotation , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . FIELD _ JAVA _ RECORD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . class Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . fieldName Formatted ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate Class Body ( class Item : ĠClass Item , Ġclass Body : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠ Ġcreate Class Body Annotated ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ BODY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item . className , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Body ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate Type Adapter ( class Item : ĠClass Item ) Ġ= ĊĠĠĠĠĠĠĠ ĠString . format ( Class Template . TYPE _ ADAPTER , Ġclass Item . className ) ĊĊĠĠĠ Ġfun Ġcreate Class Body Abstract ( class Item : ĠClass Item , Ġclass Body : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠ Ġcreate Class Body Annotated ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ BODY _ AB STR ACT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item . className , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Body ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate Class Body Records ( class Item : ĠClass Item , Ġclass Body : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠ Ġcreate Class Body Annotated ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ BODY _ RECORD S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item . className , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Body ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate Class Body Kotlin Data Class ( ĊĠĠĠĠĠĠĠ Ġclass Item : ĠClass Item , ĊĠĠĠĠĠĠĠ Ġclass Body : ĠString ?, ĊĠĠĠĠĠĠĠ Ġparcel able : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ= Ġcreate Class Body Annotated ( ĊĠĠĠĠĠĠĠ Ġclass Item , ĊĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parcel able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ BODY _ K OT LIN _ DTO _ PAR CEL ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ BODY _ K OT LIN _ DTO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item . className , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Body ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġcreate Class Item ( ĊĠĠĠĠĠĠĠ Ġpackage Path : ĠString ?, ĊĠĠĠĠĠĠĠ Ġimports : ĠString ?, ĊĠĠĠĠĠĠĠ Ġbody : ĠString ? ĊĠĠĠ Ġ) Ġ= Ġif Ġ( package Path ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġimports Ġ&& Ġimports . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ ROOT _ IMPORT S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimports , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ ROOT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ( Class Template . CLASS _ ROOT _ NO _ PACKAGE , Ġbody ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Class Item Without Sem icolon ( ĊĠĠĠĠĠĠĠ Ġpackage Path : ĠString ?, ĊĠĠĠĠĠĠĠ Ġimports : ĠString ?, ĊĠĠĠĠĠĠĠ Ġbody : ĠString ? ĊĠĠĠ Ġ) Ġ= Ġif Ġ( package Path ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġimports Ġ&& Ġimports . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ ROOT _ IMPORT S _ WITHOUT _ SE MIC OL ON , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimports , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ ROOT _ WITHOUT _ SE MIC OL ON , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ( Class Template . CLASS _ ROOT _ NO _ PACKAGE , Ġbody ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Class Body Annotated ( ĊĠĠĠĠĠĠĠ Ġclass Item : ĠClass Item , ĊĠĠĠĠĠĠĠ Ġclass Item Body : ĠString ĊĠĠĠ Ġ) Ġ= Ġif Ġ( class Item . class Annotation ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . CLASS _ BODY _ AN NOT ATED , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item . class Annotation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item Body ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġclass Item Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Annotated Field ( ĊĠĠĠĠĠĠĠ Ġname : ĠString ?, ĊĠĠĠĠĠĠĠ Ġannotation : ĠString ?, ĊĠĠĠĠĠĠĠ Ġfield : ĠString ĊĠĠĠ Ġ) Ġ= Ġif Ġ( null Ġ!= Ġannotation Ġ&& Ġannotation . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Template . FIELD _ AN NOT ATED , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( annotation , Ġname ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfield ĊĠĠĠ Ġ} Ċ } Ċ