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;
22
23 import java.sql.PreparedStatement;
24 import java.sql.ResultSet;
25 import java.sql.SQLException;
26
27 import org.dbunit.dataset.DataSetException;
28 import org.dbunit.dataset.ITable;
29 import org.dbunit.dataset.ITableMetaData;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33
34
35
36
37
38
39 public class ForwardOnlyResultSetTableFactory implements IResultSetTableFactory
40 {
41
42
43
44
45 private static final Logger logger = LoggerFactory.getLogger(ForwardOnlyResultSetTableFactory.class);
46
47 public IResultSetTable createTable(String tableName, String selectStatement,
48 IDatabaseConnection connection) throws SQLException, DataSetException
49 {
50 if (logger.isTraceEnabled())
51 logger.trace("createTable(tableName={}, selectStatement={}, connection={}) - start",
52 new Object[]{ tableName, selectStatement, connection});
53
54 return new ForwardOnlyResultSetTable(tableName, selectStatement, connection);
55 }
56
57 public IResultSetTable createTable(ITableMetaData metaData,
58 IDatabaseConnection connection) throws SQLException, DataSetException
59 {
60 logger.trace("createTable(metaData={}, connection={}) - start", metaData, connection);
61
62 return new ForwardOnlyResultSetTable(metaData, connection);
63 }
64
65 public IResultSetTable createTable(String tableName,
66 PreparedStatement preparedStatement, IDatabaseConnection connection)
67 throws SQLException, DataSetException
68 {
69 if (logger.isTraceEnabled())
70 logger.trace("createTable(tableName={}, preparedStatement={}, connection={}) - start",
71 new Object[]{ tableName, preparedStatement, connection});
72
73 return createForwardOnlyResultSetTable(tableName, preparedStatement, connection);
74 }
75
76
77
78
79
80
81
82
83
84
85
86
87 ForwardOnlyResultSetTable createForwardOnlyResultSetTable(String tableName,
88 PreparedStatement preparedStatement, IDatabaseConnection connection)
89 throws SQLException, DataSetException
90 {
91 if (logger.isTraceEnabled())
92 logger.trace("createForwardOnlyResultSetTable(tableName={}, preparedStatement={}, connection={}) - start",
93 new Object[]{ tableName, preparedStatement, connection});
94
95 connection.getConfig().getConfigurator().configureStatement(preparedStatement);
96
97 ResultSet rs = preparedStatement.executeQuery();
98
99 boolean caseSensitiveTableNames = connection.getConfig().getFeature(DatabaseConfig.FEATURE_CASE_SENSITIVE_TABLE_NAMES);
100 ITableMetaData metaData = new ResultSetTableMetaData(tableName, rs, connection, caseSensitiveTableNames);
101 ForwardOnlyResultSetTable table = new ForwardOnlyResultSetTable(metaData, rs);
102 return table;
103 }
104
105
106 }