1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.healthmarketscience.jackcess.impl;
18
19 import com.healthmarketscience.jackcess.expr.EvalException;
20 import com.healthmarketscience.jackcess.expr.Identifier;
21 import com.healthmarketscience.jackcess.expr.Value;
22
23
24
25
26
27 public abstract class RowEvalContext extends BaseEvalContext
28 {
29 private Object[] _row;
30
31 public RowEvalContext(DatabaseImpl db) {
32 super(db.getEvalContext());
33 }
34
35 protected void setRow(Object[] row) {
36 _row = row;
37 }
38
39 protected void reset() {
40 _row = null;
41 }
42
43 @Override
44 public Value getIdentifierValue(Identifier identifier) {
45
46 TableImpl table = getTable();
47
48
49
50 if(!table.isThisTable(identifier) ||
51 (identifier.getPropertyName() != null)) {
52 throw new EvalException("Cannot access fields outside this table for " +
53 identifier);
54 }
55
56 ColumnImpl col = table.getColumn(identifier.getObjectName());
57
58 Object val = col.getRowValue(_row);
59
60 return toValue(val, col.getType());
61 }
62
63 protected abstract TableImpl getTable();
64 }