001/* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016package org.opengion.hayabusa.db; 017 018import org.opengion.hayabusa.resource.ResourceManager; 019import org.opengion.fukurou.util.ErrorMessage; 020import org.opengion.fukurou.db.Transaction; 021 022 023/** 024 * ステートメント文を execute() する事により,データベースを検索した結果を DBTableModel に 025 * 割り当てるインターフェースです。 026 * 実際にこのインターフェースを継承したクラスでは、データベース以外に 027 * フラットファイルやXMLデータなどを読み込んで DBTableModel を作成させる 028 * 様な実装クラスを作成することができます。 029 * 030 * @og.group データ表示 031 * @og.group データ編集 032 * 033 * @version 4.0 034 * @author Kazuhiko Hasegawa 035 * @since JDK5.0, 036 */ 037public interface Query { 038 039 /** 040 * Queryオブジェクトを初期化します。 041 * これは、QueryFactory のプールから取り出すときに(または戻すとき)に 042 * 初期化するのに使用します。 043 * 044 */ 045 void init() ; 046 047 /** 048 * ステートメント文字列をセットします。 049 * 050 * @param statement ステートメント文字列 051 * 052 */ 053 void setStatement( String statement ) ; 054 055 /** 056 * ステートメント文字列を取り出します。 057 * 058 * @return ステートメント文字列 059 * 060 */ 061 String getStatement(); 062 063 /** 064 * クエリーを実行します。 065 * セットされているステートメント文字列とそのタイプが合っていない場合は, 066 * エラーになります。 067 * 実行結果は、DBTableModel にセットされます。 068 * 069 */ 070 void execute() ; 071 072 /** 073 * 引数配列付のクエリーを実行します。 074 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 075 * これは、PreparedQuery で使用する引数を配列でセットするものです。 076 * select * from emp where deptno = ? and job = ? などの PreparedQuery や 077 * { call xxxx( ?,?,? ) } などの CallableStatement の ? 部分の引数を 078 * 順番にセットしていきます。 079 * 080 * @param args オブジェクトの引数配列 081 */ 082 void execute( String[] args ) ; 083 084 /** 085 * 引数配列付のクエリーを実行します。 086 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 087 * これは、PreparedQuery で使用する引数を配列でセットするものです。 088 * select * from emp where deptno = ? and job = ? などの PreparedQuery の 089 * ? 部分の引数を 090 * 順番にセットしていきます。 091 * 092 * @og.rev 4.0.0.0 (2005/01/31) 新規追加 093 * 094 * @param keys オブジェクトのキー配列 095 * @param args オブジェクトの引数配列 096 */ 097 void execute( final String[] keys, final String[] args ) ; 098 099 /** 100 * 引数配列付のクエリーを実行します。 101 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 102 * これは、PreparedQuery で使用する引数を配列でセットするものです。 103 * select * from emp where deptno = ? and job = ? などの PreparedQuery の 104 * ? 部分の引数を 105 * 順番にセットしていきます。 106 * 107 * @og.rev 4.0.0.0 (2005/01/31) 引数をすべて受け取って実行するメソッドを標準メソッドとして追加 108 * 109 * @param names カラム名(CSV形式) 110 * @param dbArrayType アレイタイプ名称 111 * @param sysArg DBSysArg配列 112 * @param userArg DBUserArg配列 113 */ 114 void execute( final String names,final String dbArrayType, 115 final DBSysArg[] sysArg,final DBUserArg[] userArg ) ; 116 117 /** 118 * 引数配列付のクエリーを実行します。 119 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 120 * これは、PreparedQuery で使用する引数を配列でセットするものです。 121 * select * from emp where deptno = ? and job = ? などの PreparedQuery の 122 * [カラム名] 部分の引数を、DBTableModelから順番にセットしていきます。 123 * 124 * @param rowNo 選択された行番号配列(登録する対象行) 125 * @param table DBTableModelオブジェクト(登録する元データ) 126 */ 127 void execute( final int[] rowNo, final DBTableModel table ) ; 128 129 /** 130 * コミットを行います。 131 * 132 */ 133 void commit() ; 134 135 /** 136 * ロールバックを行います。 137 * 138 */ 139 void rollback() ; 140 141 /** 142 * 使用した Statementオブジェクトをクロースし、Connection オブジェクトを 143 * プールに返します。 144 * 145 */ 146 void close() ; 147 148 /** 149 * Connection オブジェクトを実際にクローズ(破棄)します。 150 * プールからも削除します。 151 * 実行時エラー等が発生したときに、このメソッドを呼び出します。 152 * 153 */ 154 void realClose() ; 155 156 /** 157 * クエリーの実行結果を返します。 158 * クエリーが失敗した場合や,CallableStatement の呼び出し等で実行件数が明確でない 159 * 場合は, -1 が返されます。 160 * 161 * @return クエリーの実行件数 162 */ 163 int getExecuteCount() ; 164 165 /** 166 * 実行結果の DBTableModel を返します。 167 * 168 * @return DBTableModelオブジェクト 169 */ 170 DBTableModel getDBTableModel() ; 171 172 /** 173 * データベースの最大検索件数を返します。 174 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 175 * DBTableModelのデータとして登録する最大件数をこの値に設定します。 176 * サーバーのメモリ資源と応答時間の確保の為です。 177 * 178 * @return 最大検索件数 179 */ 180 int getMaxRowCount() ; 181 182 /** 183 * データベースの最大検索件数をセットします。 184 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 185 * DBTableModelのデータとして登録する最大件数をこの値に設定します。 186 * サーバーのメモリ資源と応答時間の確保の為です。 187 * 188 * @param maxRowCount 最大検索件数 189 */ 190 void setMaxRowCount( int maxRowCount ) ; 191 192 /** 193 * データベースの検索スキップ件数を返します。 194 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 195 * DBTableModelのデータとしては、スキップ件数分は登録されません。 196 * サーバーのメモリ資源と応答時間の確保の為です。 197 * 198 * @return 最大検索件数 199 */ 200 int getSkipRowCount(); 201 202 /** 203 * データベースの検索スキップ件数をセットします。 204 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 205 * DBTableModelのデータとしては、スキップ件数分は登録されません。 206 * サーバーのメモリ資源と応答時間の確保の為です。 207 * 208 * @param skipRowCount スキップ件数 209 */ 210 void setSkipRowCount( int skipRowCount ); 211 212 /** 213 * アップデートフラグを取得します。 214 * これは、Query で更新処理の SQL 文を実行したときに true にセットされます。 215 * 更新処理が実行:true / 検索処理のみ:false を取得できます。 216 * 217 * @og.rev 2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更 218 * @og.rev 4.0.0.0 (2007/07/20) メソッド名変更( getUpdateFlag() ⇒ isUpdate() ) 219 * 220 * @return アップデートされたかどうか( 更新処理:true / 検索処理:false ) 221 */ 222 boolean isUpdate() ; 223 224 /** 225 * リソースマネージャーをセットします。 226 * これは、言語(ロケール)に応じた DBColumn をあらかじめ設定しておく為に 227 * 必要です。 228 * リソースマネージャーが設定されていない、または、所定のキーの DBColumn が 229 * リソースに存在しない場合は、内部で DBColumn オブジェクトを作成します。 230 * 231 * @og.rev 4.0.0.0 (2005/01/31) lang ⇒ ResourceManager へ変更 232 * 233 * @param resource リソースマネージャー 234 */ 235 void setResourceManager( ResourceManager resource ) ; 236 237 /** 238 * エラーコード を取得します。 239 * エラーコード は、ErrorMessage クラスで規定されているコードです。 240 * 241 * @return エラーコード 242 */ 243 int getErrorCode() ; 244 245 /** 246 * エラーメッセージオブジェクト を取得します。 247 * 248 * @return エラーメッセージオブジェクト 249 */ 250 ErrorMessage getErrorMessage() ; 251 252 /** 253 * Transactionオブジェクトを外部から設定します。 254 * 255 * 通常は、ConnectionFactory を使用して、内部で Connection を作成しますが、 256 * 一連のトランザクション処理を実施するには、外部から Transactionオブジェクトを 257 * を与えて、そこから、Connection を取り出す必要があります。 258 * 259 * ここでは、内部の connection が存在しない場合に限り、セットを許可します。 260 * 261 * @og.rev 5.1.9.0 (2010/08/01) 新規追加 262 * 263 * @param connID 接続先ID 264 * @param tran Transactionオブジェクト 265 */ 266 void setTransaction( final String connID , final Transaction tran ) ; 267 268 /** 269 * エディット設定オブジェクトをセットします。 270 * 271 * @og.rev 5.3.6.0 (2011/06/01) 新規追加 272 * 273 * @param config エディット設定オブジェクト 274 */ 275 void setEditConfig( final DBEditConfig config ); 276}