package Ġyet . util . database Ċ Ċ import Ġjava . util .* ĊĊ Ċ class ĠWhere Node ( val Ġs : ĠString ) Ġ{ Ċ ĉ val Ġargs Ġ= ĠArrayList < String >() Ċ ĉ val Ġto Arg Array : ĠArray < String > Ġget () Ġ= ĠArray < String >( args . size ) Ġ{ Ġargs [ it ] Ġ} ĊĊ ĉ fun Ġadd Arg ( s : ĠString ): ĠWhere Node Ġ{ Ċĉ ĉ args . add ( s ) Ċĉ ĉ return Ġthis Ċ ĉ } ĊĊ ĉ fun Ġadd Arg ( n : ĠLong ): ĠWhere Node Ġ{ Ċĉ ĉ args . add ("" Ġ+ Ġn ) Ċĉ ĉ return Ġthis Ċ ĉ } ĊĊ ĉ override Ġfun ĠtoString (): ĠString Ġ{ Ċĉ ĉ return Ġs Ċ ĉ } Ċ } Ċ Ċ infix Ġfun ĠString . LIKE ( value : ĠString ): ĠWhere Node Ġ{ Ċ ĉ val Ġn Ġ= ĠWhere Node ("$ this ĠLIKE Ġ$ value ") Ċ ĉ n . args . add ( value ) Ċ ĉ return Ġn Ċ } Ċ Ċ infix Ġfun ĠString . EQ ( value : ĠString ?): ĠWhere Node Ġ{ Ċ ĉ if Ġ( value Ġ!= Ġnull ) Ġ{ Ċĉ ĉ val Ġn Ġ= ĠWhere Node ("$ this =? ") Ċĉ ĉ n . args . add ( value ) Ċĉ ĉ return Ġn Ċ ĉ } Ġelse Ġ{ Ċĉ ĉ return ĠIs Null ( this ) Ċ ĉ } Ċ } Ċ Ċ infix Ġfun ĠString . EQ ( value : ĠNumber ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ this =$ value ") Ċ } ĊĊ Ċ infix Ġfun ĠString . NE ( value : ĠString ?): ĠWhere Node Ġ{ Ċ ĉ if Ġ( value Ġ!= Ġnull ) Ġ{ Ċĉ ĉ val Ġn Ġ= ĠWhere Node ("$ this != ?") Ċĉ ĉ n . args . add ( value ) Ċĉ ĉ return Ġn Ċ ĉ } Ġelse Ġ{ Ċĉ ĉ return ĠNot Null ( this ) Ċ ĉ } Ċ } Ċ Ċ infix Ġfun ĠString . NE ( value : ĠNumber ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ this ! =$ value ") Ċ } Ċ Ċ infix Ġfun ĠString . GE ( value : ĠString ): ĠWhere Node Ġ{ Ċ ĉ val Ġn Ġ= ĠWhere Node ("$ this >= ?") Ċ ĉ n . args . add ( value ) Ċ ĉ return Ġn Ċ } Ċ Ċ infix Ġfun ĠString . GE ( value : ĠNumber ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ this > =$ value ") Ċ } ĊĊ Ċ infix Ġfun ĠString . GT ( value : ĠString ): ĠWhere Node Ġ{ Ċ ĉ val Ġn Ġ= ĠWhere Node ("$ this >? ") Ċ ĉ n . args . add ( value ) Ċ ĉ return Ġn Ċ } Ċ Ċ infix Ġfun ĠString . GT ( value : ĠNumber ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ this >$ value ") Ċ } ĊĊ Ċ infix Ġfun ĠString . LE ( value : ĠString ): ĠWhere Node Ġ{ Ċ ĉ val Ġn Ġ= ĠWhere Node ("$ this <= ?") Ċ ĉ n . args . add ( value ) Ċ ĉ return Ġn Ċ } Ċ Ċ infix Ġfun ĠString . LE ( value : ĠNumber ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ this < =$ value ") Ċ } Ċ Ċ infix Ġfun ĠString . LT ( value : ĠString ): ĠWhere Node Ġ{ Ċ ĉ val Ġn Ġ= ĠWhere Node ("$ this <? ") Ċ ĉ n . args . add ( value ) Ċ ĉ return Ġn Ċ } Ċ Ċ infix Ġfun ĠString . LT ( value : ĠNumber ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ this <$ value ") Ċ } Ċ Ċ fun ĠIs Null ( column : ĠString ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ column ĠIS ĠNULL ") Ċ } Ċ Ċ fun ĠNot Null ( column : ĠString ): ĠWhere Node Ġ{ Ċ ĉ return ĠWhere Node ("$ column ĠIS ĠNOT ĠNULL ") Ċ } Ċ Ċ infix Ġfun ĠWhere Node . AND ( item : ĠWhere Node ): ĠWhere Node Ġ{ Ċ ĉ val Ġn Ġ= ĠWhere Node (" ($ s ) ĠAND Ġ(${ item . s }) ") Ċ ĉ n . args . addAll ( this . args ) Ċ ĉ n . args . addAll ( item . args ) Ċ ĉ return Ġn Ċ } Ċ Ċ infix Ġfun ĠWhere Node . OR ( item : ĠWhere Node ): ĠWhere Node Ġ{ Ċ ĉ val Ġn Ġ= ĠWhere Node (" ($ s ) ĠOR Ġ(${ item . s }) ") Ċ ĉ n . args . addAll ( this . args ) Ċ ĉ n . args . addAll ( item . args ) Ċ ĉ return Ġn Ċ } Ċ