2121 */
2222package net .sf .jsqlparser .util ;
2323
24+ import java .util .ArrayList ;
25+ import java .util .List ;
2426import net .sf .jsqlparser .expression .Expression ;
27+ import net .sf .jsqlparser .schema .Table ;
28+ import net .sf .jsqlparser .statement .select .Join ;
2529import net .sf .jsqlparser .statement .select .PlainSelect ;
2630import net .sf .jsqlparser .statement .select .Select ;
2731import net .sf .jsqlparser .statement .select .SelectExpressionItem ;
@@ -40,7 +44,8 @@ private SelectUtils() {
4044 }
4145
4246 /**
43- * Adds an expression to select statements. E.g. a simple column is an expression.
47+ * Adds an expression to select statements. E.g. a simple column is an
48+ * expression.
4449 *
4550 * @param select
4651 * @param expr
@@ -64,4 +69,29 @@ public void visit(WithItem withItem) {
6469 }
6570 });
6671 }
72+
73+ /**
74+ * Adds a simple join to a select statement. The introduced join is returned for
75+ * more configuration settings on it (e.g. left join, right join).
76+ * @param select
77+ * @param table
78+ * @param onExpression
79+ * @return
80+ */
81+ public static Join addJoin (Select select , final Table table , final Expression onExpression ) {
82+ if (select .getSelectBody () instanceof PlainSelect ) {
83+ PlainSelect plainSelect = (PlainSelect ) select .getSelectBody ();
84+ List <Join > joins = plainSelect .getJoins ();
85+ if (joins == null ) {
86+ joins = new ArrayList <Join >();
87+ plainSelect .setJoins (joins );
88+ }
89+ Join join = new Join ();
90+ join .setRightItem (table );
91+ join .setOnExpression (onExpression );
92+ joins .add (join );
93+ return join ;
94+ }
95+ throw new UnsupportedOperationException ("Not supported yet." );
96+ }
6797}
0 commit comments