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.ViewTimeTableParam;
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 ã�?HTMLTimeTable の場合にパラメータを設定しますã?
028 *
029 * 時間軸を持つタイãƒ?ƒ†ーブルの表示を行う、ViewForm_HTMLTimeTable クラスに対してã€?
030 * å�?¨®パラメータを設定しますã?
031 * パラメータが設定されてã�?�ªã�??合ã?、ViewForm_HTMLTimeTable の初期値が使用されますã?
032 * (パラメータを使用するには、viewタグのuseParam 属æ?をtrueに設定するå¿?¦�がありますã?)
033 *
034 * SELECTæ–??、日付ã?キー、備è€??開始時刻、終äº?™‚刻、リンクがã?å¿??é ?›®で、この並びé ??ã€?
035 * 完å?に固定ですã?よって、カラãƒ?½�置を指定するå¿?¦�ã?ありませんがã?SELECTæ–?‚’自由に
036 * 設定することもå?来ませんので、ご注意くã�?�•ã�??
037 * こã?固定化に伴ã�??WRITABLE æŒ?®šも使用できませんã€?
038 * なおã?日付ã?キー、備è€?に関しては、columnDisplay 属æ?で、表示の ON/OFF 制御は可能ですã?
039 * またã?日付ブレイク、キーブレイクの設定で、カラãƒ??体をãƒ??ブルの外に出すことが可能ですã?
040 * (キーと備è?はセãƒ?ƒˆになってã�?�¾すã?)
041 *
042 * タイãƒ?ƒ†ーブルが空きã?場合ã?リンクは、ViewTimeTableParam.NULL_LINK_CLM_ID でæŒ?®šしますã?
043 * (ViewTimeTableParam の nullLinkColumn 属æ?)
044 * æŒ?®šしなã�??合ã?、空きã?リンクは作æ?されませんã€?
045 * こã?リンクは、特殊で、引数に、パラメータを追åŠ?�§きますがã€?($1)"ã€?($2)" でæŒ?®šしますã?
046 * こã?($1)ã€?$2)はã€?–‹始時刻、終äº?™‚刻がセãƒ?ƒˆされますが、SELECTæ–??固定カラãƒ?�¨同じ
047 * 並びé ?�§すが、DBTableModelの値を設定してã�?‚‹わけではありませんã€?
048 * 空きã?場合ã?、データ自体が存在しなã�??合と、日付ã?キー のみã�?外部結合で生æ?されã�?
049 * レコードが実際に存在する場合がありますが、外部結合で生æ?されたレコードにはã€?
050 * 開始時刻、終äº?™‚刻はありませんã€?$1) と($2)には、それぞれã?æœ?°�開始時刻とæœ?¤§終äº?™‚刻ã‚?
051 * セãƒ?ƒˆしますã?
052 *
053 * 例としてã€?amp;TMSTART=($1)&TMEND=($2) とã�?�†æ–?—å?の ($*) 部åˆ?‚’解析して割当ますã?
054 *
055 * å�?±žæ?は、{@XXXX} 変数が使用できますã?
056 * これは、ServletRequest から、XXXX をキーに値を取りå?ã�?こã?変数に割り当てますã?
057 * つまりã?こã?XXXXをキーにリクエストすれã?、この変数に値をセãƒ?ƒˆすることができますã?
058 *
059 * http://localhost/query.jsp?KEY1=VLA1&KEY2=VAL2
060 *
061 * のようなリクエストで、{@KEY1} とすればã€?VAL1 がセãƒ?ƒˆされますã?
062 *
063 * @og.formSample
064 * ●形式ï¼?lt;og:timeTableParam minStartTime="?¥?¥?¥" ?¥?¥?¥ />
065 * ●body?šなã�?
066 *
067 * ●Tag定義??
068 * <og:timeTableParam
069 * minStartTime 【TAG】タイãƒ?ƒ†ーブルの開始時刻(含ã‚?をセãƒ?ƒˆしまã�?初期値:0800)
070 * maxEndTime 【TAG】タイãƒ?ƒ†ーブルの終äº?™‚刻(含まなã�?をセãƒ?ƒˆしまã�?初期値:2100)
071 * timeInterval 【TAG】タイãƒ?ƒ†ーブルのインターバル時間をセãƒ?ƒˆしまã�?初期値:30)
072 * nullLinkColumn 【TAG】タイãƒ?ƒ†ーブルが空きã?場合ã?リンクを指定してã�?‚‹カラãƒ?��をセãƒ?ƒˆしまã�?
073 * useDyBreak 【TAG】日付でブレーク処ç�?‚’行うかどã�?�‹を指定しまã�?初期値:true)
074 * tdClassColumn 【TAG】タイãƒ?ƒ†ーブルにãƒ??タをå?れるTDタグにclass属æ?を付与するå?合ã?カラãƒ?��をセãƒ?ƒˆしまã�?
075 * useBookingMerge 【TAG】同ä¸?—¥付でブッキング時にマã?ジ処ç�?‚’行うかどã�?�‹を指定しまã�?初期値:false)
076 * />
077 *
078 * ●使用ä¾?
079 * ViewFormTag の viewFormType がã?HTMLTimeTable の場合に使用しますã?
080 * useParam 属æ?を設定しておかなã�?�¨、使用されませんã€?
081 * <og:view
082 * viewFormType = "HTMLTimeTable"
083 * command = "{@command}"
084 * startNo = "0"
085 * pageSize = "20"
086 * <b>useParam = "true"</b>
087 * >
088 * <og:timeTableParam
089 * minStartTime = "0800" : タイãƒ?ƒ†ーブルの開始時刻(含ã‚?をセãƒ?ƒˆしまã�?初期値:0800)
090 * maxEndTime = "2100" : タイãƒ?ƒ†ーブルの終äº?™‚刻(含まなã�?をセãƒ?ƒˆしまã�?初期値:2100)
091 * timeInterval = "30" : タイãƒ?ƒ†ーブルのインターバル時間をセãƒ?ƒˆしまã�?初期値:30)
092 * nullLinkColumn = "DYUSE" : NULL時リンクを作æ?するベã?スとなるカラãƒ?��
093 * tdClassColumn = "FGCDACTION" : ãƒ??タをå?れるTDタグにclass属æ?を付与するå?合ã?カラãƒ?��
094 * />
095 * </og:view >
096 *
097 * @og.group 画面表示
098 * @og.rev 5.4.0.0 (2011/10/01) 新規追åŠ?
099 *
100 * @version 4.0
101 * @author Kazuhiko Hasegawa
102 * @since JDK5.0,
103 */
104 public class ViewTimeTableParamTag extends ViewParamTag {
105 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
106 private static final String VERSION = "5.4.4.2 (2012/02/03)" ;
107
108 private static final long serialVersionUID = 544220120203L ;
109
110 /**
111 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
112 *
113 * @return 後続å?ç�??æŒ?¤º
114 */
115 // @Override
116 // public int doStartTag() {
117 // return ( EVAL_BODY_BUFFERED ); // Body を評価する
118 // }
119
120 /**
121 * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
122 *
123 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
124 */
125 // @Override
126 // public int doAfterBody() {
127 //
128 // putParam( ViewTimeTableParam.BODY_LINK_VALUE,
129 // nval( getBodyString(),null ) );
130 //
131 // return ( SKIP_BODY );
132 // }
133
134 /**
135 * 【TAG】タイãƒ?ƒ†ーブルの開始時刻(含ã‚?をセãƒ?ƒˆしまã�?初期値:0800)ã€?
136 *
137 * @og.tag
138 * 時間軸の書き始めの時刻(自åˆ??身を含ã‚?™‚åˆ?¼”æ¡?を指定しますã?
139 * こã?時刻はã€?¼??�ï¼?ならã?"0800" となりã??‘ï¼??“ï¼?ならã?"1430" となりますã?
140 * 初期値はã€?0800" ですã?
141 *
142 * @param minStTime タイãƒ?ƒ†ーブルの開始時刻(含ã‚?
143 */
144 public void setMinStartTime( final String minStTime ) {
145 putParam( ViewTimeTableParam.MIN_START_TIME,
146 nval( getRequestParameter( minStTime ),"0800" ) );
147 }
148
149 /**
150 * 【TAG】タイãƒ?ƒ†ーブルの終äº?™‚刻(含まなã�?をセãƒ?ƒˆしまã�?初期値:2100)ã€?
151 *
152 * @og.tag
153 * 時間軸のæœ?¾Œã?時刻(自åˆ??身を含まなã�?™‚åˆ?¼”æ¡?を指定しますã?
154 * こã?時刻はã€?¼??�ï¼?ならã?"0900" となりã??‘ï¼??“ï¼?ならã?"1430" となりますã?
155 * 初期値はã€?2100" ですã?
156 *
157 * @param maxEdTime タイãƒ?ƒ†ーブルの終äº?™‚刻(含まなã�?
158 */
159 public void setMaxEndTime( final String maxEdTime ) {
160 putParam( ViewTimeTableParam.MAX_END_TIME,
161 nval( getRequestParameter( maxEdTime ),"2100" ) );
162 }
163
164 /**
165 * 【TAG】タイãƒ?ƒ†ーブルのインターバル時間をセãƒ?ƒˆしまã�?初期値:30)ã€?
166 *
167 * @og.tag
168 * タイãƒ?ƒ†ーブルのインターバル時間とは、時刻のæœ?µ‚単位ã?事ですã?
169 * こã?時刻はã€?30" ならã??“0å?となりますã?
170 * 初期値はã€?30" ですã?
171 *
172 * @og.rev 5.4.3.7 (2012/01/20) æŒ?®š方法ã?変更。å?を数字でæŒ?®šしますã?
173 *
174 * @param intval タイãƒ?ƒ†ーブルのインターバル時間
175 */
176 public void setTimeInterval( final String intval ) {
177 putParam( ViewTimeTableParam.TIME_INTERVAL,
178 nval( getRequestParameter( intval ),"30" ) );
179 }
180
181 /**
182 * 【TAG】タイãƒ?ƒ†ーブルが空きã?場合ã?リンクを指定してã�?‚‹カラãƒ?��をセãƒ?ƒˆしますã?
183 *
184 * @og.tag
185 * これは、タイãƒ?ƒ†ーブルが空きã?場合ã?リンクを作æ?するにあたりã?ベã?スとなるリンクã�?
186 * 適用されてã�?‚‹カラãƒ?‚’æŒ?®šしますã?
187 * こã?リンクは、特殊で、引数に、パラメータを追åŠ?�§きますがã€?$1) 等ã?記号でæŒ?®šしますã?
188 * こã?($1)ã€?$2)にはã€?–‹始時刻、終äº?™‚刻がセãƒ?ƒˆされますが、SELECTæ–??
189 * 固定カラãƒ?�¨同じ並びé ?�§すが、DBTableModelの値を設定してã�?‚‹わけではありませんã€?
190 * 空きã?場合ã?、データ自体が存在しなã�??合がありますが、その場合ã?ã€?–‹始時刻、終äº?™‚刻は
191 * ありませんã€?
192 * そã?場合ã?、それぞれã?æœ?°�開始時刻とæœ?¤§終äº?™‚刻がセãƒ?ƒˆされますã?
193 *
194 * &TMSTART=($1)&TMEND=($2) とã�?�†æ–?—å?の ($*) 部åˆ?‚’解析して割当ますã?
195 *
196 * TMSTARTやTMENDは、リンク作æ?側で自由にæŒ?®šできますã?
197 *
198 * 同様ã?機è?は、BODY部にリンクを指定することも可能ですã?
199 * こã?($1)??$4)にはã€?–‹始時刻、終äº?™‚刻、日付ã?キーがセãƒ?ƒˆされますã?
200 *
201 * 6amp;TMSTART=($1)&TMEND=($2)&DYUSE=($3)&UNITID=($4) とã�?�†æ–?—å?の ($*) 部åˆ?‚’解析して割当ますã?
202 *
203 * BODY と nullLinkColumn が両方とも指定された場合ã?、nullLinkColumn の設定が優先されますã?
204 *
205 * @param clm nullのãƒ??タに適用するリンクを設定したカラãƒ?��
206 */
207 public void setNullLinkColumn( final String clm ) {
208 putParam( ViewTimeTableParam.NULL_LINK_CLM_ID,
209 nval( getRequestParameter( clm ),null ) );
210 }
211
212 /**
213 * 【TAG】タイãƒ?ƒ†ーブルにãƒ??タをå?れるTDタグにclass属æ?を付与するå?合ã?カラãƒ?��をセãƒ?ƒˆしますã?
214 *
215 * @og.tag
216 * これは、タイãƒ?ƒ†ーブルのリンクã‚?ª¬明を入れるTDに、class属æ?を付与するå?合ã?カラãƒ?��ã‚?
217 * æŒ?®šしますã?これにより、TD に色を付けたり、表示の条件を外部からæŒ?®šできますã?
218 * もっともä¸?ˆ¬çš?�ª想定用途ã?、タイãƒ?ƒ†ーブルのãƒ??タの種別に応じた色åˆ?�‘ですã?
219 *
220 * @og.rev 5.4.3.7 (2012/01/20) 新規追åŠ?
221 *
222 * @param clm nullのãƒ??タをå?れるTDタグにclass属æ?を付与するå?合ã?カラãƒ?��
223 */
224 public void setTdClassColumn( final String clm ) {
225 putParam( ViewTimeTableParam.TD_CLASS_COLUMN_ID,
226 nval( getRequestParameter( clm ),null ) );
227 }
228
229 /**
230 * 【TAG】ブレーク処ç�?‚’行うカラãƒ?¼©?¤をCSV形式でセãƒ?ƒˆしまã�?初期値:0030)ã€?
231 *
232 * @og.tag
233 * æŒ?®šされたカラãƒ?¼©?¤がã?チェンジすると、ブレイク処ç�?‚’行いますã?
234 * これは、ブレイク毎にãƒ??ブルがå?かれて、テーブルの先é?に、ブレイクした
235 * 値が表示されますã?
236 * 例えば、日付カラãƒ?‚’ブレイクカラãƒ?�¨して設定すると、日付がブレイクするたã?ã€?
237 * 日付をヘッãƒ??に出して、テーブルを作æ?しますã?
238 * ブレークカラãƒ??、CSV形式でè¤?•°æŒ?®šできますã?そã?場合ã?、è¤?•°æŒ?®šã?カラãƒ??
239 * 合æ?されたå?で、キーブレイクの判定を行いますã?(簡単にè¨?�†と?¯?²判定になりますã?)
240 * なおã?ブレイクカラãƒ?‚’æŒ?®šしたå?合ã?、è?動的に、noDisplay 属æ?にそã?値をセãƒ?ƒˆ
241 * しますã?
242 *
243 * @param clms ブレーク処ç�?‚’行うカラãƒ?¼©?¤(CSV形å¼?
244 */
245 // public void setBreakClms( final String clms ) {
246 // putParam( ViewTimeTableParam.BREAK_CLMS,
247 // nval( getRequestParameter( clms ),null ) );
248 // }
249
250 /**
251 * 【TAG】日付でブレーク処ç�?‚’行うかどã�?�‹を指定しまã�?初期値:true)ã€?
252 *
253 * @og.tag
254 * 日付でブレーク処ç�?‚’行う場合ã?日付単位にãƒ??ブルがå?かれますã?
255 * 日付ã?、テーブルの先é?に、ブレイクした時点で表示されますã?
256 * 日付でブレイクするを指定したå?合ã?、è?動的に、noDisplay 属æ?に日付が
257 * セãƒ?ƒˆされますã?
258 * 初期値は、true(日付ブレイクする)ですã?
259 *
260 * @param flag 日付でブレーク処ç�?‚’行うかどã�?�‹(true:日付ブレイクする、false しなã�?
261 */
262 public void setUseDyBreak( final String flag ) {
263 putParam( ViewTimeTableParam.USE_DY_BREAK,
264 nval( getRequestParameter( flag ),"true" ) );
265 }
266
267 /**
268 * 【TAG】同ä¸?—¥付でブッキング時にマã?ジ処ç�?‚’行うかどã�?�‹を指定しまã�?初期値:false)ã€?
269 *
270 * @og.tag
271 * 日付ã?キー(人ã‚?–½設)で予定時刻が重è¤?�—てã�?‚‹場合ã?処ç�?–¹法をæŒ?®šしますã?
272 * 通常(初期値:false)では、ブãƒ?‚ングãƒ??タはレコードをåˆ?�‘て表示させますã?
273 * 例えば、人の予定であれば、仮予ç´?‚„会議招集などのケースでã€?‡�è¤?‚’表示しておき
274 * 利用è€?œ¬人に決めさせるとã�?�†ケースがè?えられますã?
275 * これをã?true に設定すると、予定時刻が重è¤?�—てã�?‚‹場合ã?、ã?ージして、ä¸?�¤の
276 * 予定として表現しますã?
277 * 初期値は、false(ブッキング時にマã?ジ処ç�?‚’行わなã�?ですã?
278 *
279 * @og.rev 5.4.4.2 (2012/02/03) 新規追åŠ?
280 *
281 * @param flag 同ä¸?—¥付でブッキング時にマã?ジ処ç�?‚’行うかどã�?�‹(true:行うする、false 行わなã�?
282 */
283 public void setUseBookingMerge( final String flag ) {
284 putParam( ViewTimeTableParam.USE_BOOKING_MERGE,
285 nval( getRequestParameter( flag ),"true" ) );
286 }
287
288 /**
289 * タグの名称をã?返しますã?
290 * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
291 *
292 * @return タグの名称
293 */
294 @Override
295 protected String getTagName() {
296 return "timeTableParam" ;
297 }
298
299 /**
300 * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
301 *
302 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
303 *
304 * @param strm ObjectOutputStreamオブジェクãƒ?
305 * @throws IOException 入出力エラーが発生したå?å�?
306 */
307 private void writeObject( final ObjectOutputStream strm ) throws IOException {
308 strm.defaultWriteObject();
309 }
310
311 /**
312 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
313 *
314 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
315 *
316 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
317 *
318 * @param strm ObjectInputStreamオブジェクãƒ?
319 * @see #release2()
320 * @throws IOException シリアライズに関する入出力エラーが発生したå?å�?
321 * @throws ClassNotFoundException クラスを見つけることができなかったå?å�?
322 */
323 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
324 strm.defaultReadObject();
325 }
326 }