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.util.concurrent.ConcurrentMap;                                                      // 6.4.3.3 (2016/03/04)
019
020import org.opengion.fukurou.util.ErrorMessage;
021import org.opengion.fukurou.db.Transaction;
022import org.opengion.hayabusa.resource.ResourceManager;
023
024/**
025 * TableFilter は、TableFilterTag で使用される DBTableModelの処理用のインターフェースです。
026 * 適切な実装(サブクラス)を TableFilterTag に与えることで,DBTableModelの処理を適宜
027 * 切り替えることが出来ます。
028 *
029 * @og.rev 3.8.5.0 (2006/03/20) 新規作成
030 * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
031 *
032 * @version  0.9.0  2000/10/17
033 * @author   Kazuhiko Hasegawa
034 * @since    JDK1.1,
035 */
036public interface TableFilter {
037        /**
038         * DBTableModelの処理を実行します。
039         * 処理自体は, 各サブクラスの実装に依存します。
040         *
041         * @return      DBTableModelオブジェクト
042         */
043        DBTableModel execute() ;
044
045        /**
046         * DBTableModel をセットします。
047         *
048         * @param       table DBTableModelオブジェクト
049         */
050        void setDBTableModel( DBTableModel table ) ;
051
052        /**
053         * DBTableModel を取得します。
054         *
055         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
056         *
057         * @return      内部のDBTableModel
058         */
059        DBTableModel getDBTableModel() ;
060
061        /**
062         * データ処理の方法(A:追加 C:更新 D:削除)を指定します。
063         *
064         * 通常は、DBTableModel に自動設定されている modifyType を元に、データ処理方法を
065         * 選別します。(A:追加 C:更新 D:削除)
066         * この場合、行単位で modifyType の値を取得して判別する必要がありますが、一般には
067         * 処理対象は、全件おなじ modifyType である可能性が高いです。
068         * また、selectedAll などで強制的に全件処理対象とする場合は、modifyType に値が
069         * 設定さていません。その様な場合に外部より modifyType を指定します。
070         * 初期値は、自動判定 です。
071         *
072         * @param  type データ処理の方法(A:追加 C:更新 D:削除)
073         */
074        void setModifyType( String type ) ;
075
076        /**
077         * データ処理の方法(A:追加 C:更新 D:削除)を取得します。
078         *
079         * 初期値は、自動判定 です。
080         *
081         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
082         *
083         * @return  データ処理の方法(A:追加 C:更新 D:削除)
084         */
085        String getModifyType() ;
086
087        /**
088         * キーと値のペアの変数配列を受け取ります。
089         *
090         * ここでは、この方式以外に、パラメーターMapを受け取る方法もあります。
091         *
092         * keys,vals とパラメーターMapを同時に指定した場合は、両方とも有効です。
093         * ただし、キーが重複した場合は、不定と考えてください。
094         *
095         * @param   keys キー配列
096         * @param   vals 値配列
097         */
098        void setKeysVals( String[] keys , String[] vals ) ;
099
100        /**
101         * 選択された行番号の配列をセットします。
102         *
103         * 表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を
104         * 処理の対象とします。
105         *
106         * @param   rowNo 行番号の配列(可変長引数)
107         */
108        void setParameterRows( int... rowNo ) ;
109
110        /**
111         * 選択された行番号の配列を取得します。
112         *
113         * 表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を
114         * 処理の対象とします。
115         *
116         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
117         *
118         * @return  行番号の配列
119         */
120        int[] getParameterRows() ;
121
122        /**
123         * アクセスログ取得の為,Transactionオブジェクトを設定します。
124         *
125         * @og.rev 5.1.9.0 (2010/08/01) Transaction 対応(新規追加)
126         *
127         * @param   tran Transactionオブジェクト
128         */
129        void setTransaction( Transaction tran ) ;
130
131        /**
132         * アクセスログ取得の為,Transactionオブジェクトを取得します。
133         *
134         * @og.rev 5.1.9.0 (2010/08/01) Transaction 対応(新規追加)
135         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
136         *
137         * @return      Transactionオブジェクト
138         */
139        Transaction getTransaction() ;
140
141        /**
142         * DBIDを指定します。
143         *
144         * @og.rev 4.2.4.0 (2008/06/23) 新規追加
145         *
146         * @param dbid 接続先ID
147         */
148        void setDbid( String dbid ) ;
149
150        /**
151         * DBIDを取得します。
152         *
153         * @og.rev 4.2.4.0 (2008/06/23) 新規追加
154         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
155         *
156         * @return DBID(接続先ID)
157         */
158        String getDbid() ;
159
160        /**
161         * ボディー部分のSQLを指定します。
162         *
163         * @og.rev 4.2.4.0 (2008/06/23) 新規追加
164         *
165         * @param sql ボディー部分のSQL
166         */
167        void setSql( String sql ) ;
168
169        /**
170         * ボディー部分のSQLを取得します。
171         *
172         * @og.rev 4.2.4.0 (2008/06/23) 新規追加
173         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
174         *
175         * @return ボディー部分のSQL
176         */
177        String getSql() ;
178
179        /**
180         * パラメーターMapを指定します。
181         *
182         * keys,vals と パラメーターMapを同時に指定した場合は、両方とも有効です。
183         * ただし、キーが重複した場合は、不定と考えてください。
184         *
185         * @og.rev 5.6.5.2 (2013/06/21) 新規追加
186         * @og.rev 6.4.3.3 (2016/03/04) ConcurrentHashMap を受け取ることを明確にするため、I/FをConcurrentMapに変更します。
187         *
188         * @param paramMap パラメーターMap
189         */
190        void setParamMap( ConcurrentMap<String,String> paramMap ) ;
191
192        /**
193         * リソースオブジェクトを指定します。
194         *
195         * @og.rev 4.3.7.4 (2009/07/01) 新規追加
196         *
197         * @param resource リソースオブジェクト
198         */
199        void setResource( ResourceManager resource ) ;
200
201        /**
202         * リソースオブジェクトを取得します。
203         *
204         * @og.rev 4.3.7.4 (2009/07/01) 新規追加
205         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
206         *
207         * @return リソースオブジェクト
208         */
209        ResourceManager getResource() ;
210
211        /**
212         * デバッグ情報を表示するかどうか[true/false]を指定します。
213         * true でデバッグ情報を表示します。
214         *
215         * @param   flag 表示するかどうか [true:表示する/false:表示しない]
216         */
217        void setDebug( boolean flag ) ;
218
219        /**
220         * デバッグ情報を表示するかどうか[true/false]を取得します。
221         * true でデバッグ情報を表示します。
222         *
223         * @og.rev 5.5.2.6 (2012/05/25) インターフェースにgetterメソッド追加
224         *
225         * @return  デバッグ情報 [true:表示する/false:表示しない]
226         */
227        boolean isDebug() ;
228
229        /**
230         * エラーコード を取得します。
231         * エラーコード は、ErrorMessage クラスで規定されているコードです。
232         *
233         * @return   エラーコード
234         */
235        int getErrorCode() ;
236
237        /**
238         * エラーメッセージオブジェクト を取得します。
239         *
240         * @return   エラーメッセージオブジェクト
241         */
242        ErrorMessage getErrorMessage() ;
243}