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 022import java.io.ObjectOutputStream; 023import java.io.ObjectInputStream; 024import 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 * ●形式:<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 = "true"</b> 062 * > 063 * <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 * /> 075 * </og:view > 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 */ 084public 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 * 例えば、1日単位の精度でタスクを割り当てる場合、期間の最小単位は、1 に 165 * なります。表示する場合も、この数字が最小単位となり、HTMLのテーブルの 166 * 1カラムに相当します。例えば、最小単位を、0.5 にすると、 167 * 半日単位でタスクを割り当てることができます。10 にすると、10日単位 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)を、0.5日単位の精度で指定した場合、 185 * そのままでは、ヘッダーも最小期間単位で表示されますが、1日単位で表示 186 * させたい場合は、1 を設定します。 187 * また、1週間単位では、7 を指定します。 188 * 1ヶ月単位などの、不定長での指定はできません。 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}