2323 * A function as MAX,COUNT...
2424 */
2525public class Function extends ASTNodeAccessImpl implements Expression {
26- public enum NullHandling {
27- IGNORE_NULLS , RESPECT_NULLS ;
28- }
29-
30- public static class HavingClause extends ASTNodeAccessImpl implements Expression {
31- enum HavingType {
32- MAX , MIN ;
33- }
34-
35- HavingType havingType ;
36- Expression expression ;
37-
38- public HavingClause (HavingType havingType , Expression expression ) {
39- this .havingType = havingType ;
40- this .expression = expression ;
41- }
42-
43- public HavingType getHavingType () {
44- return havingType ;
45- }
46-
47- public HavingClause setHavingType (HavingType havingType ) {
48- this .havingType = havingType ;
49- return this ;
50- }
51-
52- public Expression getExpression () {
53- return expression ;
54- }
55-
56- public HavingClause setExpression (Expression expression ) {
57- this .expression = expression ;
58- return this ;
59- }
60-
61- @ Override
62- public void accept (ExpressionVisitor expressionVisitor ) {
63- expression .accept (expressionVisitor );
64- }
65-
66- public StringBuilder appendTo (StringBuilder builder ) {
67- builder .append (" HAVING " ).append (havingType .name ()).append (" " ).append (expression );
68- return builder ;
69- }
70-
71- @ Override
72- public String toString () {
73- return appendTo (new StringBuilder ()).toString ();
74- }
75- }
76-
7726 private List <String > nameparts ;
7827 private ExpressionList <?> parameters ;
7928 private NamedExpressionList <?> namedParameters ;
@@ -88,10 +37,8 @@ public String toString() {
8837 private NullHandling nullHandling = null ;
8938 private boolean ignoreNullsOutside = false ; // IGNORE NULLS outside function parameters
9039 private Limit limit = null ;
91-
9240 private KeepExpression keep = null ;
9341
94-
9542 public Function () {}
9643
9744 public Function (String name , Expression ... parameters ) {
@@ -110,14 +57,18 @@ public String getName() {
11057 nameparts );
11158 }
11259
113- public List <String > getMultipartName () {
114- return nameparts ;
115- }
116-
11760 public void setName (String string ) {
11861 nameparts = Arrays .asList (string );
11962 }
12063
64+ public void setName (List <String > string ) {
65+ nameparts = string ;
66+ }
67+
68+ public List <String > getMultipartName () {
69+ return nameparts ;
70+ }
71+
12172 public Function withName (String name ) {
12273 this .setName (name );
12374 return this ;
@@ -128,10 +79,6 @@ public Function withName(List<String> nameparts) {
12879 return this ;
12980 }
13081
131- public void setName (List <String > string ) {
132- nameparts = string ;
133- }
134-
13582 public boolean isAllColumns () {
13683 return allColumns ;
13784 }
@@ -277,6 +224,11 @@ public void setAttribute(Expression attributeExpression) {
277224 this .attributeExpression = attributeExpression ;
278225 }
279226
227+ public void setAttribute (Column attributeColumn ) {
228+ attributeExpression = null ;
229+ this .attributeColumn = attributeColumn ;
230+ }
231+
280232 @ Deprecated
281233 public String getAttributeName () {
282234 return attributeColumn .toString ();
@@ -290,11 +242,6 @@ public Column getAttributeColumn() {
290242 return attributeColumn ;
291243 }
292244
293- public void setAttribute (Column attributeColumn ) {
294- attributeExpression = null ;
295- this .attributeColumn = attributeColumn ;
296- }
297-
298245 public Function withAttribute (Column attributeColumn ) {
299246 setAttribute (attributeColumn );
300247 return this ;
@@ -456,4 +403,55 @@ public void setOrderByElements(List<OrderByElement> orderByElements) {
456403 public <E extends Expression > E getAttribute (Class <E > type ) {
457404 return type .cast (getAttribute ());
458405 }
406+
407+ public enum NullHandling {
408+ IGNORE_NULLS , RESPECT_NULLS ;
409+ }
410+
411+ public static class HavingClause extends ASTNodeAccessImpl implements Expression {
412+ HavingType havingType ;
413+ Expression expression ;
414+
415+ public HavingClause (HavingType havingType , Expression expression ) {
416+ this .havingType = havingType ;
417+ this .expression = expression ;
418+ }
419+
420+ public HavingType getHavingType () {
421+ return havingType ;
422+ }
423+
424+ public HavingClause setHavingType (HavingType havingType ) {
425+ this .havingType = havingType ;
426+ return this ;
427+ }
428+
429+ public Expression getExpression () {
430+ return expression ;
431+ }
432+
433+ public HavingClause setExpression (Expression expression ) {
434+ this .expression = expression ;
435+ return this ;
436+ }
437+
438+ @ Override
439+ public void accept (ExpressionVisitor expressionVisitor ) {
440+ expression .accept (expressionVisitor );
441+ }
442+
443+ public StringBuilder appendTo (StringBuilder builder ) {
444+ builder .append (" HAVING " ).append (havingType .name ()).append (" " ).append (expression );
445+ return builder ;
446+ }
447+
448+ @ Override
449+ public String toString () {
450+ return appendTo (new StringBuilder ()).toString ();
451+ }
452+
453+ enum HavingType {
454+ MAX , MIN ;
455+ }
456+ }
459457}
0 commit comments