001package gudusoft.gsqlparser.nodes.dax; 002 003 004import gudusoft.gsqlparser.EExpressionType; 005import gudusoft.gsqlparser.ESqlClause; 006import gudusoft.gsqlparser.TCustomSqlStatement; 007import gudusoft.gsqlparser.nodes.TExpression; 008import gudusoft.gsqlparser.nodes.TPTNodeList; 009import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 010 011public class TDaxReturn extends TDaxFunction { 012 private TPTNodeList <TDaxVar> variables; 013 private TExpression returnExpr; 014 015 016 public void init(Object arg1,Object arg2,Object arg3,Object arg4){ 017 init(arg1,arg2,arg3); 018 variables = (TPTNodeList<TDaxVar>)arg4; 019 } 020 021 public void init(Object arg1,Object arg2,Object arg3){ 022 init(arg1, arg2); 023 returnExpr = (TExpression)arg3; 024 } 025 026 public void doParse(TCustomSqlStatement psql, ESqlClause plocation){ 027 psql.getDaxFunctionStack().push(this); 028 if (variables != null){ 029 for(int i=0;i<variables.size();i++){ 030 if (variables.getElement(i).getVariableName() != null){ 031 psql.getVariableStack().push(variables.getElement(i).getVariableName()); 032 } 033// variables.getElement(i).doParse(psql,plocation); 034 } 035 } 036 returnExpr.doParse(psql, plocation); 037 this.setReturnTable(this.getDefaultTable()); 038 039 if (variables != null){ 040 for(int i=0;i<variables.size();i++){ 041 variables.getElement(i).doParse(psql,plocation); 042 } 043 } 044 045 if (variables != null){ 046 for(int i=0;i<variables.size();i++){ 047 if (variables.getElement(i).getVariableName() != null){ 048 psql.getVariableStack().pop(); 049 } 050 } 051 } 052 psql.getDaxFunctionStack().pop(); 053 054 if (this.getReturnTable() != null){ 055 if (psql.getDaxFunctionStack().size() > 0){ 056 TDaxFunction function = psql.getDaxFunctionStack().peek(); 057 function.setDefaultTable(this.getReturnTable()); 058 } 059 } 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 public void setVariables(TPTNodeList<TDaxVar> variables) { 073 this.variables = variables; 074 } 075 076 public void setReturnExpr(TExpression returnExpr) { 077 this.returnExpr = returnExpr; 078 } 079 080 public TPTNodeList<TDaxVar> getVariables() { 081 082 return variables; 083 } 084 085 public TExpression getReturnExpr() { 086 return returnExpr; 087 } 088}