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