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