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