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