1 package jp.sourceforge.ea2ddl.dao.allcommon.s2dao;
\r
3 import java.sql.Statement;
\r
4 import java.sql.PreparedStatement;
\r
5 import java.sql.ResultSet;
\r
6 import java.sql.SQLException;
\r
8 import org.seasar.extension.jdbc.ResultSetFactory;
\r
10 // import jp.sourceforge.ea2ddl.dao.allcommon.cbean.FetchNarrowingBean;
\r
11 // import jp.sourceforge.ea2ddl.dao.allcommon.cbean.FetchNarrowingBeanContext;
\r
12 // import jp.sourceforge.ea2ddl.dao.allcommon.cbean.outsidesql.OutsideSqlContext;
\r
13 import jp.sourceforge.ea2ddl.dao.allcommon.s2dao.internal.sqlhandler.InternalBasicHandler.SQLExceptionHandler;
\r
16 * This is unused in DBFlute so this is very NORMAL result-set-factory for S2Dao.
\r
17 * @author DBFlute(AutoGenerator)
\r
19 public class FetchNarrowingResultSetFactory implements ResultSetFactory {
\r
21 // ===================================================================================
\r
27 public FetchNarrowingResultSetFactory() {
\r
30 // ===================================================================================
\r
35 * @param statement Statement. (NotNull)
\r
36 * @return Result set for procedure executing of s2dao. (NotNull)
\r
38 public ResultSet getResultSet(Statement statement) { // Unused in DBFlute
\r
39 return doGetResultSet(statement);
\r
43 * Create result set.
\r
44 * @param ps Prepared statement. (NotNull)
\r
45 * @return Result set. (NotNull)
\r
47 public ResultSet createResultSet(PreparedStatement ps) { // Unused in DBFlute
\r
48 return executeQuery(ps);
\r
50 // *Move to InternalBasicSelectHandler
\r
51 // if (!FetchNarrowingBeanContext.isExistFetchNarrowingBeanOnThread()) {
\r
52 // return resultSet;
\r
54 // final FetchNarrowingBean cb = FetchNarrowingBeanContext.getFetchNarrowingBeanOnThread();
\r
55 // if (!isUseFetchNarrowingResultSetWrapper(cb)) {
\r
56 // return resultSet;
\r
58 // final FetchNarrowingResultSetWrapper wrapper;
\r
59 // if (OutsideSqlContext.isExistOutsideSqlContextOnThread()) {
\r
60 // final OutsideSqlContext outsideSqlContext = OutsideSqlContext.getOutsideSqlContextOnThread();
\r
61 // wrapper = new FetchNarrowingResultSetWrapper(resultSet, cb, outsideSqlContext.isOffsetByCursorForcedly(), outsideSqlContext.isLimitByCursorForcedly());
\r
63 // wrapper = new FetchNarrowingResultSetWrapper(resultSet, cb, false, false);
\r
68 // protected boolean isUseFetchNarrowingResultSetWrapper(FetchNarrowingBean cb) {
\r
69 // if (cb.getSafetyMaxResultSize() > 0) {
\r
72 // if (!cb.isFetchNarrowingEffective()) {
\r
73 // return false;// It is not necessary to control.
\r
75 // if (OutsideSqlContext.isExistOutsideSqlContextOnThread()) {
\r
76 // final OutsideSqlContext outsideSqlContext = OutsideSqlContext.getOutsideSqlContextOnThread();
\r
77 // if (outsideSqlContext.isOffsetByCursorForcedly() || outsideSqlContext.isLimitByCursorForcedly()) {
\r
81 // if (cb.isFetchNarrowingSkipStartIndexEffective() || cb.isFetchNarrowingLoopCountEffective()) {
\r
87 // ===================================================================================
\r
90 protected ResultSet doGetResultSet(Statement statement) {
\r
92 return statement.getResultSet();
\r
93 } catch (SQLException e) {
\r
94 handleSQLException(e, statement);
\r
95 return null;// Unreachable!
\r
99 protected ResultSet executeQuery(PreparedStatement ps) {
\r
101 return ps.executeQuery();
\r
102 } catch (SQLException e) {
\r
103 handleSQLException(e, ps);
\r
104 return null;// Unreachable!
\r
108 protected void handleSQLException(SQLException e, Statement statement) {
\r
109 new SQLExceptionHandler().handleSQLException(e, statement);
\r