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 java.sql.Connection; // 6.3.6.1 (2015/08/28) 019 020import org.opengion.hayabusa.resource.ResourceManager; 021import org.opengion.fukurou.util.ErrorMessage; 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 * Connectionオブジェクトを外部から設定します。 040 * 041 * 通常は、Transaction と 接続先(DBID) を使用して作成した Connection を渡します。 042 * このクラスでは、Connection の close() や、ConnectionFactory への返却なども 043 * 行いません。それらは、外部処理(通常は、Transactionオブジェクト)で行います。 044 * 045 * Connection には、null は登録できません。 046 * 047 * @og.rev 6.3.6.1 (2015/08/28) 新規追加 048 * 049 * @param conn Connectionオブジェクト 050 */ 051 void setConnection( final Connection conn ) ; 052 053 /** 054 * ステートメント文字列をセットします。 055 * 056 * @param statement ステートメント文字列 057 * 058 */ 059 void setStatement( String statement ) ; 060 061 /** 062 * ステートメント文字列を取り出します。 063 * 064 * @return ステートメント文字列 065 * 066 */ 067 String getStatement(); 068 069 /** 070 * 引数配列付のクエリーを実行します。 071 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 072 * これは、PreparedQuery で使用する引数を配列でセットするものです。 073 * select * from emp where deptno = ? and job = ? などの PreparedQuery や 074 * { call xxxx( ?,?,? ) } などの CallableStatement の ? 部分の引数を 075 * 順番にセットしていきます。 076 * 077 * @og.rev 6.1.1.0 (2015/01/17) 引数配列を可変引数にして、execute() を含めて定義します。 078 * 079 * @param args オブジェクトの引数配列 080 */ 081 void execute( String... args ) ; // 6.1.1.0 (2015/01/17) refactoring 082 083 /** 084 * 引数配列付のクエリーを実行します。 085 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 086 * これは、PreparedQuery で使用する引数を配列でセットするものです。 087 * select * from emp where deptno = ? and job = ? などの PreparedQuery の 088 * ? 部分の引数を 089 * 順番にセットしていきます。 090 * 091 * @og.rev 4.0.0.0 (2005/01/31) 新規追加 092 * 093 * @param keys オブジェクトのキー配列 094 * @param args オブジェクトの引数配列 095 */ 096 void execute( final String[] keys, final String... args ) ; // 6.1.1.0 (2015/01/17) refactoring 097 098 /** 099 * 引数配列付のクエリーを実行します。 100 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 101 * これは、PreparedQuery で使用する引数を配列でセットするものです。 102 * select * from emp where deptno = ? and job = ? などの PreparedQuery の 103 * ? 部分の引数を 104 * 順番にセットしていきます。 105 * 106 * @og.rev 4.0.0.0 (2005/01/31) 引数をすべて受け取って実行するメソッドを標準メソッドとして追加 107 * 108 * @param names カラム名(CSV形式) 109 * @param dbArrayType アレイタイプ名称 110 * @param sysArg DBSysArg配列 111 * @param userArg DBUserArg配列 112 */ 113 void execute( final String names,final String dbArrayType, 114 final DBSysArg[] sysArg,final DBUserArg[] userArg ) ; 115 116 /** 117 * 引数配列付のクエリーを実行します。 118 * 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 119 * これは、PreparedQuery で使用する引数を配列でセットするものです。 120 * select * from emp where deptno = ? and job = ? などの PreparedQuery の 121 * [カラム名] 部分の引数を、DBTableModelから順番にセットしていきます。 122 * 123 * @param rowNo 選択された行番号配列(登録する対象行) 124 * @param table DBTableModelオブジェクト(登録する元データ) 125 */ 126 void execute( final int[] rowNo, final DBTableModel table ) ; 127 128 /** 129 * クエリーの実行結果を返します。 130 * クエリーが失敗した場合や,CallableStatement の呼び出し等で実行件数が明確でない 131 * 場合は, -1 が返されます。 132 * 133 * @return クエリーの実行件数 134 */ 135 int getExecuteCount() ; 136 137 /** 138 * 実行結果の DBTableModel を返します。 139 * 140 * @return DBTableModelオブジェクト 141 */ 142 DBTableModel getDBTableModel() ; 143 144 /** 145 * データベースの最大検索件数を返します。 146 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 147 * DBTableModelのデータとして登録する最大件数をこの値に設定します。 148 * サーバーのメモリ資源と応答時間の確保の為です。 149 * 150 * @return 最大検索件数 151 */ 152 int getMaxRowCount() ; 153 154 /** 155 * データベースの最大検索件数をセットします。 156 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 157 * DBTableModelのデータとして登録する最大件数をこの値に設定します。 158 * サーバーのメモリ資源と応答時間の確保の為です。 159 * 160 * @param maxRowCount 最大検索件数 161 */ 162 void setMaxRowCount( int maxRowCount ) ; 163 164 /** 165 * データベースの検索スキップ件数を返します。 166 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 167 * DBTableModelのデータとしては、スキップ件数分は登録されません。 168 * サーバーのメモリ資源と応答時間の確保の為です。 169 * 170 * @return 最大検索件数 171 */ 172 int getSkipRowCount(); 173 174 /** 175 * データベースの検索スキップ件数をセットします。 176 * データベース自体の検索は,指定されたSQLの全件を検索しますが, 177 * DBTableModelのデータとしては、スキップ件数分は登録されません。 178 * サーバーのメモリ資源と応答時間の確保の為です。 179 * 180 * @param skipRowCount スキップ件数 181 */ 182 void setSkipRowCount( int skipRowCount ); 183 184 /** 185 * アップデートフラグを取得します。 186 * これは、Query で更新処理の SQL 文を実行したときに true にセットされます。 187 * 更新処理が実行:true / 検索処理のみ:false を取得できます。 188 * 189 * @og.rev 2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更 190 * @og.rev 4.0.0.0 (2007/07/20) メソッド名変更( getUpdateFlag() ⇒ isUpdate() ) 191 * 192 * @return アップデートされたかどうか( 更新処理:true / 検索処理:false ) 193 */ 194 boolean isUpdate() ; 195 196 /** 197 * リソースマネージャーをセットします。 198 * これは、言語(ロケール)に応じた DBColumn をあらかじめ設定しておく為に 199 * 必要です。 200 * リソースマネージャーが設定されていない、または、所定のキーの DBColumn が 201 * リソースに存在しない場合は、内部で DBColumn オブジェクトを作成します。 202 * 203 * @og.rev 4.0.0.0 (2005/01/31) lang ⇒ ResourceManager へ変更 204 * 205 * @param resource リソースマネージャー 206 */ 207 void setResourceManager( ResourceManager resource ) ; 208 209 /** 210 * エラーコード を取得します。 211 * エラーコード は、ErrorMessage クラスで規定されているコードです。 212 * 213 * @return エラーコード 214 */ 215 int getErrorCode() ; 216 217 /** 218 * エラーメッセージオブジェクト を取得します。 219 * 220 * @return エラーメッセージオブジェクト 221 */ 222 ErrorMessage getErrorMessage() ; 223 224 /** 225 * 編集設定オブジェクトをセットします。 226 * 227 * @og.rev 5.3.6.0 (2011/06/01) 新規追加 228 * 229 * @param config 編集設定オブジェクト 230 */ 231 void setEditConfig( final DBEditConfig config ); 232}