/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠSe an ĠG ri mes . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠLicense : ĠMIT Ċ Ġ*/ Ċ Ċ package Ġedu . ante v ort adb . db Interaction . db Selector Ċ Ċ /** Ċ Ġ* ĠThe Ġmain Ġcredit Ġfor Ġthis Ġclass Ġgoes Ġto ĠJohn ĠK ras n ay . ĠI 've Ġmodified Ġit Ġfor Ġmy Ġown Ġuses . Ċ Ġ* Ġhttps :// github . com / j kr asn ay / sql builder Ċ Ġ*/ Ċ @ Suppress (" unused ", Ġ" Member Visibility Can Be Private ") Ċ open Ġclass ĠDB Selector Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠtableName ĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġcolumns ĠĠĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġjoins ĠĠĠĠĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġleft Join s ĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġwh eres ĠĠĠĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġgroup By s ĠĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġh avings ĠĠĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar ĠorderBy s ĠĠĠ Ġ= ĠArrayList < String >() ĊĠĠĠ Ġprivate Ġvar Ġun ions ĠĠĠĠĠ Ġ= ĠArrayList < DB Selector >() ĊĠĠĠ Ġprivate Ġvar Ġlimit ĠĠĠĠĠĠ Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġoffset ĠĠĠĠĠ Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġfor Update ĠĠ Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġno Wait ĠĠĠĠĠ Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġdistinct ĠĠĠ Ġ= Ġfalse ĊĊĠĠĠ Ġconstructor () ĊĠĠĠ Ġconstructor ( tableName : ĠString ) Ġ{ Ġthis . tableName . add ( tableName ) Ġ} ĊĊĠĠĠ Ġfun Ġand ( expr : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhere ( expr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcolumn ( name : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . columns . add ( name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcolumn ( name : ĠString , Ġgroup By : ĠBoolean ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġcolumns . add ( name ) ĊĠĠĠĠĠĠĠ Ġif ( groupBy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup By s . add ( name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlimit ( limit : ĠInt , Ġoffset : ĠInt ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . limit Ġ= Ġlimit ĊĠĠĠĠĠĠĠ Ġthis . offset Ġ= Ġoffset ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlimit ( limit : ĠInt ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlimit ( limit , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdistinct (): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . distinct Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfor Update (): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . for Update Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfrom ( table : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tableName . add ( table ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Un ions (): ĠList < DB Selector > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . un ions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgroup By ( expr : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup By s . add ( expr ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhaving ( expr : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġh avings . add ( expr ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġjoin ( join : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġjoins . add ( join ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġleft Join ( join : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġleft Join s . add ( join ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġno Wait (): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! for Update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" no Wait Ġwithout Ġfor Update Ġcannot Ġbe Ġcalled ") ĊĠĠĠĠĠĠĠ Ġno Wait Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠorderBy ( name : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ ĠorderBy s . add ("$ name Ġasc ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠorderBy ( name : ĠString , Ġascending : ĠBoolean ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( ascending ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠorderBy s . add ("$ name Ġasc ") ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠorderBy s . add ("$ name Ġdesc ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunion ( db Selector : ĠDB Selector ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġun ions . add ( db Selector ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwhere ( expr : ĠString ): ĠDB Selector Ġ{ ĊĠĠĠĠĠĠĠ Ġwh eres . add ( expr ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsql (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsql Ġ= ĠStringBuilder (" select Ġ") ĊĠĠĠĠĠĠĠ Ġif ( distinct ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (" distinct Ġ") ĊĠĠĠĠĠĠĠ Ġif ( columns . size Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append ("* ") ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend List ( sql , Ġcolumns , Ġ"", Ġ", Ġ") ĊĊĠĠĠĠĠĠĠ Ġappend List ( sql , ĠtableName , Ġ" Ġfrom Ġ", Ġ", Ġ") ĊĠĠĠĠĠĠĠ Ġappend List ( sql , Ġjoins , Ġ" Ġjoin Ġ", Ġ" Ġjoin Ġ") ĊĠĠĠĠĠĠĠ Ġappend List ( sql , Ġleft Join s , Ġ" Ġleft Ġjoin Ġ", Ġ" Ġleft Ġjoin Ġ") ĊĠĠĠĠĠĠĠ Ġappend List ( sql , Ġwh eres , Ġ" Ġwhere Ġ", Ġ" Ġand Ġ") ĊĠĠĠĠĠĠĠ Ġappend List ( sql , Ġgroup By s , Ġ" Ġgroup Ġby Ġ", Ġ", Ġ") ĊĠĠĠĠĠĠĠ Ġappend List ( sql , Ġh avings , Ġ" Ġhaving Ġ", Ġ" Ġand Ġ") ĊĠĠĠĠĠĠĠ Ġappend List ( sql , Ġun ions , Ġ" Ġunion Ġ", Ġ" Ġunion Ġ") ĊĠĠĠĠĠĠĠ Ġappend List ( sql , ĠorderBy s , Ġ" Ġorder Ġby Ġ", Ġ", Ġ") ĊĊĠĠĠĠĠĠĠ Ġif ( for Update ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (" Ġfor Ġupdate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( no Wait ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (" Ġnow ait ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( limit Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (" Ġlimit Ġ$ limit ") ĊĠĠĠĠĠĠĠ Ġif ( offset Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (", Ġ$ offset ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsql . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġappend List ( sql : ĠStringBuilder , Ġlist : ĠList <* >, Ġinit : ĠString , Ġsep : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfirst Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append ( init ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append ( sep ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ