package Ġcom . ra iz labs . android . db flow . processor . definition Ċ Ċ import Ġcom . google . common . collect . Lists Ċ import Ġcom . ra iz labs . android . db flow . annotation . OneToMany Ċ import Ġcom . ra iz labs . android . db flow . processor . ClassNames Ċ import Ġcom . ra iz labs . android . db flow . processor . Processor Manager Ċ import Ġcom . ra iz labs . android . db flow . processor . Processor Utils Ċ import Ġcom . ra iz labs . android . db flow . processor . definition . column .* Ċ import Ġcom . ra iz labs . android . db flow . processor . utils . Model Utils Ċ import Ġcom . ra iz labs . android . db flow . processor . utils . add Statement Ċ import Ġcom . ra iz labs . android . db flow . processor . utils . control Flow Ċ import Ġcom . squareup . jav ap o et .* Ċ import Ġjava . util .* Ċ import Ġjavax . lang . model . element . Executable Element Ċ import Ġjavax . lang . model . element . Type Element Ċ Ċ /** Ċ Ġ* ĠDescription : ĠRepresents Ġthe Ġ[ OneToMany ] Ġannotation . Ċ Ġ*/ Ċ class ĠOne ToMany Definition ( type Element : ĠExec utable Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor Manager : ĠProcessor Manager ) Ġ: ĠBase Definition ( type Element , Ġprocessor Manager ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ methodName : ĠString ĊĊĠĠĠ Ġprivate Ġvar Ġ_ variable Name : ĠString ĊĊĠĠĠ Ġvar Ġmethods : ĠMutable List < OneToMany . Method > Ġ= ĠLists . newArrayList < OneToMany . Method >() ĊĊĠĠĠ Ġval Ġis Load : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis All Ġ|| Ġmethods . contains ( OneToMany . Method . LOAD ) ĊĊĠĠĠ Ġval Ġis All : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmethods . contains ( OneToMany . Method . ALL ) ĊĊĠĠĠ Ġval Ġis Delete : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis All Ġ|| Ġmethods . contains ( OneToMany . Method . DELETE ) ĊĊĠĠĠ Ġval Ġis Save : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis All Ġ|| Ġmethods . contains ( OneToMany . Method . SAVE ) ĊĊĠĠĠ Ġprivate Ġvar Ġcolumn Accessor : ĠColumn Accessor ĊĠĠĠ Ġprivate Ġvar Ġextends BaseModel : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġextends Model : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġreferenced Table Type : ĠType Name ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġreferenced Type : ĠType Element ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġone ToMany Ġ= Ġtype Element . getAnnotation ( OneToMany :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ_ methodName Ġ= Ġtype Element . simple Name . toString () ĊĠĠĠĠĠĠĠ Ġ_ variable Name Ġ= Ġone ToMany . variable Name ĊĠĠĠĠĠĠĠ Ġif Ġ(_ variable Name . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ variable Name Ġ= Ġ_ methodName . replace (" get ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ variable Name Ġ= Ġ_ variable Name . substring ( 0 , Ġ 1 ). toLowerCase () Ġ+ Ġ_ variable Name . substring ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmethods . addAll ( Arrays . asList < OneToMany . Method >(* one ToMany . methods )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( one ToMany . is Variable Private ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Accessor Ġ= ĠPrivate Scope Column Accessor (_ variable Name , Ġobject Ġ: ĠGetter Setter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġgetter Name : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsetter Name : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Accessor Ġ= ĠVis ible Scope Column Accessor (_ variable Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġextends BaseModel Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval ĠreturnType Ġ= Ġtype Element . returnType ĊĠĠĠĠĠĠĠ Ġval ĠtypeName Ġ= ĠType Name . get ( returnType ) ĊĠĠĠĠĠĠĠ Ġif Ġ( typeName Ġis ĠParameter ized TypeName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Arguments Ġ= ĠtypeName . type Arguments ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Arguments . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġref Table Type Ġ= Ġtype Arguments [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ref Table Type Ġis ĠW ildcard TypeName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref Table Type Ġ= Ġref Table Type . upper Bounds [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreferenced Table Type Ġ= Ġref Table Type ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreferenced Type Ġ= Ġmanager . elements . getType Element ( referenced Table Type ?. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextends BaseModel Ġ= ĠProcessor Utils . is Subclass ( manager . processing Environment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Names . BASE _ MODEL . toString (), Ġreferenced Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextends Model Ġ= ĠProcessor Utils . is Subclass ( manager . processing Environment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Names . MODEL . toString (), Ġreferenced Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠmethodName Ġ= ĠString . format ("% 1 s .% 1 s ()", ĠModel Utils . variable , Ġ_ methodName ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġthe Ġmethod Ġto Ġthe Ġspecified Ġbuilder Ġfor Ġloading Ġfrom ĠDB . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwrite Load ( code Builder : ĠCode Block . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Load ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Builder . add Statement ( methodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġa Ġdelete Ġmethod Ġthat Ġwill Ġdelete Ġall Ġrelated Ġobjects . ĊĊĠĠĠĠ Ġ* Ġ@ param Ġcode Builder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwrite Delete ( code Builder : ĠCode Block . Builder , Ġuse Wrapper : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Delete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Loop With Method ( code Builder , Ġ" delete ", Ġuse Wrapper Ġ&& Ġextends BaseModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Builder . add Statement ( column Accessor . set ( Code Block . of (" null "), Ġmodel Block )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite Save ( code Builder : ĠCode Block . Builder , Ġuse Wrapper : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Save ) Ġwrite Loop With Method ( code Builder , Ġ" save ", Ġuse Wrapper Ġ&& Ġextends BaseModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite Update ( code Builder : ĠCode Block . Builder , Ġuse Wrapper : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Save ) Ġwrite Loop With Method ( code Builder , Ġ" update ", Ġuse Wrapper Ġ&& Ġextends BaseModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite Insert ( code Builder : ĠCode Block . Builder , Ġuse Wrapper : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Save ) Ġwrite Loop With Method ( code Builder , Ġ" insert ", Ġuse Wrapper Ġ&& Ġ( extends BaseModel Ġ|| Ġ! extends Model )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Loop With Method ( code Builder : ĠCode Block . Builder , ĠmethodName : ĠString , Ġuse Wrapper : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġone ToMany MethodName Ġ= Ġthis @ OneToMany Definition . methodName ĊĠĠĠĠĠĠĠ Ġcode Builder . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Builder . control Flow (" if Ġ(\ $ L Ġ!= Ġnull ) Ġ", Ġone ToMany MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloop Class : ĠClass Name ? Ġ= Ġif Ġ( extends BaseModel ) ĠClass Names . BASE _ MODEL Ġelse ĠClass Name . get ( referenced Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġneed Ġto Ġload Ġadapter Ġfor Ġnon - model Ġclasses ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! extends Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement ("\ $ T Ġadapter Ġ= Ġ\$ T . getModel Adapter (\ $ T . class )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParameter ized TypeName . get ( ClassNames . MODEL _ ADAPTER , Ġreferenced Table Type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Names . FLOW _ MANAGER , Ġreferenced Table Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Statement (" adapter .\ $ L All (\ $ L \$ L )", ĠmethodName , Ġone ToMany MethodName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Wrapper ) Ġ", Ġ" Ġ+ ĠModel Utils . wrapper Ġelse Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Flow (" for Ġ(\ $ T Ġvalue : Ġ\$ L ) Ġ", Ġloop Class , Ġone ToMany MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Builder . add Statement (" value .\ $ L (\ $ L )", ĠmethodName , Ġif Ġ( use Wrapper ) ĠModel Utils . wrapper Ġelse Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ