001package gudusoft.gsqlparser.nodes; 002/* 003 * Date: 13-8-6 004 */ 005 006import gudusoft.gsqlparser.EDbObjectType; 007import gudusoft.gsqlparser.ETableSource; 008import gudusoft.gsqlparser.TCustomSqlStatement; 009import gudusoft.gsqlparser.TSourceToken; 010 011public class TLateralView extends TParseTreeNode { 012 private TFunctionCall udtf; 013 private TAliasClause tableAlias; 014 private TObjectNameList columnAliasList; 015 private boolean outer = false; 016 017 public TObjectNameList getColumnAliasList() { 018 return columnAliasList; 019 } 020 021 public boolean isOuter() { 022 return outer; 023 } 024 025 public TAliasClause getTableAlias() { 026 return tableAlias; 027 } 028 029 public TFunctionCall getUdtf() { 030 return udtf; 031 } 032 033 public void setOuter(boolean outer) { 034 this.outer = outer; 035 } 036 037 public TTable createATable(TCustomSqlStatement sql){ 038 TTable lateralTable = new TTable(); 039 if (tableAlias != null){ 040 lateralTable.setTableName(tableAlias.getAliasName()); 041 lateralTable.setAliasClause(tableAlias); 042 }else{ 043 TObjectName tableName = TObjectName.createObjectName ( sql.dbvendor, EDbObjectType.table,new TSourceToken("laterView")); 044 lateralTable.setTableName(tableName); 045 } 046 lateralTable.setTableType(ETableSource.lateralView); 047 lateralTable.setLateralView(this); 048 049 if (columnAliasList != null){ 050 for(TObjectName c:columnAliasList){ 051 lateralTable.getLinkedColumns().addObjectName(c); 052 } 053 } 054 055 return lateralTable; 056 } 057 058 public void init(Object arg1,Object arg2){ 059 udtf = (TFunctionCall)arg1; 060 tableAlias = (TAliasClause)arg2; 061 } 062 063 public void init(Object arg1,Object arg2,Object arg3){ 064 udtf = (TFunctionCall)arg1; 065 tableAlias = (TAliasClause)arg2; 066 columnAliasList = (TObjectNameList)arg3; 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 public void setUdtf(TFunctionCall udtf) { 080 this.udtf = udtf; 081 } 082 083 public void setTableAlias(TAliasClause tableAlias) { 084 this.tableAlias = tableAlias; 085 } 086 087 public void setColumnAliasList(TObjectNameList columnAliasList) { 088 this.columnAliasList = columnAliasList; 089 } 090}