001package gudusoft.gsqlparser.nodes.teradata; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.*; 005 006public class TTDUnpivot extends TParseTreeNode { 007 008 private TFromTable onTableRef; 009 private TConstantList valueColumnsInString; 010 private TConstantList unpivotColumnsInString; 011 private TConstantList columnListInString; 012 private TConstantList columnAliasListInString; 013 014 private TTable unPivotTable; 015 016 private TObjectNameList valueColumns = new TObjectNameList(); 017 private TObjectNameList unpivotColumns = new TObjectNameList(); 018 private TObjectNameList columnList = new TObjectNameList(); 019 020 public TObjectNameList getColumnList() { 021 return columnList; 022 } 023 024 public TObjectNameList getUnpivotColumns() { 025 return unpivotColumns; 026 } 027 028 public TTable getUnPivotTable() { 029 return unPivotTable; 030 } 031 032 public TConstantList getColumnAliasListInString() { 033 return columnAliasListInString; 034 } 035 036 public TConstantList getColumnListInString() { 037 return columnListInString; 038 } 039 040 public TConstantList getUnpivotColumnsInString() { 041 return unpivotColumnsInString; 042 } 043 044 public TConstantList getValueColumnsInString() { 045 return valueColumnsInString; 046 } 047 048 public void doParse(TCustomSqlStatement psql, ESqlClause plocation){ 049 unPivotTable = psql.analyzeFromTable(onTableRef,true); 050 TTable refTable = unPivotTable; 051 if (unPivotTable.getTableType() == ETableSource.subquery){ 052 refTable = unPivotTable.getSubquery().getTables().getTable(0); 053 } 054 for(int i=0;i<valueColumnsInString.size();i++){ 055 TConstant c = valueColumnsInString.getConstant(i); 056 TObjectName nc = TObjectName.createObjectName ( EDbVendor.dbvteradata, EDbObjectType.column,c.getValueToken()); 057 valueColumns.addObjectName(nc); 058 refTable.getLinkedColumns().addObjectName(nc); 059 nc.setSourceTable(refTable); 060 } 061 for(int i=0;i<unpivotColumnsInString.size();i++){ 062 TConstant c = unpivotColumnsInString.getConstant(i); 063 TObjectName nc = TObjectName.createObjectName (EDbVendor.dbvteradata, EDbObjectType.column,c.getValueToken()); 064 unpivotColumns.addObjectName(nc); 065 refTable.getLinkedColumns().addObjectName(nc); 066 nc.setSourceTable(refTable); 067 } 068 for(int i=0;i<columnListInString.size();i++){ 069 TConstant c = columnListInString.getConstant(i); 070 TObjectName nc = TObjectName.createObjectName ( EDbVendor.dbvteradata, EDbObjectType.column,c.getValueToken()); 071 columnList.addObjectName(nc); 072 refTable.getLinkedColumns().addObjectName(nc); 073 nc.setSourceTable(refTable); 074 } 075 } 076 077 public void init(Object arg1,Object arg2,Object arg3,Object arg4){ 078 onTableRef = (TFromTable)arg1; 079 valueColumnsInString = (TConstantList)arg2; 080 unpivotColumnsInString = (TConstantList)arg3; 081 columnListInString = (TConstantList)arg4; 082 } 083 084 public void init(Object arg1,Object arg2,Object arg3,Object arg4,Object arg5){ 085 init(arg1,arg2,arg3,arg4); 086 columnAliasListInString = (TConstantList)arg5; 087 } 088 089 public void accept(TParseTreeVisitor v){ 090 v.preVisit(this); 091 v.postVisit(this); 092 } 093 094 public void acceptChildren(TParseTreeVisitor v){ 095 v.preVisit(this); 096 v.postVisit(this); 097 } 098}