001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.ESqlClause; 004import gudusoft.gsqlparser.stmt.TSelectSqlStatement; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006 007/** 008* Represents a row in value clause of insert statement, or a row in values clause. 009*/ 010public class TMultiTarget extends TParseTreeNode { 011 private TExpression expr; 012 013 public TExpression getExpr() { 014 return expr; 015 } 016 017 private TSelectSqlNode subQueryNode = null; 018 private TSelectSqlStatement subQuery = null; 019 020 /** 021 * this value list was represented by a {@link TResultColumnList} 022 * @return 023 */ 024 public TResultColumnList getColumnList() { 025 return columnList; 026 } 027 028 029 /** 030 * this value list was generated from query. 031 * @return 032 */ 033 public TSelectSqlStatement getSubQuery() { 034 return subQuery; 035 } 036 037 private TResultColumnList columnList = null; 038 039 public void setSubQuery(TSelectSqlStatement subQuery) { 040 this.subQuery = subQuery; 041 } 042 043 public void setColumnList(TResultColumnList columnList) { 044 this.columnList = columnList; 045 } 046 047 public void init(Object arg1) 048 { 049 if (arg1 instanceof TSelectSqlNode){ 050 051 subQueryNode = (TSelectSqlNode)arg1; 052 } else if (arg1 instanceof TResultColumnList){ 053 columnList = (TResultColumnList)arg1; 054 } else if (arg1 instanceof TExpression){ 055 expr = (TExpression)arg1; 056 } 057 } 058 059 public void doParse(TCustomSqlStatement psql, ESqlClause plocation){ 060 if (subQueryNode != null){ 061 if (subQuery == null){ 062 subQuery = new TSelectSqlStatement(psql.dbvendor); 063 subQuery.rootNode = subQueryNode; 064 } 065 subQuery.doParseStatement(psql); 066 }else if (columnList != null){ 067 columnList.doParse(psql,plocation); 068 }else if (expr != null){ 069 expr.doParse(psql,plocation); 070 } 071 } 072 073 public void accept(TParseTreeVisitor v){ 074 v.preVisit(this); 075 v.postVisit(this); 076 } 077 078 public void acceptChildren(TParseTreeVisitor v){ 079 v.preVisit(this); 080 if (subQuery != null) subQuery.acceptChildren(v); 081 if (columnList != null) columnList.acceptChildren(v); 082 if (expr != null) expr.acceptChildren(v); 083 v.postVisit(this); 084 } 085 086 087}