    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.ViewGanttTableParam;
    019
    020import static org.opengion.fukurou.util.StringUtil.nval ;
    021
    022/**
    023 * viewﾀｸﾞの viewFormType が HTMLGanttTable の場合にﾊﾟﾗﾒｰﾀを設定します。
    024 *
    025 * ｶﾞﾝﾄﾁｬｰﾄを表示する、ViewForm_HTMLGanttTable ｸﾗｽに対して、各種ﾊﾟﾗﾒｰﾀを
    026 * 設定します。
    027 * ﾊﾟﾗﾒｰﾀが設定されていない場合は、ViewGanttTableParam の初期値が
    028 * 使用されます。
    029 * (ﾊﾟﾗﾒｰﾀを使用するには、viewﾀｸﾞのuseParam 属性をtrueに設定する必要があります。)
    030 *
    031 * @og.formSample
    032 * ●形式:&lt;og:ganttParam groupColumns="PRJCODE,RESOURCE_ID" minDuration="0.5" /&gt;
    033 * ●body:なし
    034 *
    035 * ●Tag定義:
    036 *   &lt;og:ganttParam
    037 *       groupColumns       【TAG】各ﾀｽｸを1行にまとめる時のｶﾗﾑ名(CSV形式)をｾｯﾄします (初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[=PRJCODE,RESOURCE_ID])
    038 *       durationColumn     【TAG】期間欄のｶﾗﾑ名をｾｯﾄします
    039 *       dystartColumn      【TAG】開始日付けのｶﾗﾑ名をｾｯﾄします (初期値:ViewGanttTableParam#DYSTART_COLUMN_VALUE[=DYSTART])
    040 *       dystartFormat      【TAG】開始日付けのﾌｫｰﾏｯﾄを指定します (初期値:ViewGanttTableParam#DYSTART_FORMAT_VALUE[=yyyyMMdd])
    041 *       minDuration        【TAG】最小期間(小数可)をｾｯﾄします(初期値:1)
    042 *       headerDuration     【TAG】ﾍｯﾀﾞｰの表示期間(小数可)をｾｯﾄします(初期値:最小期間(minDuration) と同じ)
    043 *       headerLocale       【TAG】ﾍｯﾀﾞｰを表示する時の、Locale(language のみ) を指定します (初期値:ViewGanttTableParam#HEADER_LOCALE_VALUE[=ja])
    044 *       useSeqDay          【TAG】ﾍｯﾀﾞｰ日付けの連続表示を行うかどうか[true/false]を指定します(初期値:false)
    045 *       startDay           【TAG】ﾍｯﾀﾞｰ日付けの開始日を指定します
    046 *       endDay             【TAG】ﾍｯﾀﾞｰ日付けの終了日を指定します
    047 *       debug              【TAG】ﾃﾞﾊﾞｯｸﾞ情報を出力するかどうか[true/false]を指定します(初期値:false)
    048 *   /&gt;
    049 *
    050 * ●使用例
    051 *     ViewFormTag の viewFormType が、ViewForm_HTMLGanttTable の場合に使用します。
    052 *     &lt;og:view
    053 *         viewFormType = &quot;HTMLGanttTable&quot;
    054 *         command      = &quot;{&#064;command}&quot;
    055 *         startNo      = &quot;0&quot;
    056 *         pageSize     = &quot;20&quot;
    057 *         <b>useParam  = &quot;true&quot;</b>
    058 *     &gt;
    059 *         &lt;og:ganttParam
    060 *              groupColumns   = "PRJCODE,RESOURCE_ID"
    061 *              durationColumn = "DURATION"
    062 *              dystartColumn  = "DYSTART"
    063 *              dystartFormat  = "yyyyMMdd"
    064 *              minDuration    = "0.5"
    065 *              headerDuration = "1"
    066 *              headerLocale   = "en"
    067 *              useSeqDay      = "true"
    068 *              startDay       = "20041020"
    069 *              endDay         = "20041028"
    070 *         /&gt;
    071 *     &lt;/og:view &gt;
    072 *
    073 * @og.rev 3.5.5.8 (2004/05/20) 新規作成
    074 * @og.group 画面表示
    075 *
    076 * @version     4.0
    077 * @author      Kazuhiko Hasegawa
    078 * @since       JDK5.0,
    079 */
    080public class ViewGanttParamTag extends ViewParamImpl {
    081        /** このプログラムのVERSION文字列を設定します。   {@value} */
    082        private static final String VERSION = "6.4.2.0 (2016/01/29)" ;
    083        private static final long serialVersionUID = 642020160129L ;
    084
    085        /**
    086         * ﾃﾞﾌｫﾙﾄｺﾝｽﾄﾗｸﾀｰ
    087         *
    088         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    089         */
    090        public ViewGanttParamTag() { super(); }         // これも、自動的に呼ばれるが、空のﾒｿｯﾄﾞを作成すると警告されるので、明示的にしておきます。
    091
    092        /**
    093         * 【TAG】各ﾀｽｸを1行にまとめる時のｶﾗﾑ名(CSV形式)をｾｯﾄします
    094         *              (初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#GROUP_COLUMNS_VALUE}])。
    095         *
    096         * @og.tag
    097         * ｶﾞﾝﾄﾁｬｰﾄで、同一要件のﾀｽｸを1行にまとめて表示します。
    098         * その場合のｸﾞﾙｰﾋﾟﾝｸﾞのｷｰとなるｶﾗﾑ名を指定します。
    099         * 複数ある場合は、CSV形式で指定できます。
    100         * 日付けでの重複は考慮されていませんので、ﾃﾞｰﾀ側でﾁｪｯｸしておいて下さい。
    101         * (初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#GROUP_COLUMNS_VALUE}])。
    102         *
    103         * @param       groupColumns    ｸﾞﾙｰﾌﾟｶﾗﾑ名 (CSV形式)
    104         * @see         org.opengion.hayabusa.html.ViewGanttTableParam#GROUP_COLUMNS_VALUE
    105         */
    106        public void setGroupColumns( final String groupColumns ) {
    107                putParam( ViewGanttTableParam.GROUP_COLUMNS_KEY ,
    108                                  nval( getRequestParameter( groupColumns ),null ) );
    109        }
    110
    111        /**
    112         * 【TAG】期間欄のｶﾗﾑ名をｾｯﾄします。
    113         *
    114         * @og.tag
    115         * ｶﾞﾝﾄを表示する場合の、各ﾀｽｸの幅(期間)のｶﾗﾑ名を指定します。
    116         * 各ﾀｽｸは、開始日と期間より、ｶﾞﾝﾄの指定のﾛｹｰｼｮﾝに割り当てられます。
    117         * 初期値は null です。
    118         *
    119         * @param       durationColumn  期間欄のｶﾗﾑ名
    120         */
    121        public void setDurationColumn( final String durationColumn ) {
    122                putParam( ViewGanttTableParam.DURATION_COLUMN_KEY ,
    123                                  nval( getRequestParameter( durationColumn ),null ) );
    124        }
    125
    126        /**
    127         * 【TAG】開始日付けのｶﾗﾑ名をｾｯﾄします
    128         *              (初期値:ViewGanttTableParam#DYSTART_COLUMN_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#DYSTART_COLUMN_VALUE}])。
    129         *
    130         * @og.tag
    131         * ｶﾞﾝﾄを表示する場合の、各ﾀｽｸの開始日付けのｶﾗﾑ名を指定します。
    132         * 各ﾀｽｸは、開始日と期間より、ｶﾞﾝﾄの指定のﾛｹｰｼｮﾝに割り当てられます。
    133         * (初期値:ViewGanttTableParam#DYSTART_COLUMN_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#DYSTART_COLUMN_VALUE}])。
    134         *
    135         * @param       dystartColumn   開始日ｶﾗﾑ名 (初期値:DYSTART)
    136         */
    137        public void setDystartColumn( final String dystartColumn ) {
    138                putParam( ViewGanttTableParam.DYSTART_COLUMN_KEY ,
    139                                   nval( getRequestParameter( dystartColumn ),null ) );
    140        }
    141
    142        /**
    143         * 【TAG】開始日付けのﾌｫｰﾏｯﾄを指定します
    144         *              (初期値:ViewGanttTableParam#DYSTART_FORMAT_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#DYSTART_FORMAT_VALUE}])。
    145         *
    146         * @og.tag
    147         * ｶﾞﾝﾄの開始日付 ﾃﾞｰﾀを取り込むときの日付けﾌｫｰﾏｯﾄを指定します。
    148         * この形式の日付け文字列を、内部で、日付けﾃﾞｰﾀとして管理します。
    149         * java.text.SimpleDateFormat で指定できる形式を指定します。
    150         * (初期値:ViewGanttTableParam#DYSTART_FORMAT_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#DYSTART_FORMAT_VALUE}])。
    151         *
    152         * @param       dystartFormat   開始日ﾌｫｰﾏｯﾄ
    153         * @see java.text.SimpleDateFormat
    154         */
    155        public void setDystartFormat( final String dystartFormat ) {
    156                putParam( ViewGanttTableParam.DYSTART_FORMAT_KEY ,
    157                                   nval( getRequestParameter( dystartFormat ),null ) );
    158        }
    159
    160        /**
    161         * 【TAG】最小期間(小数可)をｾｯﾄします
    162         *              (初期値:ViewGanttTableParam#MIN_DURATION_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#MIN_DURATION_VALUE}])。
    163         *
    164         * @og.tag
    165         * Duration で指定する期間の最小単位を指定します。
    166         * 例えば、1日単位の精度でﾀｽｸを割り当てる場合、期間の最小単位は、1 に
    167         * なります。表示する場合も、この数字が最小単位となり、HTMLのﾃｰﾌﾞﾙの
    168         * 1ｶﾗﾑに相当します。例えば、最小単位を、0.5 にすると、
    169         * 半日単位でﾀｽｸを割り当てることができます。10 にすると、10日単位
    170         * になります。
    171         * (初期値:ViewGanttTableParam#MIN_DURATION_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#MIN_DURATION_VALUE}])。
    172         *
    173         * @param       minDuration     最小期間
    174         */
    175        public void setMinDuration( final String minDuration ) {
    176                putParam( ViewGanttTableParam.MIN_DURATION_KEY ,
    177                                   nval( getRequestParameter( minDuration ),null ) );
    178        }
    179
    180        /**
    181         * 【TAG】ﾍｯﾀﾞｰの表示期間(小数可)をｾｯﾄします(初期値:最小期間(minDuration) と同じ)。
    182         *
    183         * @og.tag
    184         * ﾍｯﾀﾞｰ部の日付け欄で指定する表示間隔を指定します。
    185         *
    186         * 例えば、最小期間(minDuration)を、0.5日単位の精度で指定した場合、
    187         * そのままでは、ﾍｯﾀﾞｰも最小期間単位で表示されますが、1日単位で表示
    188         * させたい場合は、1 を設定します。
    189         * また、1週間単位では、7 を指定します。
    190         * 1ヶ月単位などの、不定長での指定はできません。
    191         * 初期値は最小期間(minDuration) と同じです。
    192         *
    193         * @param       headerDuration  表示期間 (小数可)
    194         */
    195        public void setHeaderDuration( final String headerDuration ) {
    196                putParam( ViewGanttTableParam.HEADER_DURATION_KEY ,
    197                                   nval( getRequestParameter( headerDuration ),null ) );
    198        }
    199
    200        /**
    201         * 【TAG】ﾍｯﾀﾞｰを表示する時の、Locale(language のみ) を指定します
    202         *              (初期値:ViewGanttTableParam#HEADER_LOCALE_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#HEADER_LOCALE_VALUE}])。
    203         *
    204         * @og.tag
    205         * ﾍｯﾀﾞｰ部の日付け欄で SimpleDateFormat を用いて解析していますが、
    206         * この Locale (language のみ)を指定できます。
    207         *
    208         * language は、有効な ISO 言語ｺｰﾄﾞです。
    209         * これらのｺｰﾄﾞは、ISO-639 で定義される 2 桁の小文字です。
    210         * ｺｰﾄﾞの完全なﾘｽﾄは、
    211         * <a href="https://ja.wikipedia.org/wiki/ISO_639-1%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7" target="_blank">
    212         * https://ja.wikipedia.org/wiki/ISO_639-1%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7 </a>
    213         * を始めいくつかの場所で入手できます。
    214         * SimpleDateFormat の Locale を指定するｺﾝｽﾄﾗｸﾀでは、全ての
    215         * ﾛｹｰﾙをｻﾎﾟｰﾄするわけではありませんのでご注意ください。
    216         * (初期値:ViewGanttTableParam#HEADER_LOCALE_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#HEADER_LOCALE_VALUE}])。
    217         *
    218         * @og.rev 3.5.5.9 (2004/06/07) 新規追加
    219         *
    220         * @param       headerLocale    ﾛｹｰﾙ (languageのみ)
    221         * @see         java.text.SimpleDateFormat#SimpleDateFormat(String , Locale)
    222         */
    223        public void setHeaderLocale( final String headerLocale ) {
    224                putParam( ViewGanttTableParam.HEADER_LOCALE_KEY ,
    225                                   nval( getRequestParameter( headerLocale ),null ) );
    226        }
    227
    228        /**
    229         * 【TAG】ﾍｯﾀﾞｰ日付けの連続表示を行うかどうか[true/false]を指定します
    230         *              (初期値:ViewGanttTableParam#USE_SEQ_DAY_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#USE_SEQ_DAY_VALUE}])。
    231         *
    232         * @og.tag
    233         * ﾍｯﾀﾞｰ部の日付け欄で開始日と終了日の範囲の連続日付け表示を行う場合に、
    234         * "true" に、設定します。開始日と終了日 の設定方法は、各属性を参照してください。
    235         * true:連続表示を行う / false:dystartColumn ｶﾗﾑで使用した分のみ
    236         * (初期値:ViewGanttTableParam#USE_SEQ_DAY_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#USE_SEQ_DAY_VALUE}])。
    237         *
    238         * @og.rev 3.6.1.0 (2005/01/05) 新規追加
    239         *
    240         * @param       useSeqDay       連続表示可否 [true:行う/false:行わない]
    241         * @see         #setStartDay( String )
    242         * @see         #setEndDay( String )
    243         */
    244        public void setUseSeqDay( final String useSeqDay ) {
    245                putParam( ViewGanttTableParam.USE_SEQ_DAY_KEY ,
    246                                   nval( getRequestParameter( useSeqDay ),null ) );
    247        }
    248
    249        /**
    250         * 【TAG】ﾍｯﾀﾞｰ日付けの開始日を指定します。
    251         *
    252         * @og.tag
    253         * ﾍｯﾀﾞｰ部の日付け欄で連続日付け表示使用時(seqDay="true")に、
    254         * この開始日より、終了日までの日付けﾍｯﾀﾞｰを連続表示します。
    255         * seqDay="true" で startDayを指定しない場合は、dystartColumn で
    256         * 指定された、最小日付けを使用します。逆に、この最小日付けよりも
    257         * 大きな日付けは、ｾｯﾄできません。ﾃﾞｰﾀとﾍｯﾀﾞｰの整合性が
    258         * 取れなくなります。
    259         *
    260         * この時の日付けﾌｫｰﾏｯﾄは、dystartFormat の指定と同じです。
    261         *
    262         * @og.rev 3.6.1.0 (2005/01/05) 新規追加
    263         *
    264         * @param       startDay        開始日
    265         * @see         #setUseSeqDay( String )
    266         * @see         #setEndDay( String )
    267         */
    268        public void setStartDay( final String startDay ) {
    269                putParam( ViewGanttTableParam.START_DAY_KEY ,
    270                                   nval( getRequestParameter( startDay ),null ) );
    271        }
    272
    273        /**
    274         * 【TAG】ﾍｯﾀﾞｰ日付けの終了日を指定します。
    275         *
    276         * @og.tag
    277         * ﾍｯﾀﾞｰ部の日付け欄で連続日付け表示使用時(seqDay="true")に、
    278         * 開始日より、この終了日までの日付けﾍｯﾀﾞｰを連続表示します。
    279         * seqDay="true" で endDayを指定しない場合は、dystartColumn で
    280         * 指定された、最大日付けを使用します。逆に、この最大日付けよりも
    281         * 小さな日付けは、ｾｯﾄできません。ﾃﾞｰﾀとﾍｯﾀﾞｰの整合性が
    282         * 取れなくなります。
    283         *
    284         * この時の日付けﾌｫｰﾏｯﾄは、dystartFormat の指定と同じです。
    285         *
    286         * @og.rev 3.6.1.0 (2005/01/05) 新規追加
    287         *
    288         * @param       endDay  終了日
    289         * @see         #setUseSeqDay( String )
    290         * @see         #setStartDay( String )
    291         */
    292        public void setEndDay( final String endDay ) {
    293                putParam( ViewGanttTableParam.END_DAY_KEY ,
    294                                   nval( getRequestParameter( endDay ),null ) );
    295        }
    296
    297        /**
    298         * ﾀｸﾞの名称を、返します。
    299         * 自分自身のｸﾗｽ名より、自動的に取り出せないため、このﾒｿｯﾄﾞをｵｰﾊﾞｰﾗｲﾄﾞします。
    300         *
    301         * @og.rev 4.0.0.0 (2005/01/31) 新規追加
    302         *
    303         * @return      ﾀｸﾞの名称
    304         * @og.rtnNotNull
    305         */
    306        @Override
    307        protected String getTagName() {
    308                return "ganttParam" ;
    309        }
    310
    311}