1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.dbunit.database.statement;
22
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25
26 import org.dbunit.dataset.datatype.DataType;
27 import org.dbunit.dataset.datatype.TypeCastException;
28
29 import java.sql.SQLException;
30
31
32
33
34
35
36 public class AutomaticPreparedBatchStatement implements IPreparedBatchStatement
37 {
38
39
40
41
42 private static final Logger logger = LoggerFactory.getLogger(AutomaticPreparedBatchStatement.class);
43
44 private final IPreparedBatchStatement _statement;
45 private int _batchCount = 0;
46 private int _threshold;
47 private int _result = 0;
48
49 public AutomaticPreparedBatchStatement(IPreparedBatchStatement statement, int threshold)
50 {
51 _statement = statement;
52 _threshold = threshold;
53 }
54
55
56
57
58 public void addValue(Object value, DataType dataType) throws TypeCastException,
59 SQLException
60 {
61 logger.debug("addValue(value={}, dataType={}) - start", value, dataType);
62
63 _statement.addValue(value, dataType);
64 }
65
66 public void addBatch() throws SQLException
67 {
68 logger.debug("addBatch() - start");
69
70 _statement.addBatch();
71 _batchCount++;
72
73 if (_batchCount % _threshold == 0)
74 {
75 _result += _statement.executeBatch();
76 }
77 }
78
79 public int executeBatch() throws SQLException
80 {
81 logger.debug("executeBatch() - start");
82
83 _result += _statement.executeBatch();
84 return _result;
85 }
86
87 public void clearBatch() throws SQLException
88 {
89 logger.debug("clearBatch() - start");
90
91 _statement.clearBatch();
92 _batchCount = 0;
93 }
94
95 public void close() throws SQLException
96 {
97 logger.debug("close() - start");
98
99 _statement.close();
100 }
101 }