package Ġcom . kp stv . processor . generators . auto Ċ Ċ import Ġcom . kp stv . bindings . Converter Type Ċ import Ġcom . kp stv . processor . abstract . Base Auto Generator Ċ import Ġcom . kp stv . processor . utils . Auto Generator DataType Ċ import Ġcom . kp stv . processor . utils . Auto Generator Type Ċ import Ġcom . kp stv . processor . utils . Consts Ċ import Ġcom . squareup . jav ap o et .* Ċ import Ġjavax . lang . model . element . Modifier Ċ Ċ class ĠType Converter Processor ( ĊĠĠĠ Ġoverride Ġval Ġtype Spec Builder : ĠType Spec . Builder , ĊĠĠĠ Ġoverride Ġval Ġserializer Type : ĠConverter Type , ĊĠĠĠ Ġprivate Ġval Ġfirst ClassType : ĠClass Name , ĊĠĠĠ Ġprivate Ġval Ġenum List : ĠList < TypeName >, ĊĠĠĠ Ġgenerator DataType : ĠAuto Generator DataType , ĊĠĠĠ Ġsecond ClassType : ĠType Name ? Ġ= Ġnull , Ċ ) Ġ: ĠBase Auto Generator () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġconverter Type Ġ= ĠAuto Generator Type . ROOM ĊĊĠĠĠ Ġoverride Ġval Ġbase DataType : ĠType Name Ġ= Ġwhen ( generator DataType ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAuto Generator DataType . DATA Ġ-> Ġfirst ClassType ĊĠĠĠĠĠĠĠ ĠAuto Generator DataType . LIST Ġ-> ĠParameter ized TypeName . get ( Consts . CLASS NAME _ LIST , Ġfirst ClassType ) ĊĠĠĠĠĠĠĠ ĠAuto Generator DataType . MAP Ġ-> ĠParameter ized TypeName . get ( Consts . CLASS NAME _ MAP , Ġsecond ClassType , Ġfirst ClassType ) ĊĠĠĠĠĠĠĠ ĠAuto Generator DataType . PAIR Ġ-> ĠParameter ized TypeName . get ( Consts . CLASS NAME _ PAIR , Ġsecond ClassType , Ġfirst ClassType ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġencode Builder (): ĠMethod Spec . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMethod Spec . method Builder ( Consts . to Convert Method Ġ+ Ġfirst ClassType . simple Name ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( Modifier . PUBLIC , ĠModifier . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( Consts . CLASS NAME _ TYPE CONVER TER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( Consts . CLASS NAME _ NULL ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Parameter ( base DataType , ĠConst s . converter Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. returns ( String :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecode Builder (): ĠMethod Spec . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMethod Spec . method Builder ( Consts . from Convert Method Ġ+ Ġfirst ClassType . simple Name ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( Modifier . PUBLIC , ĠModifier . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( Consts . CLASS NAME _ TYPE CONVER TER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( Consts . CLASS NAME _ NULL ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Parameter ( String :: class . java , ĠConst s . converter Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. returns ( base DataType ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . create () ĊĠĠĠĠĠĠĠ Ġfor ( enum Ġin Ġenum List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Generic Converter . generate ( type Spec Builder , Ġenum , Ġfirst ClassType . packageName ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }