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