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 * ●形式:<og:ganttParam groupColumns="PRJCODE,RESOURCE_ID" minDuration="0.5" />
033 * ●body:なし
034 *
035 * ●Tag定義:
036 *   <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 *   />
049 *
050 * ●使用例
051 *     ViewFormTag の viewFormType が、ViewForm_HTMLGanttTable の場合に使用します。
052 *     <og:view
053 *         viewFormType = "HTMLGanttTable"
054 *         command      = "{@command}"
055 *         startNo      = "0"
056 *         pageSize     = "20"
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 ViewGanttTableParam#GROUP_COLUMNS_VALUE}])。
095         *
096         * @og.tag
097         * ガントチャートで、同一要件のタスクを1行にまとめて表示します。
098         * その場合のグルーピングのキーとなるカラム名を指定します。
099         * 複数ある場合は、CSV形式で指定できます。
100         * 日付けでの重複は考慮されていませんので、データ側でチェックしておいて下さい。
101         * (初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[={@og.value 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 ViewGanttTableParam#DYSTART_COLUMN_VALUE}])。
129         *
130         * @og.tag
131         * ガントを表示する場合の、各タスクの開始日付けのカラム名を指定します。
132         * 各タスクは、開始日と期間より、ガントの指定のロケーションに割り当てられます。
133         * (初期値:ViewGanttTableParam#DYSTART_COLUMN_VALUE[={@og.value 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 ViewGanttTableParam#DYSTART_FORMAT_VALUE}])。
145         *
146         * @og.tag
147         * ガントの開始日付 データを取り込むときの日付けフォーマットを指定します。
148         * この形式の日付け文字列を、内部で、日付けデータとして管理します。
149         * java.text.SimpleDateFormat で指定できる形式を指定します。
150         * (初期値:ViewGanttTableParam#DYSTART_FORMAT_VALUE[={@og.value 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 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 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 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 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 ViewGanttTableParam#USE_SEQ_DAY_VALUE}])。
231         *
232         * @og.tag
233         * ヘッダー部の日付け欄で開始日と終了日の範囲の連続日付け表示を行う場合に、
234         * "true" に、設定します。開始日と終了日 の設定方法は、各属性を参照してください。
235         * true:連続表示を行う / false:dystartColumn カラムで使用した分のみ
236         * (初期値:ViewGanttTableParam#USE_SEQ_DAY_VALUE[={@og.value 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}