    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}