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 048 if (columnAliasList != null){ 049 for(TObjectName c:columnAliasList){ 050 lateralTable.getLinkedColumns().addObjectName(c); 051 } 052 } 053 054 return lateralTable; 055 } 056 057 public void init(Object arg1,Object arg2){ 058 udtf = (TFunctionCall)arg1; 059 tableAlias = (TAliasClause)arg2; 060 } 061 062 public void init(Object arg1,Object arg2,Object arg3){ 063 udtf = (TFunctionCall)arg1; 064 tableAlias = (TAliasClause)arg2; 065 columnAliasList = (TObjectNameList)arg3; 066 } 067 068 public void accept(TParseTreeVisitor v){ 069 v.preVisit(this); 070 v.postVisit(this); 071 } 072 073 public void acceptChildren(TParseTreeVisitor v){ 074 v.preVisit(this); 075 v.postVisit(this); 076 } 077 078 public void setUdtf(TFunctionCall udtf) { 079 this.udtf = udtf; 080 } 081 082 public void setTableAlias(TAliasClause tableAlias) { 083 this.tableAlias = tableAlias; 084 } 085 086 public void setColumnAliasList(TObjectNameList columnAliasList) { 087 this.columnAliasList = columnAliasList; 088 } 089}