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     */
016    package org.opengion.hayabusa.db;
017    
018    import org.opengion.hayabusa.resource.ResourceManager;
019    import org.opengion.fukurou.util.ErrorMessage;
020    import 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     */
037    public 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             * ãƒ??タベã?スの接続å?IDをセãƒ?ƒˆしますã?
214             * シスãƒ?ƒ パラメータ ファイルに定義してある ãƒ??タベã?ス識別IDによってã€?
215             * 接続å?をå?り替えますã?
216             * こã?接続å?IDをå?に,Connection オブジェクトを作æ?しますã?
217             *
218             * @param   connectionID 接続å?ID
219             * @og.rev 5.1.9.0 (2010/08/01) å»?­¢
220             */
221    //      void setConnectionID( String connectionID ) ;
222    
223            /**
224             * アãƒ??ãƒ??トフラグを取得しますã?
225             * これは、Query で更新処ç�?? SQL æ–?‚’実行したときに true にセãƒ?ƒˆされますã?
226             * 更新処ç�?�Œ実行:true / 検索処ç�??み?šfalse を取得できますã?
227             *
228             * @og.rev 2.1.2.3 (2002/12/02) ãƒ??タベã?ス更新時に、更新フラグをセãƒ?ƒˆするように変更
229             * @og.rev 4.0.0.0 (2007/07/20) メソãƒ?ƒ‰名変更( getUpdateFlag() â‡?isUpdate() )
230             *
231             * @return       アãƒ??ãƒ??トされたかどã�?�‹( 更新処ç�?¼štrue / 検索処ç�?¼šfalse )
232             */
233    //      boolean getUpdateFlag() ;
234            boolean isUpdate() ;
235    
236            /**
237             * リソースマネージャーをセãƒ?ƒˆしますã?
238             * これは、è¨?ª?ロケール)に応じã�?DBColumn をあらかじめ設定しておく為に
239             * å¿?¦�ですã?
240             * リソースマネージャーが設定されてã�?�ªã�??またã?、所定ã?キーの DBColumn ã�?
241             * リソースに存在しなã�??合ã?、å?部で DBColumn オブジェクトを作æ?しますã?
242             *
243             * @og.rev 4.0.0.0 (2005/01/31) lang â‡?ResourceManager へ変更
244             *
245             * @param  resource リソースマネージャー
246             */
247            void setResourceManager( ResourceManager resource ) ;
248    
249            /**
250             * アクセスログ取得ã?為,ApplicationInfoオブジェクトを設定しますã?
251             *
252             * @og.rev 3.8.7.0 (2006/12/15) 新規追åŠ?
253             * @og.rev 5.1.9.0 (2010/08/01) å»?­¢
254             *
255             * @param   appInfo ApplicationInfo
256             */
257    //      void setApplicationInfo( ApplicationInfo appInfo ) ;
258    
259            /**
260             * エラーコーãƒ?を取得しますã?
261             * エラーコーãƒ?は、ErrorMessage クラスで規定されてã�?‚‹コードですã?
262             *
263             * @return   エラーコーãƒ?
264             */
265            int getErrorCode() ;
266    
267            /**
268             * エラーメãƒ?‚»ージオブジェクãƒ?を取得しますã?
269             *
270             * @return   エラーメãƒ?‚»ージオブジェクãƒ?
271             */
272            ErrorMessage getErrorMessage() ;
273    
274            /**
275             * Transactionオブジェクトを外部から設定しますã?
276             *
277             * 通常は、ConnectionFactory を使用して、å?部で Connection を作æ?しますがã€?
278             * ä¸??のトランザクション処ç�?‚’実施するには、外部から Transactionオブジェクトを
279             * を与えて、そこからã?Connection を取りå?すå¿?¦�がありますã?
280             *
281             * ここでは、å?部の connection が存在しなã�??合に限り、セãƒ?ƒˆを許可しますã?
282             *
283             * @og.rev 5.1.9.0 (2010/08/01) 新規追åŠ?
284             *
285             * @param       connID  接続å?ID
286             * @param       tran    Transactionオブジェクãƒ?
287             */
288            void setTransaction( final String connID , final Transaction tran ) ;
289    
290            /**
291             * エãƒ?‚£ãƒ?ƒˆ設定オブジェクトをセãƒ?ƒˆしますã?
292             *
293             * @og.rev 5.3.6.0 (2011/06/01) 新規追åŠ?
294             *
295             * @param config エãƒ?‚£ãƒ?ƒˆ設定オブジェクãƒ?
296             */
297            void setEditConfig( final DBEditConfig config );
298    }