@ file : Suppress (" internal ", Ġ" IN VISIBLE _ REFERENCE ", Ġ" IN VISIBLE _ MEMBER ") Ċ Ċ package Ġorg . jetbrains . ex posed . sql . statements Ċ Ċ import Ġorg . jetbrains . ex posed . dao . id . Entity ID Ċ import Ġorg . jetbrains . ex posed . sql . Column Ċ import Ġorg . jetbrains . ex posed . sql . Composite Column Ċ import Ġorg . jetbrains . ex posed . sql . Expression Ċ import Ġorg . jetbrains . ex posed . sql . Op Ċ import Ġorg . jetbrains . ex posed . sql . Query Ċ import Ġorg . jetbrains . ex posed . sql . Sql Expression Builder Ċ import Ġorg . jetbrains . ex posed . sql . Table Ċ import Ġorg . jetbrains . ex posed . sql . wrap As Expression Ċ import Ġkotlin . internal . Low Priority In Over load Resolution Ċ Ċ /** Ċ Ġ* Ġ@ author Ġmax Ċ Ġ*/ Ċ Ċ abstract Ġclass ĠUpdate Builder < out ĠT >( type : ĠStatement Type , Ġtargets : ĠList < Table >) Ġ: ĠStatement < T >( type , Ġtargets ) Ġ{ ĊĠĠĠ Ġprotected Ġval Ġvalues : ĠMutable Map < Column <* >, ĠAny ?> Ġ= ĠLinkedHashMap () ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġcontains ( column : ĠColumn < *> ): ĠBoolean Ġ= Ġvalues . contains ( column ) ĊĊĠĠĠ Ġprotected Ġvar Ġhas B atched Values : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġfun Ġcheck That Expression Was Not Set In Previous Batch ( column : ĠColumn <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (!( values . containsKey ( column ) Ġ&& Ġhas B atched Values )) Ġ{ Ġ"$ column Ġis Ġalready Ġinitialized Ġin Ġa Ġbatch " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Low Priority In Over load Resolution ĊĠĠĠ Ġopen Ġoperator Ġfun Ġ< ĠS > Ġset ( column : ĠColumn < S >, Ġvalue : ĠS ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( column . column Type . nullable Ġ|| Ġ( value Ġ!= Ġnull Ġ&& Ġvalue Ġ! is ĠOp . NULL )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Trying Ġto Ġset Ġnull Ġto Ġnot Ġnullable Ġcolumn Ġ$ column " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcolumn . column Type . validate Value Before Update ( value ) ĊĠĠĠĠĠĠĠ Ġvalues [ column ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Name (" set With EntityId Value ") ĊĠĠĠ Ġoperator Ġfun Ġ< S Ġ: ĠComparable < S >, ĠID Ġ: ĠEntity ID < S >> Ġset ( column : ĠColumn < ID >, Ġvalue : ĠS ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolumn . column Type . validate Value Before Update ( value ) ĊĠĠĠĠĠĠĠ Ġvalues [ column ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Name (" set With Nullable EntityId Value ") ĊĠĠĠ Ġoperator Ġfun Ġ< S Ġ: ĠComparable < S >> Ġset ( column : ĠColumn < Entity ID < S >? >, Ġvalue : ĠS ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( column . column Type . nullable Ġ|| Ġvalue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Trying Ġto Ġset Ġnull Ġto Ġnot Ġnullable Ġcolumn Ġ$ column " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolumn . column Type . validate Value Before Update ( value ) ĊĠĠĠĠĠĠĠ Ġvalues [ column ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Name (" set With EntityId Expression ") ĊĠĠĠ Ġoperator Ġfun Ġ< S Ġ: ĠAny ?, ĠID Ġ: ĠEntity ID < S >, ĠE Ġ: ĠExpression < S >> Ġset ( column : ĠColumn < ID >, Ġvalue : ĠE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( column . column Type . nullable Ġ|| Ġvalue Ġ! is ĠOp . NULL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Trying Ġto Ġset Ġnull Ġto Ġnot Ġnullable Ġcolumn Ġ$ column " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcheck That Expression Was Not Set In Previous Batch ( column ) ĊĠĠĠĠĠĠĠ Ġcolumn . column Type . validate Value Before Update ( value ) ĊĠĠĠĠĠĠĠ Ġvalues [ column ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġ< T , ĠS Ġ: ĠT , ĠE Ġ: ĠExpression < S >> Ġset ( column : ĠColumn < T >, Ġvalue : ĠE ) Ġ= Ġupdate ( column , Ġvalue ) ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġ< S > Ġset ( column : ĠColumn < S >, Ġvalue : ĠQuery ) Ġ= Ġupdate ( column , Ġwrap As Expression ( value )) ĊĊĠĠĠ Ġopen Ġoperator Ġfun Ġ< S Ġ: ĠAny > Ġset ( column : ĠComposite Column < S >, Ġvalue : ĠS ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolumn . get Real Columns With Values ( value ). forEach Ġ{ Ġ( real Column , Ġits Value ) Ġ-> Ġset ( real Column Ġas ĠColumn < Any ? >, Ġits Value ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġ< T , ĠS Ġ: ĠT ?> Ġupdate ( column : ĠColumn < T >, Ġvalue : ĠExpression < S >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck That Expression Was Not Set In Previous Batch ( column ) ĊĠĠĠĠĠĠĠ Ġcolumn . column Type . validate Value Before Update ( value ) ĊĠĠĠĠĠĠĠ Ġvalues [ column ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġ< T , ĠS Ġ: ĠT ?> Ġupdate ( column : ĠColumn < T >, Ġvalue : ĠSql Expression Builder . () Ġ-> ĠExpression < S >) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate ( column , ĠSql Expression Builder . value ()) ĊĠĠĠ Ġ} Ċ } Ċ