1 28 29 package com.caucho.db.sql; 30 31 import com.caucho.db.table.Column; 32 import com.caucho.db.table.Table; 33 import com.caucho.db.table.TableIterator; 34 import com.caucho.log.Log; 35 36 import java.sql.SQLException ; 37 import java.util.logging.Logger ; 38 39 class ColumnExpr extends Expr { 40 private static final Logger log = Log.open(ColumnExpr.class); 41 42 private Table _table; 43 44 private int _tableIndex; 45 private Column _column; 46 private int _columnIndex; 47 48 private String _name; 49 private Class _type; 50 51 ColumnExpr(String name, Table table, int tableIndex, 52 int columnIndex, Class type) 53 { 54 _name = name; 55 _table = table; 56 _tableIndex = tableIndex; 57 _columnIndex = columnIndex; 58 _column = table.getColumns()[_columnIndex]; 59 _type = type; 60 } 61 62 public Class getType() 63 { 64 return _type; 65 } 66 67 70 public String getName() 71 { 72 return _name; 73 } 74 75 78 public Column getColumn() 79 { 80 return _column; 81 } 82 83 86 public Table getTable() 87 { 88 return _table; 89 } 90 91 94 public boolean isNull(QueryContext context) 95 throws SQLException 96 { 97 TableIterator []rows = context.getTableIterators(); 98 TableIterator row = rows[_tableIndex]; 99 100 return row.isNull(_column); 101 } 102 103 106 public String evalString(QueryContext context) 107 throws SQLException 108 { 109 TableIterator []rows = context.getTableIterators(); 110 TableIterator row = rows[_tableIndex]; 111 112 return row.getString(_column); 113 } 114 115 public int evalInt(QueryContext context) 116 throws SQLException 117 { 118 TableIterator []rows = context.getTableIterators(); 119 TableIterator row = rows[_tableIndex]; 120 121 return row.getInteger(_column); 122 } 123 124 public long evalLong(QueryContext context) 125 throws SQLException 126 { 127 TableIterator []rows = context.getTableIterators(); 128 TableIterator row = rows[_tableIndex]; 129 130 return row.getLong(_column); 131 } 132 133 public double evalDouble(QueryContext context) 134 throws SQLException 135 { 136 TableIterator []rows = context.getTableIterators(); 137 TableIterator row = rows[_tableIndex]; 138 139 return row.getDouble(_column); 140 } 141 142 148 public void evalToResult(QueryContext context, SelectResult result) 149 throws SQLException 150 { 151 TableIterator []rows = context.getTableIterators(); 152 TableIterator row = rows[_tableIndex]; 153 154 row.evalToResult(_column, result); 155 } 156 157 public boolean evalEqual(QueryContext context, byte []matchBuffer) 158 throws SQLException 159 { 160 TableIterator []rows = context.getTableIterators(); 161 TableIterator row = rows[_tableIndex]; 162 163 return row.isEqual(_column, matchBuffer); 164 } 165 166 public boolean evalEqual(QueryContext context, String string) 167 throws SQLException 168 { 169 TableIterator []rows = context.getTableIterators(); 170 TableIterator row = rows[_tableIndex]; 171 172 return row.isEqual(_column, string); 173 } 174 175 public boolean equals(Object o) 176 { 177 if (o == null || ! ColumnExpr.class.equals(o.getClass())) 178 return false; 179 180 ColumnExpr expr = (ColumnExpr) o; 181 182 return (_tableIndex == expr._tableIndex && 183 _column == expr._column); 184 } 185 186 public String toString() 187 { 188 return "ColumnExpr[" + _tableIndex + "," + _columnIndex + "]"; 189 } 190 } 191 | Popular Tags |