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}