    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.taglib;
    017
    018import org.opengion.hayabusa.html.ViewCalendarParam;
    019
    020import static org.opengion.fukurou.util.StringUtil.nval ;
    021
    022/**
    023 * viewタグの viewFormType が HTMLCalendar の場合にパラメータを設定します。
    024 *
    025 * カレンダーを表示する、ViewForm_HTMLCalendar クラスに対して、各種パラメータを
    026 * 設定します。
    027 * パラメータが設定されていない場合は、ViewCalendarParam の初期値が使用されます。
    028 * (パラメータを使用するには、viewタグのuseParam 属性をtrueに設定する必要があります。)
    029 *
    030 * @og.formSample
    031 * ●形式：&lt;og:calendarParam ymKey="YYYYMM" dayKey="DY" firstWeek="0" /&gt;
    032 * ●body：なし
    033 *
    034 * ●Tag定義：
    035 *   &lt;og:calendarParam
    036 *       viewKeys           【TAG】行のキーとなるカラム名を複数指定します(事業所やWCなど)
    037 *       ymKey              【TAG】行のキーとなる年月を表すカラム名を指定します
    038 *       dayKey             【TAG】日付け(休日フラグ)のキーとなるカラム名の英字部分を指定します(DY1 ～ DY31)
    039 *       valueKey           【TAG】データの値となるカラム名の英字部分を指定します(初期値は使用しません)
    040 *       valueBRFlag        【TAG】データの値を使用する場合に、日付けとの関係で、BR を入れるかどうか指定します
    041 *       firstWeek          【TAG】カレンダ表示の週の初めを指定します( 0は、日曜日から、1は月曜日から)
    042 *       headerLocale       【TAG】週表示ヘッダーを表示する時の、Locale(language のみ) を指定します
    043 *       columnSize         【TAG】カレンダを横に並べる場合の数量を指定します(初期値: 3)
    044 *       debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
    045 *   /&gt;
    046 *
    047 * ●使用例
    048 *     ViewFormTag の viewFormType が、ViewCalendarParam の場合に使用します。
    049 *     useParam 属性を設定しておかないと、使用されません。
    050 *     &lt;og:view
    051 *         <b>viewFormType = &quot;HTMLCalendar&quot;</b>
    052 *         command      = &quot;{&#064;command}&quot;
    053 *         startNo      = &quot;0&quot;
    054 *         pageSize     = &quot;20&quot;
    055 *         <b>useParam     = &quot;true&quot;</b>
    056 *     &gt;
    057 *         &lt;og:calendarParam
    058 *              viewKeys     = "CDJGS"
    059 *              ymKey        = "YYYYMM"
    060 *              dayKey       = "DY"
    061 *              valueKey     = ""
    062 *              valueBRFlag  = "true"
    063 *              firstWeek    = "0"
    064 *              headerLocale = "en"
    065 *              columnSize   = "3"
    066 *         /&gt;
    067 *     &lt;/og:view &gt;
    068 *
    069 * @og.rev 3.5.6.0 (2004/06/18) 新規作成
    070 * @og.group 画面表示
    071 *
    072 * @version  4.0
    073 * @author       Kazuhiko Hasegawa
    074 * @since    JDK5.0,
    075 */
    076public class ViewCalendarParamTag extends ViewParamImpl {
    077        /** このプログラムのVERSION文字列を設定します。   {@value} */
    078        private static final String VERSION = "6.4.2.0 (2016/01/29)" ;
    079        private static final long serialVersionUID = 642020160129L ;
    080
    081        /**
    082         * デフォルトコンストラクター
    083         *
    084         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    085         */
    086        public ViewCalendarParamTag() { super(); }              // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
    087
    088        /**
    089         * 【TAG】行のキーとなるカラム名を複数指定(CSV形式)します(事業所やWCなど)。
    090         *
    091         * @og.tag
    092         * エンジン標準カレンダ(GE13)では、年月(YYYYMM)と事業所コード(CDJGS)
    093         * でユニークキーになります。また、能力カレンダなどでは、事業所、ワークセンタ
    094         * で、ユニークになります。
    095         * それらのキー項目を編集できるように、カラムをCSV形式で指定します。
    096         *
    097         * @og.rev 3.5.6.0 (2004/06/18) 新規作成
    098         *
    099         * @param       viewKeys 行カラム名 (CSV形式)
    100         */
    101        public void setViewKeys( final String viewKeys ) {
    102                putParam( ViewCalendarParam.VIEW_KEYS ,
    103                                   nval( getRequestParameter( viewKeys ),null ) );
    104        }
    105
    106        /**
    107         * 【TAG】行のキーとなる年月を表すカラム名を指定します。
    108         *
    109         * @og.tag
    110         * 現カレンダーは、年月毎に、３１個の日付けフィールドを持ったデータを
    111         * 前提としています。工場や事業所などの区分は、取得時には確定させておく必要があります。
    112         * 初期値は、ViewCalendarParam に依存します。(例：YYYYMM)
    113         *
    114         * @param       ymKey 行年月カラム
    115         */
    116        public void setYmKey( final String ymKey ) {
    117                putParam( ViewCalendarParam.YM_KEY ,
    118                                  nval( getRequestParameter( ymKey ),null ) );
    119        }
    120
    121        /**
    122         * 【TAG】日付け(休日フラグ)のキーとなるカラム名の英字部分を指定します(DY1 ～ DY31)。
    123         *
    124         * @og.tag
    125         * カレンダーを表示する場合の、各日付け欄のカラム名の英字部分を指定します。
    126         * 現カレンダーは、年月毎に、３１個の日付けフィールドを持ったデータを
    127         * 前提としています。よって、このカラム名(英字部分)＋日付け(１～３１)を
    128         * 動的に作成して、日付けカラムとして取得します。
    129         * 例えば、"DY" という文字を指定した場合、DY1 ～ DY31 のカラム名を
    130         * 使用して、検索結果の DBTableModel より値を取得します。
    131         * 初期値は、ViewCalendarParam に依存します。(例：DY)
    132         *
    133         * @param       dayKey 日付カラム(英字)
    134         */
    135        public void setDayKey( final String dayKey ) {
    136                putParam( ViewCalendarParam.DAY_KEY ,
    137                                  nval( getRequestParameter( dayKey ),null ) );
    138        }
    139
    140        /**
    141         * 【TAG】データの値となるカラム名の英字部分を指定します(初期値は使用しません)。
    142         *
    143         * @og.tag
    144         * カレンダーを表示する場合の、各日付け欄の値のカラム名の英字部分を指定します。
    145         * 現カレンダーは、年月毎に、３１個の値フィールドを持ったデータを
    146         * 前提としています。よって、このカラム名(英字部分)＋日付け(１～３１)を
    147         * 動的に作成して、値カラムとして取得します。
    148         * 例えば、"VAL" という文字を指定した場合、VAL1 ～ VAL31 のカラム名を
    149         * 使用して、検索結果の DBTableModel より値を取得します。
    150         * 初期値は、ViewCalendarParam に依存します。(例：使用していません)
    151         *
    152         * @param       valueKey 値カラム(英字) (初期値は使用しません)
    153         */
    154        public void setValueKey( final String valueKey ) {
    155                putParam( ViewCalendarParam.VALUE_KEY ,
    156                                  nval( getRequestParameter( valueKey ),null ) );
    157        }
    158
    159        /**
    160         * 【TAG】データの値を使用する場合に、日付けとの関係で、BR を入れるかどうか指定します。
    161         *
    162         * @og.tag
    163         * データを表示する場合、日付けの横につけるか、日付けの下に付けるかを指定します。
    164         * ただし、valueKey で、値カラムを指定した場合のみ、有効になります。
    165         * 初期値は、ViewCalendarParam に依存します。(例：true)
    166         *
    167         * @param       valueBRFlag 日付BRデータ制御 [true:BRを入れる/false:入れない]
    168         */
    169        public void setValueBRFlag( final String valueBRFlag ) {
    170                putParam( ViewCalendarParam.VALUE_BR_FLAG_KEY ,
    171                                  nval( getRequestParameter( valueBRFlag ),null ) );
    172        }
    173
    174        /**
    175         * 【TAG】カレンダ表示の週の初めを指定します( 0は、日曜日から、1は月曜日から)。
    176         *
    177         * @og.tag
    178         * カレンダの週表示で、どの曜日から表示を始めるかを指定します。
    179         * 0は、日曜日から、1は月曜日から表示を開始します。
    180         * 初期値は、ViewCalendarParam に依存します。(例：0 日曜日から)
    181         *
    182         * @param       firstWeek 開始週指定 [0:日曜/1:月曜…]
    183         */
    184        public void setFirstWeek( final String firstWeek ) {
    185                putParam( ViewCalendarParam.FIRSTWEEK_KEY ,
    186                                   nval( getRequestParameter( firstWeek ),null ) );
    187        }
    188
    189        /**
    190         * 【TAG】週表示ヘッダーを表示する時の、Locale(language のみ) を指定します。
    191         *
    192         * @og.tag
    193         * 現実装では、"ja" と "en" のみ指定可能です。
    194         * 将来的には、SimpleDateFormat を使用し、多言語対応しますが、現段階では、
    195         * (日、月、火、水、木、金、土)と、(SUN,MON,TUE,WED,THU,FRI,SAT)の
    196         * ２種類を切り替えているだけです。
    197         * どの曜日から表示を始めるかは、firstWeek 属性で設定します。
    198         * 初期値は、ViewCalendarParam に依存します。(例："en")
    199         *
    200         * @param       headerLocale ヘッダー言語 [ja/en]
    201         */
    202        public void setHeaderLocale( final String headerLocale ) {
    203                putParam( ViewCalendarParam.HEADER_LOCALE_KEY ,
    204                                   nval( getRequestParameter( headerLocale ),null ) );
    205        }
    206
    207        /**
    208         * 【TAG】カレンダを横に並べる場合の数量を指定します(初期値: 3)。
    209         *
    210         * @og.tag
    211         * カレンダを複数並べる場合の横方向の件数を指定します。
    212         * １年を表す場合、３＊４ や ２＊６ のカレンダが一般的です。
    213         * ここでは、横方向(３や２)の件数を指定することで、レイアウトを
    214         * 指定します。
    215         *
    216         * @og.rev 3.5.6.0 (2004/06/18) 新規作成
    217         *
    218         * @param       columnSize 横並び個数 (初期値:3)
    219         */
    220        public void setColumnSize( final String columnSize ) {
    221                putParam( ViewCalendarParam.COLUMN_SIZE_KEY ,
    222                                   nval( getRequestParameter( columnSize ),null ) );
    223        }
    224
    225        /**
    226         * タグの名称を、返します。
    227         * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。
    228         *
    229         * @og.rev 4.0.0.0 (2005/01/31) 新規追加
    230         *
    231         * @return  タグの名称
    232         * @og.rtnNotNull
    233         */
    234        @Override
    235        protected String getTagName() {
    236                return "calendarParam" ;
    237        }
    238}