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