package Ġcom . ro bo h orse . rob op oj ogener ator . generator . utils Ċ Ċ import Ġcom . google . common . base . Case Format Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . errors . JSON Structure Exception Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . errors . Wrong ClassName Exception Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . generator . consts . common . Class Item Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . generator . consts . reserved . Reserved Words Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . generator . consts . templates . Array Items Template Ċ import Ġcom . ro bo h orse . rob op oj ogener ator . generator . consts . templates . Class Template Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠClass Generate Helper Ġ{ ĊĊĠĠĠ Ġfun Ġvalidate Json Content ( content : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJSONObject ( content ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= ĠJSONArray ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Array . length () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson Array . opt JSONObject ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( jsonObject . keySet (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJSON Structure Exception () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJSON Structure Exception () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( array Exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJSON Structure Exception () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate ClassName ( name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( name ?. matches ( NAME _ PATTERN ) Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠWrong ClassName Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Class Body ( class Body : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġclass Body Ġ&& Ġclass Body . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Index Ġ= Ġclass Body . length Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( class Body [ last Index ] Ġ== Ġ'\ n ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclass Body . substring ( 0 , Ġlast Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġclass Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat ClassName ( name : ĠString ) Ġ= Ġupper Case First ( proceed Field ( name )) ĊĊĠĠĠ Ġfun Ġget ClassName With Item Post fix ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( Array Items Template . ITEM _ NAME , Ġupper Case First ( proceed Field ( name ))) ĊĊĠĠĠ Ġfun Ġupper Case First ( name : ĠString ) Ġ= Ġif Ġ( name . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCharacter . toUpperCase ( name [ 0 ]). toString () Ġ+ Ġname . substring ( 1 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Class Field ( name : ĠString ) Ġ= Ġlower Case First ( proceed Field ( name )) ĊĊĠĠĠ Ġfun Ġlower Case First ( name : ĠString ) Ġ= Ġif Ġ( name . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCharacter . toLowerCase ( name [ 0 ]). toString () Ġ+ Ġname . substring ( 1 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Annotations ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Item : ĠClass Item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Annotation : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotation : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimports : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġclass Item . class Annotation Ġ= Ġclass Annotation ĊĠĠĠĠĠĠĠ Ġclass Item . annotation Ġ= Ġannotation ĊĠĠĠĠĠĠĠ Ġclass Item . class Imports . addAll ( imports ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Class Model ( class Body Builder : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( class Body Builder . length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Body Builder . append ( Class Template . FIELD _ K OT LIN _ DOT _ DEFAULT ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Body Builder . delete Char At ( class Body Builder . lastIndexOf ("," )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġproceed Field ( fieldName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobject Name Ġ= ĠfieldName ĊĠĠĠĠĠĠĠ Ġobject Name Ġ= Ġobject Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("[ ^ A - Za - z 0 - 9 ] ". to Regex (), Ġ"_ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" _{ 2 , }". to Regex (), Ġ"_ ") ĊĠĠĠĠĠĠĠ Ġval Ġis Digit First Ġ= Ġ( objectName . isNotBlank () Ġ&& ĠCharacter . is Digit ( objectName [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġobject Name . length Ġ> Ġ 1 Ġ&& Ġobject Name [ 0 ] Ġ== Ġ'_' Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCharacter . is Digit ( objectName [ 1 ])) ĊĠĠĠĠĠĠĠ Ġif Ġ( objectName . isBlank () Ġ|| Ġis Digit First Ġ|| ĠReserved Words . WORDS _ SET . contains ( objectName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Name Ġ= Ġ" json _ member _$ objectName " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobject Name Ġ= Ġobject Name . replace (" ([ A - Z ]) ". to Regex (), Ġ"_ $ 1 ") ĊĠĠĠĠĠĠĠ Ġreturn ĠCase Format . UPPER _ UNDER SCORE . to ( Case Format . UPPER _ C AME L , Ġobject Name ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠNAME _ PATTERN Ġ= Ġ"^ [ a - zA - Z 0 - 9 ]* $ ". to Regex () Ċ