package Ġorg . se asar . dom a . kotlin . jdbc . criteria . declaration Ċ Ċ import Ġorg . se asar . dom a . jdbc . criteria . context . Select Context Ċ import Ġorg . se asar . dom a . jdbc . criteria . context . Sub Select Context Ċ import Ġorg . se asar . dom a . jdbc . criteria . declaration . Order ByName Declaration Ċ import Ġorg . se asar . dom a . jdbc . criteria . declaration . Sub Select From Declaration Ċ import Ġorg . se asar . dom a . jdbc . criteria . met amodel . Entity Met amodel Ċ import Ġorg . se asar . dom a . jdbc . criteria . met amodel . Property Met amodel Ċ import Ġorg . se asar . dom a . jdbc . criteria . tuple . Tuple 2 Ċ Ċ class ĠK Sub Select From Declaration < ENTITY >( private Ġval Ġdeclaration : ĠSub Select From Declaration < ENTITY >) Ġ: ĊĠĠĠ ĠSub Select Context < ENTITY > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget (): ĠSelect Context Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinner Join ( ĊĠĠĠĠĠĠĠ Ġentity Met amodel : ĠEntity Met amodel <* >, ĊĠĠĠĠĠĠĠ Ġblock : ĠK Join Declaration . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠK Sub Select From Declaration < ENTITY > Ġ{ ĊĠĠĠĠĠĠĠ Ġdeclaration . inner Join ( entity Met amodel ) Ġ{ Ġblock ( K Join Declaration ( it )) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġleft Join ( ĊĠĠĠĠĠĠĠ Ġentity Met amodel : ĠEntity Met amodel <* >, ĊĠĠĠĠĠĠĠ Ġblock : ĠK Join Declaration . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠK Sub Select From Declaration < ENTITY > Ġ{ ĊĠĠĠĠĠĠĠ Ġdeclaration . leftJoin ( entity Met amodel ) Ġ{ Ġblock ( K Join Declaration ( it )) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwhere ( block : ĠK Where Declaration . () Ġ-> ĠUnit ): ĠK Sub Select From Declaration < ENTITY > Ġ{ ĊĠĠĠĠĠĠĠ Ġdeclaration . where Ġ{ Ġblock ( K Where Declaration ( it )) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgroup By ( var arg Ġproperty Met amodel s : ĠProperty Met amodel < *> ): ĠK Sub Select From Declaration < ENTITY > Ġ{ ĊĠĠĠĠĠĠĠ Ġdeclaration . groupBy (* property Met amodel s ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhaving ( block : ĠK Having Declaration . () Ġ-> ĠUnit ): ĠK Sub Select From Declaration < ENTITY > Ġ{ ĊĠĠĠĠĠĠĠ Ġdeclaration . having Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Having Declaration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠorderBy ( block : ĠOrder ByName Declaration . () Ġ-> ĠUnit ): ĠK Sub Select From Declaration < ENTITY > Ġ{ ĊĠĠĠĠĠĠĠ Ġdeclaration . orderBy ( block ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect (): ĠSub Select Context < Entity Met amodel < ENTITY >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . select () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect ( entity Met amodel : ĠEntity Met amodel < *> ): ĠSub Select Context < List < Property Met amodel <* >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . select ( entity Met amodel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< PROPERTY > Ġselect ( property Met amodel : ĠProperty Met amodel < PROPERTY >): ĠSub Select Context . Single < PROPERTY > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . select ( property Met amodel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< PROPERTY 1 , ĠPROPERTY 2 > Ġselect ( ĊĠĠĠĠĠĠĠ Ġfirst : ĠProperty Met amodel < PROPERTY 1 >, ĊĠĠĠĠĠĠĠ Ġsecond : ĠProperty Met amodel < PROPERTY 2 > ĊĠĠĠ Ġ): ĠSub Select Context < Tuple 2 < Property Met amodel < PROPERTY 1 >, ĠProperty Met amodel < PROPERTY 2 >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . select ( first , Ġsecond ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect ( ĊĠĠĠĠĠĠĠ Ġproperty Met amodel 1 : ĠProperty Met amodel <* >, ĊĠĠĠĠĠĠĠ Ġproperty Met amodel 2 : ĠProperty Met amodel <* >, ĊĠĠĠĠĠĠĠ Ġvar arg Ġproperty Met amodel s : ĠProperty Met amodel < *> ĊĠĠĠ Ġ): ĠSub Select Context < List < Property Met amodel <* >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeclaration . select ( property Met amodel 1 , Ġproperty Met amodel 2 , Ġ* property Met amodel s ) ĊĠĠĠ Ġ} Ċ } Ċ