    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        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        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}