001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.EDbObjectType; 004import gudusoft.gsqlparser.TSourceToken; 005 006/** 007* The column/table alias. 008*/ 009public class TAliasClause extends TParseTreeNode{ 010 011 public int searchColumn(TObjectName pColumn){ 012 int lcResult = -1; 013 if (columns == null) return lcResult; 014 for (int i=0; i<columns.size();i++){ 015 if (columns.getObjectName(i).toString().equalsIgnoreCase(pColumn.getColumnNameOnly())){ 016 lcResult = i; 017 break; 018 } 019 } 020 return lcResult; 021 } 022 023 private boolean isSybaseIndexHint; 024 025 public boolean isSybaseIndexHint() { 026 return isSybaseIndexHint; 027 } 028 029 public void setSybaseIndexHint(boolean sybaseIndexHint) { 030 031 isSybaseIndexHint = sybaseIndexHint; 032 } 033 034 private TPTNodeList<TTableHint> tableHints; 035 036 public void setTableHints(TPTNodeList<TTableHint> tableHints) { 037 this.tableHints = tableHints; 038 } 039 040 public TPTNodeList<TTableHint> getTableHints() { 041 042 return tableHints; 043 } 044 045 private boolean teradataNamedAlais; 046 047 public void setTeradataNamedAlais(boolean teradataNamedAlais) { 048 this.teradataNamedAlais = teradataNamedAlais; 049 } 050 051 public boolean isTeradataNamedAlais() { 052 053 return teradataNamedAlais; 054 } 055 056 private TObjectName aliasName = null; 057 //private TConstant constant; 058 //private TSourceToken sourcetoken; 059 060 private TObjectNameList columns = null; 061 062 public TObjectNameList getColumns() { 063 return columns; 064 } 065 066 private TSourceToken AsToken = null; 067 068 public void setAsToken(TSourceToken asToken) { 069 AsToken = asToken; 070 } 071 072 public TSourceToken getAsToken() { 073 074 return AsToken; 075 } 076 077 private boolean hasAs = false; 078 079 public void setHasAs(boolean hasAs) { 080 this.hasAs = hasAs; 081 } 082 083 public boolean isHasAs() { 084 return hasAs || (AsToken != null); 085 } 086 087 public void setAliasName(TObjectName aliasName) { 088 this.aliasName = aliasName; 089 } 090 091 /** 092 * 093 * @return Alias name 094 */ 095 public TObjectName getAliasName() { 096 return aliasName; 097 } 098 099 private TColumnDefinitionList columnNameTypeList; 100 101 public TColumnDefinitionList getColumnNameTypeList() { 102 return columnNameTypeList; 103 } 104 105 public void init(Object arg1,Object arg2,Object arg3){ 106 init(arg1,arg2); 107 columnNameTypeList = (TColumnDefinitionList)arg3; 108 109 } 110 public void init(Object arg1,Object arg2) 111 { 112 this.init(arg1); 113 this.columns = (TObjectNameList)arg2; 114 if (this.columns != null){ 115 for(int i=0;i<this.columns.size();i++){ 116 this.columns.getObjectName(i).setDbObjectType(EDbObjectType.column_alias); 117 } 118 } 119 } 120 121 public void init(Object arg1) 122 { 123 if (arg1 instanceof TObjectName){ 124 aliasName = (TObjectName)arg1; 125 // aliasName.setDbObjectType(EDbObjectType.alias); 126 }else if (arg1 instanceof TConstant){ 127 aliasName = new TObjectName(); 128 aliasName.init(null,((TConstant)arg1).getValueToken() ); 129 //constant = (TConstant)arg1; 130 }else if (arg1 instanceof TSourceToken){ 131 aliasName = new TObjectName(); 132 aliasName.init(null,(TSourceToken)arg1); 133 //sourcetoken = (TSourceToken)arg1; 134 } 135 if (aliasName != null){ 136 if (aliasName.getDbObjectType() == EDbObjectType.unknown){ 137 // aliasName.setObjectType(TObjectName.ttObjTableAlias); // need change to column alias in TResultColumn 138 aliasName.setDbObjectType(EDbObjectType.table_alias); 139 } 140 } 141 } 142 143 public void accept(TParseTreeVisitor v){ 144 v.preVisit(this); 145 v.postVisit(this); 146 } 147 148 public void acceptChildren(TParseTreeVisitor v){ 149 v.preVisit(this); 150 if (aliasName != null){ 151 aliasName.acceptChildren(v); 152 } 153 if (getColumns()!= null){ 154 getColumns().acceptChildren(v); 155 } 156 v.postVisit(this); 157 } 158 159 public void setColumns(TObjectNameList columns) { 160 this.columns = columns; 161 } 162 163 public void setColumnNameTypeList(TColumnDefinitionList columnNameTypeList) { 164 this.columnNameTypeList = columnNameTypeList; 165 } 166 167 public void setDBObjectToAlias(EDbObjectType dbObjectType){ 168 if (this.getAliasName() == null) return; 169 this.getAliasName().setDbObjectType(dbObjectType); 170 } 171}