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 java.io.IOException;
20
21 import com.healthmarketscience.jackcess.InvalidValueException;
22 import com.healthmarketscience.jackcess.impl.expr.Expressionator;
23
24
25
26
27
28 public class RowValidatorEvalContext extends RowEvalContext
29 {
30 private final TableImpl _table;
31 private String _helpStr;
32
33 public RowValidatorEvalContext(TableImpl table) {
34 super(table.getDatabase());
35 _table = table;
36 }
37
38 RowValidatorEvalContext setExpr(String exprStr, String helpStr) {
39 setExpr(Expressionator.Type.RECORD_VALIDATOR, exprStr);
40 _helpStr = helpStr;
41 return this;
42 }
43
44 @Override
45 protected TableImpl getTable() {
46 return _table;
47 }
48
49 public void validate(Object[] row) throws IOException {
50 try {
51 setRow(row);
52 Boolean result = (Boolean)eval();
53 if(!result) {
54 String msg = ((_helpStr != null) ? _helpStr : "Invalid row");
55 throw new InvalidValueException(withErrorContext(msg));
56 }
57 } finally {
58 reset();
59 }
60 }
61
62 @Override
63 protected String withErrorContext(String msg) {
64 return _table.withErrorContext(msg);
65 }
66 }