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.common.HybsSystem; 019 import org.opengion.hayabusa.common.SystemManager; 020 import org.opengion.hayabusa.db.DBColumn; 021 import org.opengion.hayabusa.db.DBTableModel; 022 import org.opengion.hayabusa.db.DBTableModelUtil; 023 import org.opengion.hayabusa.html.ViewForm; 024 import org.opengion.hayabusa.html.ViewFormFactory; 025 import org.opengion.hayabusa.resource.ResourceManager; 026 027 import static org.opengion.fukurou.util.StringUtil.nval ; 028 029 import org.opengion.fukurou.util.HybsTimerTask; 030 import org.opengion.fukurou.util.HybsTimerTaskManager; 031 032 import java.util.Timer; 033 import java.util.Map; 034 import java.util.HashMap; 035 import java.util.Iterator; 036 037 /** 038 * アプリケーション共有?タイマ?機?を用?、繰り返しスケジュールを設定するタグです? 039 * 040 * タイマ?スケジュールは、帳票??モン??再編成???定期??処?ど、エンジン上? 041 * スレ?で動作するスケジュールを登録します? 042 * スケジュールすべきクラスは、HybsTimerTask を拡張(extends)しておく?があります? 043 * 044 * @og.formSample 045 * ●形式?lt;og:schedule timerTask="???" name="???" command="[SET|VIEW|REMOVE|CANCEL]" ??? /> 046 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま? 047 * 048 * ●Tag定義?? 049 * <og:schedule 050 * command 【TAG】コマン?SET,VIEW,REMOVE,CANCEL)をセ?しま?初期値:SET) 051 * timerTask ○?TAG】??実行するクラス?HybsTimerTask のサブクラス)を指定しま???)? 052 * name ○?TAG】名称(ユニ?クキー)を設定しま???)? 053 * comment 【TAG】タイマ?タスクの説明を設定しま? 054 * singleton 【TAG】Name属?が同??タスクを2重登録出来な??true/false]にしま?初期値:true[出来ない]) 055 * delay 【TAG】ミリ秒単位??時間を設定しま?初期値:0) 056 * period 【TAG】ミリ秒単位?繰り返し間隔を設定しま?初期値:60000) 057 * fixedDelay 【TAG】固定遅延実行を?するかど?[true:固定遅延実?false:固定?度実行]を設定しま?初期値:true) 058 * keys 【TAG】HybsTimerTask に渡す為のキー??、CSV形式で??しま? 059 * vals 【TAG】HybsTimerTask に渡す為の値を?CSV形式で??しま? 060 * startTime 【TAG?4時間制(YYMMDD)の開始時刻を設定しま?初期値:000000) 061 * stopTime 【TAG?4時間制(YYMMDD)の終?刻を設定しま?初期値:000000) 062 * scope 【TAG】キャ?ュする場合?スコー?local,request,page,session,applicaton)を指定しま?初期値:local) 063 * tableId 【TAG?通常は使?せん)結果をDBTableModelに書き込んで、sessionに登録するとき?キーを指定しま? 064 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 065 * > ... Body ... 066 * </og:schedule> 067 * 068 * ●使用? 069 * 帳票??モンスケジュール登録 070 * period は?s単位で?する?があるため?000?して?す? 071 * <og:schedule 072 * command = "{@CMD}" 073 * scope = "request" 074 * timerTask = "org.opengion.hayabusa.report.ReportDaemon" 075 * name = "{@NAME}" 076 * comment = "Start-up By {@USER.INFO}" 077 * singleton = "true" 078 * delay = "0" 079 * period = "{@PERIOD}000" 080 * fixedDelay = "true" 081 * keys = "SYSTEM_ID,DMN_GRP" 082 * vals = "{@SYSTEM_ID},{@DMN_GRP}" 083 * /> 084 * 085 * @og.group そ?他部? 086 * 087 * @version 4.0 088 * @author Kazuhiko Hasegawa 089 * @since JDK5.0, 090 */ 091 public class ScheduleTag extends CommonTagSupport { 092 //* こ?プログラ??VERSION??を設定します? {@value} */ 093 private static final String VERSION = "4.0.0.0 (2007/10/18)" ; 094 095 private static final long serialVersionUID = 400020071018L ; 096 097 /** command 引数に渡す事?出来?コマン? セ? {@value} */ 098 public static final String CMD_SET = "SET"; 099 /** command 引数に渡す事?出来?コマン? ビュー {@value} */ 100 public static final String CMD_VIEW = "VIEW"; 101 /** command 引数に渡す事?出来?コマン? リ???{@value} */ 102 public static final String CMD_REMOVE = "REMOVE"; 103 /** command 引数に渡す事?出来?コマン? キャンセル {@value} */ 104 public static final String CMD_CANCEL = "CANCEL"; 105 106 /** command 引数に渡す事?出来?コマン?リス? */ 107 private static final String[] COMMAND_LIST = new String[] { 108 CMD_SET , CMD_VIEW , CMD_REMOVE , CMD_CANCEL }; 109 110 // 3.5.2.0 (2003/10/20) 結果?DBTableModel として、scope 属?に登録する? 111 private String tableId = HybsSystem.TBL_MDL_KEY; 112 113 private String command = CMD_SET; 114 private String timerTask = null; // 処?実行す?HybsTimerTask のクラス名を?します? 115 private String name = null; // タイマ?タスクの名称(ユニ?クキー) 116 private String comment = null; // タイマ?タスクの説? 117 private long delay = 0l; // タスクが実行される前?ミリ秒単位??(初期値:0) 118 private long period = 60000l; // 連続するタスク実行?ミリ秒単位?時間(初期値:60000 mS) 119 private boolean fixedDelay = true; // 固定遅延実?true)/固定?度実?false) (初期値:true) 120 private int uniqKey = -1; // ありえな??を?期設定しておく? 121 private boolean singleton = true; // Name属?が同??タスクを2重登録出来な??する(初期値:true) 122 123 private static final long FIXED_RATE_MIN_TIME = 1000; // 固定?度実行時の?繰り返し時間 124 125 private static final String TIMER_KEY = HybsSystem.SCEDULE_KEY; 126 private static final String TIMERTASK_KEY = HybsSystem.SCEDULE_TASK_KEY; 127 128 // 3.2.2.0 (2003/05/31) HybsTimerTask に対して、設定?を渡せるように変更? 129 private String[] keys = null; // タイマ?タスクへ渡すキー配? 130 private String[] vals = null; // タイマ?タスクへ渡すバリュー配? 131 private String body = null; // タイマ?タスクへ渡す??ー要? 132 private String startTime = "000000"; // 24時間制の開始時刻 133 private String stopTime = "000000"; // 24時間制の終?刻 134 135 // 3.5.2.0 (2003/10/20) 結果?DBTableModel として、scope 属?に登録する? 136 private String scope = "local"; // local は互換性のため?request","page","session","applicaton" 137 138 // 3.7.0.4 (2005/03/14) 帳票??モンに、エラー時にスリープして?する機?を追? 139 private final int ERROR_SLEEP_TIME = HybsSystem.sysInt( "REPORT_DAEMON_ERROR_SLEEP_TIME" ); 140 141 // 4.0.0 (2006/11/17) HybsTimerTaskManager ?static クラスから通常オブジェクトとして管?? 142 private static final HybsTimerTaskManager taskManager ; 143 144 // 4.0.0 (2005/01/31) Cleanable インターフェースによる初期化?? 145 // 4.3.6.2 (2009/04/15) コン?スト終?のみclear()されるよ?対? 146 static { 147 taskManager = new HybsTimerTaskManager(); 148 // 4.3.6.2 (2009/04/15) 149 // SystemManager.addCleanable( taskManager ); 150 SystemManager.addCleanable( taskManager, true ); 151 } 152 153 /** 154 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 155 * 156 * @og.rev 3.2.2.0 (2003/05/31) HybsTimerTask に対して、設定?を渡せるように変更? 157 * 158 * @return 後続????( EVAL_BODY_BUFFERED ) 159 */ 160 @Override 161 public int doStartTag() { 162 return( EVAL_BODY_BUFFERED ); // Body を評価する? extends BodyTagSupport ? 163 } 164 165 /** 166 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします? 167 * 168 * @og.rev 3.2.2.0 (2003/05/31) HybsTimerTask に対して、設定?を渡せるように変更? 169 * 170 * @return 後続????(SKIP_BODY) 171 */ 172 @Override 173 public int doAfterBody() { 174 body = getBodyString(); 175 176 return(SKIP_BODY); 177 } 178 179 /** 180 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 181 * 182 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 183 * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェ?を行います? 184 * 185 * @return 後続???? 186 */ 187 @Override 188 public int doEndTag() { 189 debugPrint(); // 4.0.0 (2005/02/28) 190 if( !check( command, COMMAND_LIST ) ) { return( EVAL_PAGE ); } 191 192 if( "session".equals( scope ) ) { 193 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19) 194 } 195 196 // 3.6.0.8 (2004/11/19) トランザクションチェ?を行います? 197 if( commandExec( command ) ) { 198 return(EVAL_PAGE); // ペ?ジの残りを評価する? 199 } 200 else { 201 jspPrint( "ScheduleTag Query処?割り込まれました?BTableModel は登録しません? ); 202 return (SKIP_PAGE); 203 } 204 } 205 206 /** 207 * タグリブオブジェクトをリリースします? 208 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 209 * 210 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 211 * @og.rev 3.2.2.0 (2003/05/31) HybsTimerTask に対して、設定?を渡せるように変更? 212 * @og.rev 3.5.2.0 (2003/10/20) 結果?DBTableModel として、scope 属?に登録する? 213 */ 214 @Override 215 protected void release2() { 216 super.release2(); 217 command = CMD_SET; 218 timerTask = null; // 処?実行す?HybsTimerTask のクラス名を?します? 219 name = null; // タイマ?タスクの名称(ユニ?クキー) 220 comment = null; // タイマ?タスクの説? 221 delay = 0; // タスクが実行される前?ミリ秒単位??(初期値:0) 222 period = 60000; // 連続するタスク実行?ミリ秒単位?時間(初期値:60000 mS) 223 fixedDelay = true; // 固定遅延実?true)/固定?度実?false) (初期値:true) 224 uniqKey = -1; // ありえな??を?期設定しておく? 225 singleton = true; // Name属?が同??タスクを2重登録出来な??する(初期値:true) 226 keys = null; // タイマ?タスクへ渡すキー配? 227 vals = null; // タイマ?タスクへ渡すバリュー配? 228 startTime = "000000"; // 24時間制の開始時刻 229 stopTime = "000000"; // 24時間制の終?刻 230 tableId = HybsSystem.TBL_MDL_KEY; // 231 scope = "local"; // local は互換性のため?request","page","session","applicaton" 232 } 233 234 /** 235 * コマンドを実行します? 236 * 237 * コマンド?,HTMLから(SET/VIEW/REMOVE/CANCEL)?されます?で,setCommand()メソ?で 238 * 登録します? 239 * コマンドを登録すると同時に,実行も行な?す? 240 * 241 * @og.rev 3.5.2.0 (2003/10/20) viewAttribute()メソ?を?全てで実行します? 242 * @og.rev 3.6.0.8 (2004/11/19) 正常に登録できたかど?を?返します? 243 * @og.rev 4.0.0.0 (2007/10/18) メ?ージリソース統? setMsg() ?setLbl ) 244 * 245 * @param command コマン?public static final 宣?れて???) 246 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.ScheduleTag.CMD_SET">コマンド定数</a> 247 * 248 * @return 正常かど?(true:正常/false:異常) 249 */ 250 protected boolean commandExec( final String command ) { 251 if( CMD_SET.equals( command ) ) { 252 setAttribute(); 253 // setMsg( "MSG0059" ); // 登録しました? 254 setLbl( "MSG0059" ); // 登録しました? 255 jspPrint( getMsglbl() ); 256 } 257 else if( CMD_VIEW.equals( command ) ) { 258 jspPrint( String.valueOf( taskManager.size() ) ); 259 // setMsg( "MSG0033" ); // ?検索しました? 260 setLbl( "MSG0033" ); // ?検索しました? 261 jspPrint( getMsglbl() ); 262 } 263 else if( CMD_REMOVE.equals( command ) ) { 264 removeAttribute(); 265 // setMsg( "MSG0061" ); // 削除しました? 266 setLbl( "MSG0061" ); // 削除しました? 267 jspPrint( getMsglbl() ); 268 } 269 else if( CMD_CANCEL.equals( command ) ) { 270 cancelAttribute(); 271 // setMsg( "MSG0063" ); // 完?ました? 272 setLbl( "MSG0063" ); // 完?ました? 273 jspPrint( getMsglbl() ); 274 } 275 return viewAttribute(); 276 } 277 278 /** 279 * HybsTimerTask を登録します? 280 * 281 * @og.rev 3.2.2.0 (2003/05/31) HybsTimerTask に対して、設定?を渡せるように変更? 282 * @og.rev 3.6.0.7 (2004/11/06) パラメータをMapで渡すよ?変更? 283 * @og.rev 3.7.0.4 (2005/03/14) HybsTimerTask に setErrorSleepSec メソ?の追? 284 */ 285 @SuppressWarnings(value={"unchecked"}) 286 private void setAttribute() { 287 // シングルトンで、かつ、すでに、同?称のタスク? 288 // 含まれて?場合?、セ?しな?? 289 if( singleton && taskManager.contains( name ) ) { return ; } 290 291 // 3.6.0.7 (2004/11/06) パラメータをMapで渡すよ?変更 292 Map<String,String> param = null; 293 if( keys != null ) { 294 param = new HashMap<String,String>(); 295 for( int i=0; i<keys.length; i++ ) { 296 param.put( keys[i],vals[i] ); 297 } 298 } 299 300 HybsTimerTask task = (HybsTimerTask)HybsSystem.newInstance( timerTask ); 301 taskManager.addTask( task ); 302 303 task.setName( name ); 304 task.setComment( comment ); 305 task.setParameter( param ); // 3.6.0.7 (2004/11/06) 306 task.setBody( body ); 307 task.setStartTime( startTime ); 308 task.setStopTime( stopTime ); 309 task.setErrorSleepSec( ERROR_SLEEP_TIME ); // 3.7.0.4 (2005/03/14) 310 task.initDaemon(); 311 312 // 3.6.1.0 (2005/01/05) Timer 同?レ?のため、?別に作?する? 313 Map<String,Timer> timerMap = (Map<String,Timer>)getContextAttribute( TIMER_KEY ); 314 if( timerMap == null ) { timerMap = new HashMap<String,Timer>(); } 315 316 Timer timer = timerMap.get( name ); 317 if( timer == null ) { timer = new Timer( true ); } 318 319 if( fixedDelay ) { 320 if( period > 0 ) { timer.schedule( task,delay,period ); } 321 else { timer.schedule( task,delay ); } 322 } 323 else { 324 if( period < FIXED_RATE_MIN_TIME ) { period = FIXED_RATE_MIN_TIME; } 325 timer.scheduleAtFixedRate( task,delay,period ); 326 } 327 328 // 3.6.1.0 (2005/01/05) Timer 同?レ?のため、?別に作?する? 329 timerMap.put( name,timer ); 330 setContextAttribute( TIMER_KEY,timerMap ); 331 } 332 333 /** 334 * HybsTimerTask を?表示します? 335 * 336 * @og.rev 3.5.2.0 (2003/10/20) 結果?DBTableModel として、scope 属?に登録する? 337 * @og.rev 3.5.6.1 (2004/06/25) lang ?コー?属?を削除します? 338 * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェ?を行います? 339 * @og.rev 3.6.0.8 (2004/11/19) 正常に登録できたかど?を?返します? 340 * 341 * @return 正常かど?(true:正常/false:異常) 342 */ 343 private boolean viewAttribute() { 344 HybsTimerTask[] tasks = taskManager.toArray(); 345 DBTableModel table = makeDBTable( tasks ); 346 347 if( "local".equals( scope ) ) { 348 if( table != null ) { 349 ViewForm form = ViewFormFactory.newInstance( "HTMLTable" ); 350 form.clear(); 351 form.init( table ); 352 jspPrint( form.create() ); 353 } 354 } 355 else { 356 super.setScope( scope ); // 3.6.0.9 (2004/12/03) 357 // 3.6.0.8 (2004/11/19) トランザクションチェ?を行います? 358 return commitTableObject( tableId, table ); 359 } 360 return true; 361 } 362 363 /** 364 * HybsTimerTask を削除します? 365 * 366 * @og.rev 3.2.2.0 (2003/05/31) キャンセルを名前でもできる様にロジ?追?? 367 * 368 */ 369 private void removeAttribute() { 370 if( uniqKey >= 0 ) { 371 taskManager.cancelTask( uniqKey ); 372 } 373 else { 374 taskManager.cancelTask( name ); 375 } 376 } 377 378 /** 379 * Timer そ?も?をキャンセルします? 380 * 381 * すべての、HybsTimerTask は、削除されます? 382 * 383 * @og.rev 3.6.1.0 (2005/01/05) Timer 同?レ?のため、?別に作?する? 384 */ 385 @SuppressWarnings(value={"unchecked"}) 386 private void cancelAttribute() { 387 taskManager.clear(); 388 389 // 3.6.1.0 (2005/01/05) 390 Map<String,Timer> timerMap = (Map<String,Timer>)getContextAttribute( TIMER_KEY ); 391 if( timerMap != null ) { 392 Iterator<Timer> iterator = timerMap.values().iterator(); // 4.3.3.6 (2008/11/15) Generics警告対? 393 while( iterator.hasNext() ) { 394 // ((Timer)iterator.next()).cancel(); 395 (iterator.next()).cancel(); // 4.3.3.6 (2008/11/15) Generics警告対? 396 } 397 timerMap.clear(); 398 } 399 removeContextAttribute( TIMER_KEY ); 400 } 401 402 /** 403 * 【TAG】コマン?SET,VIEW,REMOVE,CANCEL)をセ?しま?初期値:SET)? 404 * 405 * @og.tag 406 * コマンド?,HTMLから(get/post)?されます?で,CMD_xxx で設定される 407 * フィールド定数値の?れかを??できます? 408 * 何も設定されな??また?、null の場合??SET" が?期?にセ?されます? 409 * 410 * @param cmd コマン?public static final 宣?れて???) 411 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.ScheduleTag.CMD_SET">コマンド定数</a> 412 */ 413 public void setCommand( final String cmd ) { 414 command = nval( getRequestParameter( cmd ),command ); 415 } 416 417 /** 418 * 【TAG】??実行するクラス?HybsTimerTask のサブクラス)を指定します? 419 * 420 * @og.tag 処?実行す?HybsTimerTask のクラス名を?します? 421 * 422 * @param val クラス? 423 */ 424 public void setTimerTask( final String val ) { 425 timerTask = getRequestParameter( val ); 426 } 427 428 /** 429 * 【TAG】名称(ユニ?クキー)を設定します? 430 * 431 * @og.tag タイマ?タスクの名称(ユニ?クキー)を設定します? 432 * 433 * @param nm タイマ?タスクの名称 434 */ 435 public void setName( final String nm ) { 436 name = getRequestParameter( nm ); 437 } 438 439 /** 440 * 【TAG】タイマ?タスクの説明を設定します? 441 * 442 * @og.tag タイマ?タスクの説明を設定します? 443 * 444 * @param cmt タイマ?タスクの説? 445 */ 446 public void setComment( final String cmt ) { 447 comment = getRequestParameter( cmt ); 448 } 449 450 /** 451 * 【TAG】ミリ秒単位??時間を設定しま?初期値:0)? 452 * 453 * @og.tag タスクが実行される前?ミリ秒単位??を設定しま?初期値:0) 454 * 455 * @param val ?時間(ms) 456 */ 457 public void setDelay( final String val ) { 458 delay = nval( getRequestParameter( val ),delay ); 459 } 460 461 /** 462 * 【TAG】ミリ秒単位?繰り返し間隔を設定しま?初期値:60000)? 463 * 464 * @og.tag 連続するタスク実行?ミリ秒単位?時間を設定しま?初期値:60000 mS) 465 * 466 * @param val 繰り返し間隔(ms) 467 */ 468 public void setPeriod( final String val ) { 469 period = nval( getRequestParameter( val ),period ); 470 } 471 472 /** 473 * 【TAG】固定遅延実行を?するかど?[true:固定遅延実?false:固定?度実行]を設定しま?初期値:true)? 474 * 475 * @og.tag 476 * 固定遅延実行では、前の実行?実際の実行時間を基準にしてそれぞれの実行がスケジュールされます? 477 * 何らか??で実行が?した場?そ?あとの実行も?されます? 478 * ?的に、実行?頻度は通常、指定した期間?対応する?度よりも若干?なりま? 479 * 480 * 固定?度実行では、最初?実行?スケジュールされた実行時間を基準にしてそれぞれの実行が 481 * スケジュールされます?何らか??で実行が?した場合?「遅れを取り戻す?ために 482 * 2 つ以上?実行が連続して行われます??的に実行?頻度は、指定した期間?対応する?度と 483 * 同じになりま? 484 * 初期値は、true:固定遅延実?です? 485 * 486 * @param flag [true:固定遅延実?false:固定?度実行] 487 */ 488 public void setFixedDelay( final String flag ) { 489 fixedDelay = nval( getRequestParameter( flag ),fixedDelay ); 490 } 491 492 /** 493 * 【TAG】スケジュールを?に決めるためのユニ?ク番号を指定しま?初期値:-1)? 494 * 495 * @og.tag 496 * スケジュールを削除したりする?合に、?なユニ?ク番号を指定します? 497 * 初期値は?1:あり得な?? です? 498 * 499 * @param no ユニ?ク番号 500 */ 501 public void setUniqKey( final String no ) { 502 uniqKey = nval( getRequestParameter( no ),uniqKey ); 503 } 504 505 /** 506 * 【TAG】Name属?が同??タスクを2重登録出来な??true/false]にしま?初期値:true[出来ない])? 507 * 508 * @og.tag 509 * 同?類?タスクを?同時立上げしたくな??合に、利用します? 510 * ?に、タイマ?タスクそ?も?が?繰り返し実行されます?で? 511 * 初期値は?重登録禁止にして?す? 512 * 513 * @param flag Name属?が同??タスクを2重登録出来な??する(初期値:true) 514 */ 515 public void setSingleton( final String flag ) { 516 singleton = nval( getRequestParameter( flag ),singleton ); 517 } 518 519 /** 520 * 【TAG】HybsTimerTask に渡す為のキー??、CSV形式で??します? 521 * 522 * @og.tag 523 * HybsTimerTask に渡す為の、キー??をカンマ区?で??できます? 524 * vals 属?には、キーに対応する?を?設定してください? 525 * ?方法?、CSV変数を?に?してから、getRequestParameter で値を取得します? 526 * こうしな???タ自身にカンマを持って?場合に?をミスる為です? 527 * 528 * @og.rev 3.2.2.0 (2003/05/31) 新規追? 529 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 530 * 531 * @param key キー??(CSV形? 532 */ 533 public void setKeys( final String key ) { 534 keys = getCSVParameter( key ); 535 } 536 537 /** 538 * 【TAG】HybsTimerTask に渡す為の値を?CSV形式で??します? 539 * 540 * @og.tag 541 * キーに設定した?を?カンマ区??で?して出来ます? 542 * ??序?、キーと同じにしておいて下さ?? 543 * ?方法?、CSV変数を?に?してから、getRequestParameter で値を取得します? 544 * こうしな???タ自身にカンマを持って?場合に?をミスる為です? 545 * 546 * @og.rev 3.2.2.0 (2003/05/31) 新規追? 547 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 548 * 549 * @param val 値(CSV形? 550 */ 551 public void setVals( final String val ) { 552 vals = getCSVParameter( val ); 553 } 554 555 /** 556 * 【TAG?4時間制(YYMMDD)の開始時刻を設定しま?初期値:000000)? 557 * 558 * @og.tag 559 * ?時刻??の実行?み許可するように開始時刻を設定します? 560 * これは、タイマ?で?した間隔ごとにチェ?を?れるので、チェ?時間? 561 * 長??合?、正確に開始時刻から始まると?も?ではありません? 562 * 初期値は?000000" です? 563 * 564 * @og.rev 3.2.2.0 (2003/05/31) 新規追? 565 * 566 * @param st 開始時刻 567 */ 568 public void setStartTime( final String st ) { 569 startTime = nval( getRequestParameter( st ),startTime ) ; 570 } 571 572 /** 573 * 【TAG?4時間制(YYMMDD)の終?刻を設定しま?初期値:000000)? 574 * 575 * @og.tag 576 * ?時刻??の実行?み許可するように終?刻を設定します? 577 * これは、タイマ?で?した間隔ごとにチェ?を?れるので、チェ?時間? 578 * 長??合?、正確に終?刻で終?ると?も?ではありません? 579 * (終?刻を越えてからの新規実行?ありません? 580 * 初期値は?000000" です? 581 * 582 * @og.rev 3.2.2.0 (2003/05/31) 新規追? 583 * 584 * @param st 終?刻 585 */ 586 public void setStopTime( final String st ) { 587 stopTime = nval( getRequestParameter( st ),stopTime ) ; 588 } 589 590 /** 591 * HybsTimerTask オブジェクト?列より?DBTableModel を作?して返します? 592 * カラ?は?TaskName","UniqKey","Comment","CreateTime","scheduledTime" です? 593 * 594 * @param tasks タイマ?タスクオブジェクト?? 595 * 596 * @return タイマ?タスクオブジェクト???ブルモ??無ければ null 597 */ 598 private DBTableModel makeDBTable( final HybsTimerTask[] tasks ) { 599 if( tasks == null || tasks.length == 0 ) { return null; } 600 601 ResourceManager resource = getResource(); 602 603 String[] names = new String[] { 604 "TaskName","UniqKey","Comment","CreateTime","scheduledTime" 605 }; 606 607 DBTableModel table = DBTableModelUtil.newDBTable(); 608 table.init( names.length ); 609 for( int i=0; i<names.length; i++ ) { 610 DBColumn dbColumn = resource.makeDBColumn( names[i] ); 611 table.setDBColumn( i,dbColumn ); 612 } 613 614 for( int i=0; i<tasks.length; i++ ) { 615 String[] clmVals = new String[names.length]; 616 clmVals[0] = tasks[i].getName() ; 617 clmVals[1] = String.valueOf( tasks[i].getUniqKey() ); 618 clmVals[2] = tasks[i].getComment() ; 619 clmVals[3] = HybsSystem.getDate( tasks[i].getCreateTime() ); 620 clmVals[4] = HybsSystem.getDate( tasks[i].scheduledExecutionTime() ); 621 table.addColumnValues( clmVals ); 622 } 623 624 return table ; 625 } 626 627 /** 628 * 【TAG?通常は使?せん)結果のDBTableModelを?sessionに登録するとき?キーを指定しま? 629 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])? 630 * 631 * @og.tag 632 * 検索結果より、DBTableModelオブジェクトを作?します?これを?下流?viewタグ等に 633 * 渡す?合に??常は、session を利用します?そ?場合?登録キーです? 634 * query タグを同時に実行して、結果を求める?合?同?モリに配置される為? 635 * こ? tableId 属?を利用して、メモリ空間を?ます? 636 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])? 637 * 638 * @param id sessionに登録する時? ID 639 */ 640 public void setTableId( final String id ) { 641 tableId = nval( getRequestParameter( id ),tableId ); 642 } 643 644 /** 645 * 【TAG】キャ?ュする場合?スコー?local,request,page,session,applicaton)を指定しま?初期値:local)? 646 * 647 * @og.tag 648 * "local","request","page","session","applicaton" が指定できます? 649 * "local" は?去のバ?ジョンとの互換性を保つ為の特殊な値です? 650 * 初期値は?local" です? 651 * 652 * @og.rev 3.5.2.0 (2003/10/20) 新規作? 653 * 654 * @param scp スコー? 655 */ 656 @Override 657 public void setScope( final String scp ) { 658 scope = nval( getRequestParameter( scp ),scope ); 659 } 660 661 /** 662 * こ?オブジェクト???表現を返します? 663 * 基本???目?使用します? 664 * 665 * @return こ?クラスの??表現 666 */ 667 @Override 668 public String toString() { 669 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 670 .println( "VERSION" ,VERSION ) 671 .println( "tableId" ,tableId ) 672 .println( "command" ,command ) 673 .println( "timerTask" ,timerTask ) 674 .println( "name" ,name ) 675 .println( "comment" ,comment ) 676 .println( "delay" ,delay ) 677 .println( "period" ,period ) 678 .println( "fixedDelay" ,fixedDelay ) 679 .println( "uniqKey" ,uniqKey ) 680 .println( "singleton" ,singleton ) 681 .println( "FIXED_RATE_MIN_TIME" ,FIXED_RATE_MIN_TIME) 682 .println( "TIMER_KEY" ,TIMER_KEY ) 683 .println( "TIMERTASK_KEY" ,TIMERTASK_KEY ) 684 .println( "keys" ,keys ) 685 .println( "vals" ,vals ) 686 .println( "body" ,body ) 687 .println( "startTime" ,startTime ) 688 .println( "stopTime" ,stopTime ) 689 .println( "scope" ,scope ) 690 .println( "ERROR_SLEEP_TIME" ,ERROR_SLEEP_TIME) 691 .println( "COMMAND_LIST" ,COMMAND_LIST ) 692 .println( "Other..." ,getAttributes().getAttribute() ) 693 .fixForm().toString() ; 694 } 695 }