001package gudusoft.gsqlparser.nodes.dax;
002
003import gudusoft.gsqlparser.ESqlClause;
004import gudusoft.gsqlparser.TCustomSqlStatement;
005import gudusoft.gsqlparser.nodes.TExpression;
006import gudusoft.gsqlparser.nodes.TObjectNameList;
007import gudusoft.gsqlparser.nodes.TPTNodeList;
008
009/**
010 * Base class of function groupby() and summarize(). {@link gudusoft.gsqlparser.nodes.dax.TDaxGroupBy},{@link gudusoft.gsqlparser.nodes.dax.TDaxSummarize}
011 */
012
013public class TDaxGroupByBase extends TDaxFunction {
014
015    public void init(Object arg1,Object arg2,Object arg3, Object arg4){
016        init(arg1, arg2);
017        setTableExpr((TExpression)arg3);
018        setColumnNameList((TObjectNameList)arg4);
019    }
020
021    public void init(Object arg1,Object arg2,Object arg3, Object arg4, Object arg5){
022        init(arg1,arg2,arg3,arg4);
023        setNameValues((TPTNodeList<TDaxNameExpression>)arg5);
024
025    }
026
027
028
029    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
030
031        psql.getDaxFunctionStack().push(this);
032        setReturnTable(parseTableExpr(this.getTableExpr(),psql,plocation,true));
033        for(int i=0;i<getColumnNameList().size();i++){
034            psql.linkColumnToTable(getColumnNameList().getObjectName(i),plocation);
035
036        }
037        if (getNameValues() != null){
038            for(int i=0;i<getNameValues().size();i++){
039                //getReturnTable().getLinkedColumns().addObjectName(getNameValues().getElement(i).getColumnName());
040                getNameValues().getElement(i).getValueExpr().doParse(psql,plocation);
041            }
042        }
043
044        this.setReturnTable(getDefaultTable());
045
046        psql.getDaxFunctionStack().pop();
047
048        if (getReturnTable() != null){
049            if (psql.getDaxFunctionStack().size() > 0){
050                TDaxFunction function = psql.getDaxFunctionStack().peek();
051                function.setDefaultTable(getReturnTable());
052            }
053        }
054
055    }
056
057}