001package gudusoft.gsqlparser.stmt.mysql; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TCaseExpression; 005import gudusoft.gsqlparser.nodes.TExpression; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007import gudusoft.gsqlparser.nodes.TWhenClauseItemList; 008 009public class TMySQLCaseStmt extends TCustomMySQLStmt { 010 public TMySQLCaseStmt (EDbVendor dbvendor){ 011 super(dbvendor); 012 sqlstatementtype = ESqlStatementType.sstmysqlcasestmt ; 013 } 014 015 void buildsql() { 016 } 017 018 void clear() { 019 } 020 021 String getasprettytext() { 022 return ""; 023 } 024 025 void iterate(TVisitorAbs pvisitor) { 026 } 027 028 public int doParseStatement(TCustomSqlStatement psql) { 029 if (rootNode == null) return -1; 030 super.doParseStatement(psql); 031 032 TCaseExpression caseNode = (TCaseExpression)rootNode; 033 this.expr = caseNode.getInput_expr(); 034 if (this.expr != null){ 035 this.expr.doParse(this,ESqlClause.unknown); 036 } 037 this.whenClauseItemList = caseNode.getWhenClauseItemList(); 038 this.whenClauseItemList.doParse(this,ESqlClause.unknown); 039 040 if (caseNode.getElse_statement_node_list() != null){ 041 caseNode.getElse_statement_node_list().doParse(psql,ESqlClause.unknown); 042 for (int i=0;i<caseNode.getElse_statement_node_list().size();i++){ 043 this.getDefaultStatementList().add(caseNode.getElse_statement_node_list().getStatementSqlNode(i).getStmt()); 044 } 045 } 046 047 return 0; 048 } 049 050 private TExpression expr = null; 051 052 public TExpression getExpr() { 053 return expr; 054 } 055 056 private TWhenClauseItemList whenClauseItemList = null; 057 058 public TWhenClauseItemList getWhenClauseItemList() { 059 return whenClauseItemList; 060 } 061 062 public TStatementList getDefaultStatementList() { 063 if (defaultStatementList == null){ 064 defaultStatementList = new TStatementList(); 065 } 066 return defaultStatementList; 067 } 068 069 private TStatementList defaultStatementList = null; 070 071 public void accept(TParseTreeVisitor v){ 072 v.preVisit(this); 073 v.postVisit(this); 074 } 075 076 public void acceptChildren(TParseTreeVisitor v){ 077 v.preVisit(this); 078 if (this.expr != null) expr.accept(v); 079 whenClauseItemList.accept(v); 080 if (defaultStatementList != null) defaultStatementList.accept(v); 081 v.postVisit(this); 082 } 083 084 public void setExpr(TExpression expr) { 085 this.expr = expr; 086 } 087 088 public void setWhenClauseItemList(TWhenClauseItemList whenClauseItemList) { 089 this.whenClauseItemList = whenClauseItemList; 090 } 091 092 public void setDefaultStatementList(TStatementList defaultStatementList) { 093 this.defaultStatementList = defaultStatementList; 094 } 095}