001package gudusoft.gsqlparser.nodes.functions; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.TCustomSqlStatement; 005import gudusoft.gsqlparser.nodes.*; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007 008/** 009 * BigQuery ARRAY_CONCAT_AGG function 010 * Syntax: ARRAY_CONCAT_AGG(expression [ORDER BY expr [ASC|DESC]] [LIMIT n]) 011 */ 012public class TArrayConcatAggFunction extends TFunctionCall { 013 014 private TExpression argument; 015 private TOrderBy orderBy; 016 private TExpression limitExpr; 017 018 public TExpression getArgument() { 019 return argument; 020 } 021 022 public void setArgument(TExpression argument) { 023 this.argument = argument; 024 } 025 026 public TOrderBy getOrderBy() { 027 return orderBy; 028 } 029 030 public void setOrderByList(TOrderBy orderByList) { 031 this.orderBy = orderByList; 032 } 033 034 public TExpression getLimitExpr() { 035 return limitExpr; 036 } 037 038 public void setLimitExpr(TExpression limitExpr) { 039 this.limitExpr = limitExpr; 040 } 041 042 public void doParse(TCustomSqlStatement psql, ESqlClause plocation) { 043 super.doParse(psql, plocation); 044 if (argument != null) { 045 argument.doParse(psql, plocation); 046 } 047 if (orderBy != null) { 048 orderBy.doParse(psql, plocation); 049 } 050 if (limitExpr != null) { 051 limitExpr.doParse(psql, plocation); 052 } 053 } 054 055 public void init(Object arg1, Object arg2, Object arg3, Object arg4) { 056 functionType = EFunctionType.array_concat_agg_t; 057 this.setFunctionName((TObjectName) arg1); 058 this.argument = (TExpression) arg2; 059 this.orderBy = (TOrderBy) arg3; 060 this.limitExpr = (TExpression) arg4; 061 } 062 063 public void accept(TParseTreeVisitor v) { 064 v.preVisit(this); 065 v.postVisit(this); 066 } 067 068 public void acceptChildren(TParseTreeVisitor v) { 069 v.preVisit(this); 070 071 if (argument != null) { 072 argument.accept(v); 073 } 074 075 if (orderBy != null) { 076 orderBy.accept(v); 077 } 078 079 if (limitExpr != null) { 080 limitExpr.accept(v); 081 } 082 083 v.postVisit(this); 084 } 085}