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     */
016    package org.opengion.hayabusa.taglib;
017    
018    import org.opengion.hayabusa.html.ViewGanttTableParam;
019    
020    import static org.opengion.fukurou.util.StringUtil.nval ;
021    
022    import java.io.ObjectOutputStream;
023    import java.io.ObjectInputStream;
024    import java.io.IOException;
025    
026    /**
027     * viewタグの viewFormType ã�?HTMLGanttTable の場合にパラメータを設定しますã?
028     *
029     * ガントチャートを表示する、ViewForm_HTMLGanttTable クラスに対して、各種パラメータã‚?
030     * 設定しますã?
031     * パラメータが設定されてã�?�ªã�??合ã?、ViewGanttTableParam の初期値ã�?
032     * 使用されますã?
033     * (パラメータを使用するには、viewタグのuseParam 属æ?をtrueに設定するå¿?¦�がありますã?)
034     *
035     * @og.formSample
036     * ●形式ï¼?lt;og:ganttParam groupColumns="PRJCODE,RESOURCE_ID" minDuration="0.5" />
037     * ●body?šなã�?
038     *
039     * ●Tag定義??
040     *   <og:ganttParam
041     *       groupColumns       【TAG】各タスクを1行にまとめる時ã?カラãƒ?��(カンマ区åˆ?‚Š)をセãƒ?ƒˆしまã�?(初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[=PRJCODE,RESOURCE_ID])
042     *       durationColumn     【TAG】期間æ¬??カラãƒ?��をセãƒ?ƒˆしまã�?
043     *       dystartColumn      【TAG】開始日付けのカラãƒ?��をセãƒ?ƒˆしまã�?(初期値:ViewGanttTableParam#DYSTART_COLUMN_VALUE[=DYSTART])
044     *       dystartFormat      【TAG】開始日付けのフォーマットをæŒ?®šしまã�?(初期値:ViewGanttTableParam#DYSTART_FORMAT_VALUE[=yyyyMMdd])
045     *       minDuration        【TAG】最小期é–?少数可)をセãƒ?ƒˆしまã�?初期値:1)
046     *       headerDuration     【TAG】ã?ãƒ?ƒ€ーの表示期間(少数可)をセãƒ?ƒˆしまã�?初期値:æœ?°�期é–?minDuration) と同じ)
047     *       headerLocale       【TAG】ã?ãƒ?ƒ€ーを表示する時ã?、Locale(language のみ) を指定しまã�?(初期値:ViewGanttTableParam#HEADER_LOCALE_VALUE[=ja])
048     *       useSeqDay          【TAG】ã?ãƒ?ƒ€ー日付けの連続表示を行うかどã�?�‹[true/false]を指定しまã�?初期値:false)
049     *       startDay           【TAG】ã?ãƒ?ƒ€ー日付けの開始日を指定しまã�?
050     *       endDay             【TAG】ã?ãƒ?ƒ€ー日付けの終äº?—¥を指定しまã�?
051     *       debug              【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
052     *   />
053     *
054     * ●使用ä¾?
055     *     ViewFormTag の viewFormType がã?ViewForm_HTMLGanttTable の場合に使用しますã?
056     *     <og:view
057     *         viewFormType = "HTMLGanttTable"
058     *         command      = "{@command}"
059     *         startNo      = "0"
060     *         pageSize     = "20"
061     *         <b>useParam     = &quot;true&quot;</b>
062     *     &gt;
063     *         &lt;og:ganttParam
064     *              groupColumns   = "PRJCODE,RESOURCE_ID"
065     *              durationColumn = "DURATION"
066     *              dystartColumn  = "DYSTART"
067     *              dystartFormat  = "yyyyMMdd"
068     *              minDuration    = "0.5"
069     *              headerDuration = "1"
070     *              headerLocale   = "en"
071     *              useSeqDay      = "true"
072     *              startDay       = "20041020"
073     *              endDay         = "20041028"
074     *         /&gt;
075     *     &lt;/og:view &gt;
076     *
077     * @og.rev 3.5.5.8 (2004/05/20) 新規作æ?
078     * @og.group 画面表示
079     *
080     * @version  4.0
081     * @author       Kazuhiko Hasegawa
082     * @since    JDK5.0,
083     */
084    public class ViewGanttParamTag extends ViewParamTag {
085            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
086            private static final String VERSION = "4.0.0.0 (2006/09/31)" ;
087    
088            private static final long serialVersionUID = 400020060931L ;
089    
090            /**
091             * 【TAG】各タスクを1行にまとめる時ã?カラãƒ?��(カンマ区åˆ?‚Š)をセãƒ?ƒˆしまã�?
092             *              (初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[={@og.value ViewGanttTableParam#GROUP_COLUMNS_VALUE}])ã€?
093             *
094             * @og.tag
095             * ガントチャートで、同ä¸?¦�件のタスクを1行にまとめて表示しますã?
096             * そã?場合ã?グルーピングのキーとなるカラãƒ?��を指定しますã?
097             * è¤?•°ある場合ã?、カンマ区åˆ?‚ŠでæŒ?®šできますã?
098             * 日付けでの重è¤??è€??されてã�?�¾せんので、データ側でチェãƒ?‚¯しておいて下さã�??
099             * (初期値:ViewGanttTableParam#GROUP_COLUMNS_VALUE[={@og.value ViewGanttTableParam#GROUP_COLUMNS_VALUE}])ã€?
100             *
101             * @param       groupColumns ãƒ??タを1行にまとめる時ã?カラãƒ?��(カンマ区åˆ?‚Š)
102             * @see         org.opengion.hayabusa.html.ViewGanttTableParam#GROUP_COLUMNS_VALUE
103             */
104            public void setGroupColumns( final String groupColumns ) {
105                    putParam( ViewGanttTableParam.GROUP_COLUMNS_KEY ,
106                                      nval( getRequestParameter( groupColumns ),null ) );
107            }
108    
109            /**
110             * 【TAG】期間æ¬??カラãƒ?��をセãƒ?ƒˆしますã?
111             *
112             * @og.tag
113             * ガントを表示する場合ã?、各タスクのå¹?期間)のカラãƒ?��を指定しますã?
114             * å�?‚¿スクはã€?–‹始日と期間より、ガントã?æŒ?®šã?ロケーションに割り当てられますã?
115             * 初期値は null ですã?
116             *
117             * @param       durationColumn 期間æ¬??カラãƒ?��をセãƒ?ƒˆしますã?
118             */
119            public void setDurationColumn( final String durationColumn ) {
120                    putParam( ViewGanttTableParam.DURATION_COLUMN_KEY ,
121                                      nval( getRequestParameter( durationColumn ),null ) );
122            }
123    
124            /**
125             * 【TAG】開始日付けのカラãƒ?��をセãƒ?ƒˆしまã�?
126             *              (初期値:ViewGanttTableParam#DYSTART_COLUMN_VALUE[={@og.value ViewGanttTableParam#DYSTART_COLUMN_VALUE}])ã€?
127             *
128             * @og.tag
129             * ガントを表示する場合ã?、各タスクの開始日付けのカラãƒ?��を指定しますã?
130             * å�?‚¿スクはã€?–‹始日と期間より、ガントã?æŒ?®šã?ロケーションに割り当てられますã?
131             * (初期値:ViewGanttTableParam#DYSTART_COLUMN_VALUE[={@og.value ViewGanttTableParam#DYSTART_COLUMN_VALUE}])ã€?
132             *
133             * @param       dystartColumn 開始日付けのカラãƒ?��(初期値:DYSTART)
134             */
135            public void setDystartColumn( final String dystartColumn ) {
136                    putParam( ViewGanttTableParam.DYSTART_COLUMN_KEY ,
137                                       nval( getRequestParameter( dystartColumn ),null ) );
138            }
139    
140            /**
141             * 【TAG】開始日付けのフォーマットをæŒ?®šしまã�?
142             *              (初期値:ViewGanttTableParam#DYSTART_FORMAT_VALUE[={@og.value ViewGanttTableParam#DYSTART_FORMAT_VALUE}])ã€?
143             *
144             * @og.tag
145             * ガントã?開始日ä»?ãƒ??タを取り込ã‚?�¨きã?日付けフォーマットをæŒ?®šしますã?
146             * こã?形式ã?日付けæ–?­—å?をã?å†?ƒ¨で、日付けãƒ??タとして管ç�?�—ますã?
147             * java.text.SimpleDateFormat でæŒ?®šできる形式をæŒ?®šしますã?
148             * (初期値:ViewGanttTableParam#DYSTART_FORMAT_VALUE[={@og.value ViewGanttTableParam#DYSTART_FORMAT_VALUE}])ã€?
149             *
150             * @param       dystartFormat 開始日付けのフォーマッãƒ?
151             * @see java.text.SimpleDateFormat
152             */
153            public void setDystartFormat( final String dystartFormat ) {
154                    putParam( ViewGanttTableParam.DYSTART_FORMAT_KEY ,
155                                       nval( getRequestParameter( dystartFormat ),null ) );
156            }
157    
158            /**
159             * 【TAG】最小期é–?少数可)をセãƒ?ƒˆしまã�?
160             *              (初期値:ViewGanttTableParam#MIN_DURATION_VALUE[={@og.value ViewGanttTableParam#MIN_DURATION_VALUE}])ã€?
161             *
162             * @og.tag
163             * Duration でæŒ?®šする期間ã?æœ?°�単位をæŒ?®šしますã?
164             * 例えばã€?¼‘日単位ã?精度でタスクを割り当てるå?合ã?期間のæœ?°�単位ã?ã€?¼?に
165             * なりますã?表示する場合も、この数字がæœ?°�単位となりã?HTMLのãƒ??ブルの
166             * ?‘カラãƒ?�«相当しますã?例えば、最小単位をã€?¼�.ï¼?にするとã€?
167             * 半日単位でタスクを割り当てることができますã??‘ï¼?にするとã€?¼‘0日単ä½?
168             * になりますã?
169             * (初期値:ViewGanttTableParam#MIN_DURATION_VALUE[={@og.value ViewGanttTableParam#MIN_DURATION_VALUE}])ã€?
170             *
171             * @param       minDuration 列合計ã?カラãƒ?�«表示するラベルID
172             */
173            public void setMinDuration( final String minDuration ) {
174                    putParam( ViewGanttTableParam.MIN_DURATION_KEY ,
175                                       nval( getRequestParameter( minDuration ),null ) );
176            }
177    
178            /**
179             * 【TAG】ã?ãƒ?ƒ€ーの表示期間(少数可)をセãƒ?ƒˆしまã�?初期値:æœ?°�期é–?minDuration) と同じ)ã€?
180             *
181             * @og.tag
182             * ヘッãƒ??部の日付けæ¬?�§æŒ?®šする表示間隔を指定しますã?
183             *
184             * 例えば、最小期é–?minDuration)をã??�.5日単位ã?精度でæŒ?®šしたå?合ã?
185             * そã?ままでは、ã?ãƒ?ƒ€ーも最小期間単位で表示されますがã€?¼‘日単位で表示
186             * させたい場合ã?ã€?¼?を設定しますã?
187             * またã??‘é?間単位ではã€?¼?を指定しますã?
188             * ?‘ヶ月単位などの、不定長でのæŒ?®šã?できませんã€?
189             * 初期値はæœ?°�期é–?minDuration) と同じですã?
190             *
191             * @param       headerDuration ヘッãƒ??の表示期間(少数可)
192             */
193            public void setHeaderDuration( final String headerDuration ) {
194                    putParam( ViewGanttTableParam.HEADER_DURATION_KEY ,
195                                       nval( getRequestParameter( headerDuration ),null ) );
196            }
197    
198            /**
199             * 【TAG】ã?ãƒ?ƒ€ーを表示する時ã?、Locale(language のみ) を指定しまã�?
200             *              (初期値:ViewGanttTableParam#HEADER_LOCALE_VALUE[={@og.value ViewGanttTableParam#HEADER_LOCALE_VALUE}])ã€?
201             *
202             * @og.tag
203             * ヘッãƒ??部の日付けæ¬?�§ SimpleDateFormat を用ã�?�¦解析してã�?�¾すがã€?
204             * こã? Locale (language のみ)を指定できますã?
205             *
206             * language は、有効な ISO è¨?ªžコードですã?
207             * これらã?コードã?、ISO-639 で定義されã‚?2 桁ã?小文字ですã?
208             * コードã?完å?なリストã?ã€?
209             * <a href="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">
210             * http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt </a>
211             * を始めã�?��つかã?場æ‰?�§入手できますã?
212             * SimpleDateFormat の Locale を指定するコンストラクタでは、å?ての
213             * ロケールをサポã?トするわけではありませんのでご注意くã�?�•ã�??
214             * (初期値:ViewGanttTableParam#HEADER_LOCALE_VALUE[={@og.value ViewGanttTableParam#HEADER_LOCALE_VALUE}])ã€?
215             *
216             * @og.rev 3.5.5.9 (2004/06/07) 新規追åŠ?
217             *
218             * @param       headerLocale ヘッãƒ??の Locale(language のみ)
219             * @see         java.text.SimpleDateFormat#SimpleDateFormat(String , Locale)
220             */
221            public void setHeaderLocale( final String headerLocale ) {
222                    putParam( ViewGanttTableParam.HEADER_LOCALE_KEY ,
223                                       nval( getRequestParameter( headerLocale ),null ) );
224            }
225    
226            /**
227             * 【TAG】ã?ãƒ?ƒ€ー日付けの連続表示を行うかどã�?�‹[true/false]を指定しまã�?
228             *              (初期値:ViewGanttTableParam#USE_SEQ_DAY_VALUE[={@og.value ViewGanttTableParam#USE_SEQ_DAY_VALUE}])ã€?
229             *
230             * @og.tag
231             * ヘッãƒ??部の日付けæ¬?�§開始日と終äº?—¥のç¯?›²の連続日付け表示を行う場合にã€?
232             * "true" に、設定しますã?開始日と終äº?—¥ の設定方法ã?、各属æ?を参照してくださいã€?
233             * true:連続表示を行う / false:dystartColumn カラãƒ?�§使用したåˆ??み
234             * (初期値:ViewGanttTableParam#USE_SEQ_DAY_VALUE[={@og.value ViewGanttTableParam#USE_SEQ_DAY_VALUE}])ã€?
235             *
236             * @og.rev 3.6.1.0 (2005/01/05) 新規追åŠ?
237             *
238             * @param       useSeqDay ヘッãƒ??日付けの連続表示を行うかどã�?�‹[true:行う/false:行わない]
239             * @see         #setStartDay( String )
240             * @see         #setEndDay( String )
241             */
242            public void setUseSeqDay( final String useSeqDay ) {
243                    putParam( ViewGanttTableParam.USE_SEQ_DAY_KEY ,
244                                       nval( getRequestParameter( useSeqDay ),null ) );
245            }
246    
247            /**
248             * 【TAG】ã?ãƒ?ƒ€ー日付けの開始日を指定しますã?
249             *
250             * @og.tag
251             * ヘッãƒ??部の日付けæ¬?�§連続日付け表示使用æ™?seqDay="true")にã€?
252             * こã?開始日より、終äº?—¥までの日付けヘッãƒ??をé?続表示しますã?
253             * seqDay="true" で startDayを指定しなã�??合ã?、dystartColumn で
254             * æŒ?®šされた、最小日付けを使用しますã?é€?�«、このæœ?°�日付けよりã‚?
255             * 大きな日付けは、セãƒ?ƒˆできません。データとヘッãƒ??の整合æ?ã�?
256             * 取れなくなりますã?
257             *
258             * こã?時ã?日付けフォーマットã?、dystartFormat のæŒ?®šと同じですã?
259             *
260             * @og.rev 3.6.1.0 (2005/01/05) 新規追åŠ?
261             *
262             * @see         #setUseSeqDay( String )
263             * @param       startDay ヘッãƒ??日付けの開始日
264             * @see         #setEndDay( String )
265             */
266            public void setStartDay( final String startDay ) {
267                    putParam( ViewGanttTableParam.START_DAY_KEY ,
268                                       nval( getRequestParameter( startDay ),null ) );
269            }
270    
271            /**
272             * 【TAG】ã?ãƒ?ƒ€ー日付けの終äº?—¥を指定しますã?
273             *
274             * @og.tag
275             * ヘッãƒ??部の日付けæ¬?�§連続日付け表示使用æ™?seqDay="true")にã€?
276             * 開始日より、この終äº?—¥までの日付けヘッãƒ??をé?続表示しますã?
277             * seqDay="true" で endDayを指定しなã�??合ã?、dystartColumn で
278             * æŒ?®šされた、最大日付けを使用しますã?é€?�«、このæœ?¤§日付けよりã‚?
279             * 小さな日付けは、セãƒ?ƒˆできません。データとヘッãƒ??の整合æ?ã�?
280             * 取れなくなりますã?
281             *
282             * こã?時ã?日付けフォーマットã?、dystartFormat のæŒ?®šと同じですã?
283             *
284             * @og.rev 3.6.1.0 (2005/01/05) 新規追åŠ?
285             *
286             * @param       endDay ヘッãƒ??日付けの終äº?—¥
287             * @see         #setUseSeqDay( String )
288             * @see         #setStartDay( String )
289             */
290            public void setEndDay( final String endDay ) {
291                    putParam( ViewGanttTableParam.END_DAY_KEY ,
292                                       nval( getRequestParameter( endDay ),null ) );
293            }
294    
295            /**
296             * タグの名称をã?返しますã?
297             * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
298             *
299             * @og.rev 4.0.0.0 (2005/01/31) 新規追åŠ?
300             *
301             * @return  タグの名称
302             */
303            @Override
304            protected String getTagName() {
305                    return "ganttParam" ;
306            }
307    
308            /**
309             * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
310             *
311             * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
312             * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
313             *
314             * @param       strm    ObjectOutputStreamオブジェクãƒ?
315             * @throws IOException  入出力エラーが発生したå?å�?
316             */
317            private void writeObject( final ObjectOutputStream strm ) throws IOException {
318                    strm.defaultWriteObject();
319            }
320    
321            /**
322             * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
323             *
324             * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
325             *
326             * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
327             * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
328             *
329             * @param       strm    ObjectInputStreamオブジェクãƒ?
330             * @see #release2()
331             * @throws IOException  シリアライズに関する入出力エラーが発生したå?å�?
332             * @throws ClassNotFoundException       クラスを見つけることができなかったå?å�?
333             */
334            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
335                    strm.defaultReadObject();
336            }
337    }