package Ġru . neh od ov . sq otlin . select Ċ Ċ class ĠJoin On ( ĊĠĠĠ Ġprivate Ġval Ġquery : ĠSelect Query , ĊĠĠĠ Ġjoin Type : ĠString , ĊĠĠĠ Ġtable : ĠString , ĊĠĠĠ Ġjoin Condition : ĠString , Ċ ): ĠI Select Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġquery . add Join ( Join Container ( join Type , Ġtable , Ġjoin Condition )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠINNER _ JOIN ( table : ĠString ): ĠJoin Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInner Join ( query , Ġtable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠC ROSS _ JOIN ( table : ĠString ): ĠJoin Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCross Join ( query , Ġtable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠLEFT _ JOIN ( table : ĠString ): ĠJoin Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLeft Join ( query , Ġtable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠWHERE ( row Filter : ĠString ): ĠWhere Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWhere ( query , Ġrow Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠGROUP _ BY ( var arg Ġgroup Clause : ĠString ): ĠGroup By Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGroup By ( query , Ġ* group Clause ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery (): ĠString Ġ= Ġquery . sql () ĊĠĠĠ Ġoverride Ġfun Ġsub Query (): ĠString Ġ= Ġquery . sub Query () ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġquery () Ċ }