001package gudusoft.gsqlparser.stmt.mdx; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TExpression; 005import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 006import gudusoft.gsqlparser.nodes.mdx.TMdxCreateMeasureNode; 007import gudusoft.gsqlparser.stmt.dax.TDaxExprStmt; 008 009 010public class TMdxCreateMeasure extends TCustomSqlStatement { 011 012 private TMdxCreateMeasureNode createMeasureNode; 013 014 private String tableName; 015 private String measureName; 016 private TExpression daxExpression; 017 018 public TExpression getDaxExpression() { 019 return daxExpression; 020 } 021 022 public String getTableName() { 023 return tableName; 024 } 025 026 public String getMeasureName() { 027 return measureName; 028 } 029 030 public TMdxCreateMeasure(EDbVendor dbvendor) { 031 super(dbvendor); 032 sqlstatementtype = ESqlStatementType.sstmdxcreatemeasure; 033 } 034 public int doParseStatement(TCustomSqlStatement psql) { 035 if (rootNode == null) return -1; 036 super.doParseStatement(psql); 037 038 createMeasureNode = (TMdxCreateMeasureNode)rootNode; 039 this.measureName = createMeasureNode.getMeasureName(); 040 this.tableName = createMeasureNode.getTableName(); 041 042 TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvdax); 043 TSourceToken startToken = createMeasureNode.getDaxExpression().getStartToken(); 044 TSourceToken endToken = createMeasureNode.getDaxExpression().getEndToken(); 045 TSourceTokenList tokenList = startToken.container; 046 String exprQuery = ""; 047 for( int i=startToken.posinlist;i<=endToken.posinlist;i++){ 048 if (tokenList.get(i).tokencode == ';') break; 049 exprQuery += tokenList.get(i).toString(); 050 } 051 052 sqlParser.sqltext = exprQuery; 053 int iRet = sqlParser.parse(); 054 if ((iRet == 0)&& (sqlParser.getSqlstatements().size() == 1)){ 055 TDaxExprStmt exprStmt = (TDaxExprStmt)sqlParser.getSqlstatements().get(0); 056 this.daxExpression = exprStmt.getExpr(); 057 }else{ 058 059 for (int i=0; i<sqlParser.getSyntaxErrors().size();i++){ 060 sqlParser.getSyntaxErrors().get(i).lineNo += startToken.lineNo - 1; 061 sqlParser.getSyntaxErrors().get(i).columnNo += startToken.columnNo; 062 this.parseerrormessagehandle(sqlParser.getSyntaxErrors().get(i)); 063 } 064 } 065 066 return 0; 067 } 068 069 public void accept(TParseTreeVisitor v){ 070 v.preVisit(this); 071 v.postVisit(this); 072 } 073 074 public void acceptChildren(TParseTreeVisitor v){ 075 v.preVisit(this); 076 v.postVisit(this); 077 } 078 079}