001package gudusoft.gsqlparser.nodes.dax;
002
003
004import gudusoft.gsqlparser.ESqlClause;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007
008/**
009 * DAX addmissingitems function
010 */
011public class TDaxAddMissingItems extends TDaxFunction {
012    private TObjectNameList showAllColumnList;
013    private TObjectNameList groupingColumnList;
014    private TObjectNameList filterTableList;
015
016    public void  init(Object arg1, Object arg2,Object arg3,Object arg4, Object arg5){
017        init(arg1,arg2);
018        setTableExpr((TExpression) arg3);
019        this.showAllColumnList = (TObjectNameList)arg4;
020        this.groupingColumnList = (TObjectNameList)arg5;
021    }
022
023    public void  init(Object arg1, Object arg2,Object arg3,Object arg4, Object arg5,Object arg6){
024        init(arg1,arg2,arg3,arg4,arg5);
025        this.filterTableList = (TObjectNameList)arg6;
026    }
027
028    public TObjectNameList getShowAllColumnList() {
029        return showAllColumnList;
030    }
031
032    public TObjectNameList getGroupingColumnList() {
033        return groupingColumnList;
034    }
035
036
037    public TObjectNameList getFilterTableList() {
038        return filterTableList;
039    }
040
041    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
042        psql.getDaxFunctionStack().push(this);
043
044        parseTableExpr(getTableExpr(), psql, plocation,true);
045        for(int i=0;i<showAllColumnList.size();i++){
046            getDefaultTable().getLinkedColumns().addObjectName(showAllColumnList.getObjectName(i));
047        }
048        for (int i=0;i<groupingColumnList.size();i++){
049            getDefaultTable().getLinkedColumns().addObjectName(groupingColumnList.getObjectName(i));
050        }
051        if (filterTableList != null){
052            for(int i=0;i<filterTableList.size();i++){
053                psql.addToTables(new TTable(filterTableList.getObjectName(i)));
054            }
055
056        }
057        psql.getDaxFunctionStack().pop();
058
059        return;
060    }
061
062    public void accept(TParseTreeVisitor v){
063        v.preVisit(this);
064        v.postVisit(this);
065    }
066
067    public void acceptChildren(TParseTreeVisitor v) {
068        v.preVisit(this);
069        v.postVisit(this);
070    }
071
072}