package Ġcom . db flow 5 . processor . definition Ċ Ċ import Ġcom . db flow 5 . processor . ClassNames Ċ import Ġcom . db flow 5 . processor . DB Flow Processor Ċ import Ġcom . db flow 5 . processor . Processor Manager Ċ import Ġcom . db flow 5 . processor . utils . has Java X Ċ import Ġcom . db flow 5 . processor . utils . to ClassName Ċ import Ġcom . db flow 5 . processor . utils . to Type Element Ċ import Ġcom . g ros ner . k po et . S Ċ import Ġcom . g ros ner . k po et .` @ ` Ċ import Ġcom . g ros ner . k po et .` public Ġfinal Ġclass ` Ċ import Ġcom . g ros ner . k po et . extends Ċ import Ġcom . g ros ner . k po et . implements Ċ import Ġcom . g ros ner . k po et . javadoc Ċ import Ġcom . g ros ner . k po et . typeName Ċ import Ġcom . squareup . jav ap o et . ClassName Ċ import Ġcom . squareup . jav ap o et . Parameterized TypeName Ċ import Ġcom . squareup . jav ap o et . TypeName Ċ import Ġcom . squareup . jav ap o et . Type Spec Ċ import Ġjavax . lang . model . element . Element Ċ import Ġjavax . lang . model . element . Executable Element Ċ import Ġjavax . lang . model . element . Type Element Ċ Ċ /** Ċ Ġ* ĠDescription : ĠHold s Ġonto Ġa Ġcommon - set Ġof Ġfields Ġand Ġprovides Ġa Ġcommon - set Ġof Ġmethods Ġto Ġoutput Ġclass Ġfiles . Ċ Ġ*/ Ċ abstract Ġclass ĠBase Definition ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOriginal Ġdefinition Ġelement . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġelement : ĠElement , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOptional Ġ[ Type Element ]. Ġif Ġthe Ġ[ element ] Ġpassed Ġin Ġis Ġa Ġtype . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtype Element : ĠType Element ?, ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġresolved Ġ[ TypeName ] Ġfor Ġthis Ġdefinition . ĠIt Ġmay Ġbe Ġa Ġreturn Ġtype Ġif Ġ[ Executable Element ], ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġelement TypeName : ĠType Name ?, ĊĠĠĠ Ġval Ġmanager : ĠProcessor Manager , ĊĠĠĠ Ġval ĠpackageName : ĠString ) Ġ: ĠType Definition Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ ClassName ] Ġreferring Ġto Ġthe Ġtype Ġof Ġthe Ġdefinition . ĠThis Ġexclude s Ġprimitives . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġelement ClassName : ĠClass Name ? Ġ= Ġnull ĊĊĊĠĠĠ Ġvar Ġoutput ClassName : ĠClass Name ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn qualified Ġname Ġof Ġthe Ġ[ element ]. ĠUseful Ġfor Ġnames Ġof Ġmethods , Ġfields , Ġor Ġshort Ġtype Ġnames . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġelement Name : ĠString Ġ= Ġelement . simple Name . toString () ĊĊĠĠĠ Ġconstructor ( element : ĠExec utable Element , Ġprocessor Manager : ĠProcessor Manager ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġmanager Ġ= Ġprocessor Manager , ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġprocessor Manager . elements . get Package Of ( element )?. qualified Name ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġelement Ġ= Ġelement , ĊĠĠĠĠĠĠĠ Ġtype Element Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġelement TypeName Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . as Type (). typeName ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( i : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġunexpected ĠType Mirror Ġ( usually Ġa ĠList ). ĠCannot Ġuse Ġfor ĠType Name . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement ClassName Ġ= Ġif Ġ( element TypeName ?. is Primitive Ġ== Ġtrue ) Ġnull Ġelse Ġelement . to ClassName ( manager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( element : ĠElement , Ġprocessor Manager : ĠProcessor Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName : ĠString Ġ= Ġprocessor Manager . elements . get Package Of ( element )?. qualified Name ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"") Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġmanager Ġ= Ġprocessor Manager , ĊĠĠĠĠĠĠĠ Ġelement Ġ= Ġelement , ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= ĠpackageName , ĊĠĠĠĠĠĠĠ Ġtype Element Ġ= Ġelement Ġas ? ĠType Element Ġ?: Ġelement . to Type Element (), ĊĠĠĠĠĠĠĠ Ġelement TypeName Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠExec utable Element Ġ-> Ġelement . returnType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġelement . as Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. typeName ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( i : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor Manager . log Error (" Found Ġillegal Ġtype : Ġ${ element . as Type ()} Ġfor Ġ${ element . simple Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor Manager . log Error (" Exception Ġhere : Ġ$ i ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement TypeName ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Primitive ) Ġelement ClassName Ġ= Ġelement . to ClassName ( processor Manager ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( element : ĠType Element , Ġprocessor Manager : ĠProcessor Manager ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġmanager Ġ= Ġprocessor Manager , ĊĠĠĠĠĠĠĠ Ġelement Ġ= Ġelement , ĊĠĠĠĠĠĠĠ Ġtype Element Ġ= Ġelement , ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġprocessor Manager . elements . get Package Of ( element )?. qualified Name ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġelement TypeName Ġ= Ġelement . as Type (). typeName ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement ClassName Ġ= Ġelement . to ClassName ( processor Manager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Output ClassName ( postfix : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Name : ĠString ĊĊĠĠĠĠĠĠĠ Ġval Ġelement ClassName Ġ= Ġelement ClassName ĊĠĠĠĠĠĠĠ Ġif Ġ( element ClassName Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element TypeName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClass Name Ġ-> Ġoutput Name Ġ= Ġelement TypeName . simple Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠParameter ized TypeName Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Name Ġ= Ġelement TypeName . raw Type . simple Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . element ClassName Ġ= Ġelement TypeName . raw Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġoutput Name Ġ= Ġelement TypeName . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Name Ġ= Ġelement ClassName . simple Name () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoutput ClassName Ġ= ĠClass Name . get ( packageName , Ġoutput Name Ġ+ Ġpostfix ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Output ClassName Full ( fullName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoutput ClassName Ġ= ĠClass Name . get ( packageName , ĠfullName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtype Spec : ĠType Spec ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( output ClassName Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . log Error ("$ element TypeName 's Ġis Ġmissing Ġan Ġoutput ClassName . ĠDatabase Ġwas Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ ( this Ġas ? ĠEntity Definition )?. associ ational Behavior ?. database TypeName }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ` public Ġfinal Ġclass `( output ClassName ?. simple Name () Ġ?: Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Java X ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Annotation (` @ `( ClassNames . GENERATED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" value "] Ġ= ĠDB Flow Processor :: class . java . canonical Name . toString (). S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextends Class ?. let Ġ{ Ġextends ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplements Classes . forEach Ġ{ Ġimplements ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjavadoc (" This Ġis Ġgenerated Ġcode . ĠPlease Ġdo Ġnot Ġmodify ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Write Definition ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġval Ġextends Class : ĠType Name ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġval Ġimplements Classes : ĠArray < TypeName > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠarrayOf () ĊĊĠĠĠ Ġopen Ġfun Ġon Write Definition ( type Builder : ĠType Spec . Builder ) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ