001package gudusoft.gsqlparser.nodes.dax;
002
003
004import gudusoft.gsqlparser.ESqlClause;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007
008/**
009 * DAX substitutewithindex function
010 */
011public class TDaxSubstituteWithIndex extends TDaxFunction {
012
013    private TObjectName indexColumnName;
014    private TExpression indexColumnTableExpr;
015
016    public void  init(Object arg1, Object arg2,Object arg3,Object arg4, Object arg5){
017        init(arg1,arg2);
018        setTableExpr((TExpression) arg3);
019        indexColumnName = (TObjectName)arg4;
020        this.indexColumnTableExpr = (TExpression)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        setSortClause((TOrderBy)arg6);
026    }
027
028    public TObjectName getIndexColumnName() {
029        return indexColumnName;
030    }
031
032    public TExpression getIndexColumnTableExpr() {
033        return indexColumnTableExpr;
034    }
035
036    public void doParse(TCustomSqlStatement psql, ESqlClause plocation){
037        psql.getDaxFunctionStack().push(this);
038
039        TTable retTable = parseTableExpr(getTableExpr(),psql,plocation,true);
040        retTable.getLinkedColumns().addObjectName(indexColumnName);
041        retTable = parseTableExpr (indexColumnTableExpr,psql,plocation,true);
042        retTable.getLinkedColumns().addObjectName(indexColumnName);
043        if (getSortClause() != null){
044            getSortClause().doParse(psql,plocation);
045        }
046        psql.getDaxFunctionStack().pop();
047        return;
048    }
049
050    public void accept(TParseTreeVisitor v){
051        v.preVisit(this);
052        v.postVisit(this);
053    }
054
055    public void acceptChildren(TParseTreeVisitor v) {
056        v.preVisit(this);
057        v.postVisit(this);
058    }
059
060}