001package gudusoft.gsqlparser.nodes.dax; 002 003import gudusoft.gsqlparser.ESqlClause; 004import gudusoft.gsqlparser.TCustomSqlStatement; 005import gudusoft.gsqlparser.nodes.*; 006import gudusoft.gsqlparser.stmt.dax.TDaxExprStmt; 007 008/** 009 * DAX summarizecolumns function. 010 */ 011public class TDaxSummerizeColumns extends TDaxFunction { 012 private TPTNodeList<TDaxNameExpression> nameValues; 013 private TExpression filterTableExpr; 014 private TExpressionList columnExprList; 015 016 public TExpressionList getColumnExprList() { 017 return columnExprList; 018 } 019 020 public TExpression getFilterTableExpr() { 021 return filterTableExpr; 022 } 023 024 public void init(Object arg1,Object arg2,Object arg3){ 025 init(arg1, arg2); 026 columnExprList = (TExpressionList)arg3; 027 028 } 029 030 public void init(Object arg1,Object arg2,Object arg3, Object arg4){ 031 init(arg1,arg2,arg3); 032 filterTableExpr = (TExpression)arg4; 033 } 034 035 public void init(Object arg1,Object arg2,Object arg3, Object arg4, Object arg5){ 036 init(arg1,arg2,arg3,arg4); 037 nameValues = (TPTNodeList<TDaxNameExpression>)arg5; 038 } 039 040 public TPTNodeList<TDaxNameExpression> getNameValues() { 041 return nameValues; 042 } 043 044 public void doParse(TCustomSqlStatement psql, ESqlClause plocation){ 045 psql.getDaxFunctionStack().push(this); 046 047 for(int i=0;i<columnExprList.size();i++){ 048 parseColumnExpr(columnExprList.getExpression(i),psql,plocation); 049 } 050 051 if (filterTableExpr != null){ 052 parseTableExpr(this.filterTableExpr,psql,plocation,false); 053 } 054 055 if (getNameValues() != null){ 056 for(int i=0;i<getNameValues().size();i++){ 057 if (getDefaultTable() != null){ 058 getDefaultTable().getLinkedColumns().addObjectName(getNameValues().getElement(i).getColumnName()); 059 }else{ 060 ((TDaxExprStmt)psql).getDefaultTable().getLinkedColumns().addObjectName(getNameValues().getElement(i).getColumnName()); 061 } 062 063 getNameValues().getElement(i).getValueExpr().doParse(psql,plocation); 064 } 065 } 066 067 psql.getDaxFunctionStack().pop(); 068 069// if (psql.getDaxFunctionStack().size() > 0){ 070// TDaxFunction function = psql.getDaxFunctionStack().peek(); 071// function.setDefaultTable(getReturnTable()); 072// } 073 074 } 075 076 public void accept(TParseTreeVisitor v){ 077 v.preVisit(this); 078 v.postVisit(this); 079 } 080 081 public void acceptChildren(TParseTreeVisitor v) { 082 v.preVisit(this); 083 v.postVisit(this); 084 } 085 086 087}