    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
    018/**
    019 * ファイルダウンロードアイコン処理に必要な情報を格納しておく
    020 * データ管理クラスです。
    021 * fileUD タグから、common/fileDownload.jsp に処理が遷移しますが、
    022 * その間、DBTableModel が指定の画面で作成されたか、また、view で
    023 * 指定されたカラムのみを抜き出しているか、スコープは、などの
    024 * チェックを行います。
    025 *
    026 * @og.rev 4.3.0.0 (2008/07/04) 新規追加
    027 *
    028 * @version  4.0
    029 * @author   Kazuhiko Hasegawa
    030 * @since    JDK5.0,
    031 */
    032public class DBLastSql  {
    033        private final String  guikey    ;               // 4.3.1.1 (2008/08/23) final化
    034        private final boolean overflow  ;               // 4.3.1.1 (2008/08/23) final化
    035        private String  scope                   ;
    036        private String  tableId                 ;
    037        private String  clmNames                ;
    038        private String  viewClmNames    ;               // 5.1.6.0 (2010/05/01) 画面項目並べ替え対応
    039        private String  orgClmNames     ;               // 6.0.2.4 (2014/10/17) Edit機能の JSPソース変更時の対応
    040
    041        private boolean useViewEditable =       true;   // 5.1.6.0 (2010/05/01) 画面項目並べ替え対応 (変数名変更)
    042
    043        /**
    044         * 初期情報を含んだ新規オブジェクトを作成します。
    045         *
    046         * @param    scope     スコープ [session/request]
    047         * @param    guikey    画面ID
    048         * @param    overflow  検索時にオーバーフローしたかどうか
    049         * @param    tableId   テーブルID(DBTableModelの格納キー)
    050         */
    051        public DBLastSql( final String scope,
    052                                                final String guikey,
    053                                                final boolean overflow,
    054                                                final String tableId ) {
    055                this.scope              = scope;
    056                this.guikey             = guikey;
    057                this.overflow   = overflow;
    058                this.tableId    = tableId;
    059        }
    060
    061        /**
    062         * DBTableModel を出力するときのカラム名(CSV形式)をセットします。
    063         *
    064         * ファイルダウンロード時に、view で表示した分だけ抜き出す場合は、
    065         * このカラム名を指定します。
    066         *
    067         * @param    clmNames カラム名(CSV形式)
    068         */
    069        public void setClmNames( final String clmNames ) {
    070                this.clmNames = clmNames;
    071        }
    072
    073        /**
    074         *  DBTableModel を出力するときのカラム名(CSV形式)を返します。
    075         *
    076         * ファイルダウンロード時に、view で表示した分だけ抜き出す場合は、
    077         * このカラム名を指定します。
    078         *
    079         * @return      カラム名(CSV形式)
    080         */
    081        public String getClmNames() { return clmNames; }
    082        /**
    083         * スコープ(session/request)をセットします。
    084         *
    085         * @param scope スコープ [session/request]
    086         */
    087        public void setScope( final String scope ) { this.scope = scope; }
    088
    089        /**
    090         * スコープ(session/request)を返します。
    091         *
    092         * @og.rev 5.3.6.0 (2011/06/01) 新規作成
    093         *
    094         * @return      スコープ(session/request)
    095         */
    096        public String getScope() { return scope; }
    097
    098        /**
    099         * スコープ(session/request)が、requestかどうかを返します。
    100         *
    101         * scope=="request" の場合は、DBTableModel は
    102         * メモリに残っていませんので、
    103         * １．抜出アイコンを表示しない。
    104         * ２．lastSql を利用してフルのDBTableModelを作成しなおす。
    105         * 方法が考えられます。
    106         *
    107         * @return      スコープが、requestなら、true
    108         */
    109        public boolean isRequest() { return "request".equals( scope ); }
    110
    111        /**
    112         * 画面IDを返します。
    113         *
    114         * この画面IDは、ファイルダウンロードアイコンの存在している
    115         * 画面と同じ箇所で、作成されたかをチェックする為に使用されます。
    116         *
    117         * @return      画面ID
    118         */
    119        public String getGuiKey() { return guikey; }
    120
    121        /**
    122         * 内部画面IDと等しいか判定します。
    123         *
    124         * gamenId != null &amp;&amp; gamenId.equals( lastSql.getGuikey() )
    125         * 処理と同等です。
    126         *
    127         * @param  gamenId 画面ID
    128         *
    129         * @return      引数が null でなく、且つ内部画面キーと同じ場合は、true
    130         */
    131        public boolean isGuiMatch( final String gamenId ) {
    132                return gamenId != null && gamenId.equals( guikey ) ;
    133        }
    134
    135        /**
    136         * 検索時にオーバーフローしたかどうかを返します。
    137         *
    138         * 検索時にオーバーフローした場合、ファイルダウンロードとして、
    139         * １．そのまま、DBTableModel の分だけを抜き出す。
    140         * ２．lastSql を利用してフルのDBTableModelを作成しなおす。
    141         * 方法が考えられます。
    142         *
    143         * @return  オーバーフローしたかどうか
    144         */
    145        public boolean isOverflow() { return overflow; }
    146
    147        /**
    148         *  テーブルID(DBTableModelの格納キー)をセットします。
    149         *
    150         * DBTableModel を取り出すときに使用します。
    151         *
    152         * @param       tableId テーブルID(DBTableModelの格納キー)
    153         * @see         #getTableId()
    154         */
    155        public void setTableId( final String tableId ) { this.tableId = tableId; }
    156
    157        /**
    158         *  テーブルID(DBTableModelの格納キー)を返します。
    159         *
    160         * DBTableModel を取り出すときに使用します。
    161         *
    162         * @return      テーブルID(DBTableModelの格納キー)
    163         * @see         #setTableId( String )
    164         */
    165        public String getTableId() { return tableId; }
    166
    167        /**
    168         * 内部テーブルID、スコープと等しいか判定します。
    169         *
    170         * tableId != null &amp;&amp; tableId.equals( lastSql.getTableId() ) &amp;&amp;
    171         * scope   != null &amp;&amp; scope.equals( lastSql.scope )
    172         * 処理と同等です。
    173         *
    174         * @param  tableId 画面ID
    175         * @param  scope   スコープ
    176         *
    177         * @return      引数が null でなく、且つ内部テーブルID、スコープと同じ場合は、true
    178         */
    179        public boolean isTableMatch( final String tableId, final String scope ) {
    180                return tableId != null && tableId.equals( this.tableId )
    181                          && scope != null && scope.equals( this.scope ) ;
    182        }
    183
    184        /**
    185         * DBTableModel を出力するときのカラム名(CSV形式)をセットします。
    186         *
    187         * 画面項目並び替え時に、view で表示した分だけ抜き出す場合は、
    188         * このカラム名を指定します。
    189         *
    190         * 左右分割などでViewが複数存在する場合は、'|'を区切り文字としてそれぞれのViewの
    191         * カラム一覧がセットします。
    192         *  例) AAA,BBB,CCC|DDD,EEE
    193         *
    194         * @og.rev 5.1.6.0 (2010/05/01) 新規作成
    195         *
    196         * @param       clmNames カラム名(CSV形式+|)
    197         * @see         #getViewClmNames()
    198         */
    199        public void setViewClmNames( final String clmNames ) {
    200                this.viewClmNames = clmNames;
    201        }
    202
    203        /**
    204         *  DBTableModel を出力するときのカラム名(CSV形式)を返します。
    205         *
    206         * 画面項目並び替え時に、view で表示した分だけ抜き出す場合は、
    207         * このカラム名を指定します。
    208         *
    209         * 左右分割などでViewが複数存在する場合は、'|'を区切り文字としてそれぞれのViewの
    210         * カラム一覧がセットされています。
    211         *  例) AAA,BBB,CCC|DDD,EEE
    212         *
    213         * @og.rev 5.1.6.0 (2010/05/01) 新規作成
    214         *
    215         * @return      カラム名(CSV形式+|)
    216         * @see         #setViewClmNames( String )
    217         */
    218        public String getViewClmNames() { return viewClmNames; }
    219
    220        /**
    221         * DBTableModel を出力するときのオリジナルのカラム名(CSV形式)をセットします。
    222         *
    223         * 画面項目並び替え時に、view で表示した分だけ抜き出すカラムと比較することで、
    224         * カラムの変動をチェックできます。
    225         *
    226         * 書式は、(!)や、(|)を含まない、カラムのCSV形式です。
    227         *
    228         * @og.rev 6.0.2.4 (2014/10/17) Edit機能の JSPソース変更時の対応
    229         *
    230         * @param       clmNames オリジナルのカラム名(CSV形式)
    231         * @see         #getOrgClmNames()
    232         */
    233        public void setOrgClmNames( final String clmNames ) {
    234                this.orgClmNames = clmNames;
    235        }
    236
    237        /**
    238         *  DBTableModel を出力するときのオリジナルのカラム名(CSV形式)を返します。
    239         *
    240         * 画面項目並び替え時に、view で表示した分だけ抜き出すカラムと比較することで、
    241         * カラムの変動をチェックできます。
    242         *
    243         * 書式は、(!)や、(|)を含まない、カラムのCSV形式です。
    244         *
    245         * @og.rev 6.0.2.4 (2014/10/17) Edit機能の JSPソース変更時の対応
    246         *
    247         * @return      オリジナルのカラム名(CSV形式)
    248         * @see         #setOrgClmNames( String )
    249         */
    250        public String getOrgClmNames() { return orgClmNames; }
    251
    252        /**
    253         * ユーザーによる画面項目の並び替えを禁止します。
    254         * @see #isViewEditable()
    255         */
    256        public void setViewNotEditable() { useViewEditable = false; }
    257
    258        /**
    259         * ユーザーによる画面項目の並び替えをが禁止されているかどうかを返します。
    260         *
    261         * @return      ユーザーによる画面項目の並び替えをが禁止されているかどうか
    262         * @see         #setViewNotEditable()
    263         */
    264        public boolean isViewEditable() { return useViewEditable; }
    265}