    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】各タスクを１行にまとめる時のカラム名(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】各タスクを１行にまとめる時のカラム名(CSV形式)をセットします
    094         *              (初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[={@og.value org.opengion.hayabusa.html.ViewGanttTableParam#GROUP_COLUMNS_VALUE}])。
    095         *
    096         * @og.tag
    097         * ガントチャートで、同一要件のタスクを１行にまとめて表示します。
    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         * 例えば、１日単位の精度でタスクを割り当てる場合、期間の最小単位は、１ に
    167         * なります。表示する場合も、この数字が最小単位となり、HTMLのテーブルの
    168         * １カラムに相当します。例えば、最小単位を、０．５ にすると、
    169         * 半日単位でタスクを割り当てることができます。１０ にすると、１０日単位
    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)を、０．５日単位の精度で指定した場合、
    187         * そのままでは、ヘッダーも最小期間単位で表示されますが、１日単位で表示
    188         * させたい場合は、１ を設定します。
    189         * また、１週間単位では、７ を指定します。
    190         * １ヶ月単位などの、不定長での指定はできません。
    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="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">
    212         * http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt </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         * @see         #setUseSeqDay( String )
    265         * @param       startDay 開始日
    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}