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.common; 017 018 import org.opengion.fukurou.util.LogWriter; 019 import org.opengion.fukurou.util.StringUtil; 020 import org.opengion.fukurou.util.HybsEntry; 021 import org.opengion.fukurou.util.HybsDateUtil; 022 023 // import java.util.Date; 024 import java.util.Calendar; 025 import java.util.Set; 026 import java.util.Map; 027 import java.util.HashMap; 028 import java.util.List; 029 import java.util.ArrayList; 030 import java.util.Iterator; 031 import java.util.Arrays; 032 // import java.util.Locale ; 033 034 // import java.text.DateFormat; 035 // import java.text.SimpleDateFormat; 036 import java.net.InetAddress; 037 import java.net.UnknownHostException; 038 039 /** 040 * 共通的に、使用されるシス?関連メソ?を集?たクラスです? 041 * 042 * 全変数は、public static final 宣?れて?す? 043 * メソ?は、日付取得,エラーメ?ージ処?を行って?す? 044 * 045 * @og.group 初期? 046 * 047 * @version 4.0 048 * @author Kazuhiko Hasegawa 049 * @since JDK5.0, 050 */ 051 public final class HybsSystem { 052 053 /** バッファの初期容量を通常より若干多い目に設定します? {@value} */ 054 public static final int BUFFER_SMALL = 50; 055 056 /** バッファの初期容量を通常より多い目に設定します? {@value} */ 057 public static final int BUFFER_MIDDLE = 200; 058 059 /** バッファの初期容量を通常より大?多い目に設定します? {@value} */ 060 public static final int BUFFER_LARGE = 500; 061 062 /** シス?依存?改行記号をセ?します? */ 063 public static final String CR = System.getProperty("line.separator"); 064 065 /** HTMLでの改行記号( <br /> )をセ?します? */ 066 public static final String BR = "<br />" + CR ; 067 068 /** シス?依存?ファイルセパレーター?をセ?します? */ 069 public static final char FS = (System.getProperty("file.separator")).charAt(0); 070 071 /** シス?設定D?のキーと値を?Map に読み込みます? */ 072 // 4.0.0 (2005/01/31) シス?パラメータの管?ブジェク? 073 private static Map<String,String> sysParam = null; 074 075 // 4.3.1.0 (2008/09/03) リクエストでのみ生?できる設定?のキャ?ュ 076 private static Map<String, String> reqCache = new HashMap<String, String>(); 077 078 /** URL の /(ルー?に対応する物?ィレクトリ */ 079 private static String realPath = null; // 4.0.0 (2005/01/31) 080 081 /** リクエスト関係パラメータの初期設定フラグ */ 082 private static boolean paramSetFlag = false; // 4.0.0 (2005/11/30) 083 084 /** 085 * ??ブル表示時?チェ?ボックスのname属? {@value} 086 * ??ブル表示時にチェ?ボックスを表示しておき、どの行が選ばれたかを 087 * ?する?合に、その name 属?に?するキーの値です? 088 * 受け取る側は、このキーで、request ??より選ばれた行番号を知ることができます? 089 */ 090 public static final String ROW_SEL_KEY = "h_rowSel"; 091 092 /** 093 * ??ブル表示のチェ?ボックスを特定す?id の 名称( id は、この名称?行番号) {@value} 094 */ 095 public static final String ROW_ID_KEY = "cb"; // 3.6.0.0 (2004/09/17) 096 097 /** session オブジェクトに関連付け?DBTableModel インスタンスの?ォルトキー {@value} */ 098 public static final String TBL_MDL_KEY = "h_tblmdl" ; 099 100 // 3.8.1.1 (2005/11/21) ExcelOut の整合?を取る為の仕掛? 101 /** session オブジェクトに関連付け?ExcelOut の整合?チェ?用のキー */ 102 public static final String TBL_MDL_CONKEY = "h_tblmdlCon" ; 103 104 /** session オブジェクトに関連付け?Viewform インスタンスの?ォルトキー {@value} */ 105 public static final String VIEWFORM_KEY = "h_vform" ; 106 107 /** session オブジェクトに関連付け?ViewLink インスタンスの?ォルトキー {@value} */ 108 public static final String VIEWLINK_KEY = "h_vlink" ; 109 110 /** session オブジェクトに関連付け?ViewMark インスタンスの?ォルトキー {@value} */ 111 public static final String VIEW_MARK_KEY = "h_vmark" ; 112 113 // 3.8.6.1 (2006/10/20) 編?にカラ?置き換える 機?に対? 114 /** session オブジェクトに関連付け?ViewMark:editor インスタンスの?ォルトキー */ 115 public static final String EDIT_MARK_KEY = "h_emark" ; 116 117 /** session オブジェクトに関連付け?UserInfo インスタンスのキー {@value} */ 118 public static final String USERINFO_KEY = "h_uInfo" ; 119 120 /** session オブジェクトに関連付け?GUIInfo インスタンスのキー {@value} */ 121 public static final String GUIINFO_KEY = "h_gInfo" ; 122 123 /** session オブジェクトに関連付け?リクエスト情報キャ?ュのキー {@value} */ 124 public static final String REQ_CACHE_KEY = "h_req" ; 125 126 /** session オブジェクトに関連付け?エラーメ?ージ??キャ?ュのキー {@value} */ 127 public static final String ERR_MSG_KEY = "h_errMsg" ; 128 129 // 2.3.1.0 (2002/12/20) 管??が?てのユーザーにメ?ージを同報できるタグを追? 130 /** session 管??がス??タスバ?に設定するオブジェクト?キー {@value} */ 131 public static final String ST_BAR_OBJ_KEY = "h_stBar" ; 132 133 // 3.0.0.0 (2002/12/25) SceduleTag 追??伴??Timerオブジェクト?管?キー追? 134 /** Timerオブジェクト?管?キー {@value} */ 135 public static final String SCEDULE_KEY = "h_timer" ; 136 137 // 3.0.0.0 (2002/12/25) SceduleTag 追??伴??Timerオブジェクト?管?キー追? 138 /** TimerTaskオブジェクト?管?キー {@value} */ 139 public static final String SCEDULE_TASK_KEY = "h_timer_task" ; 140 141 // 3.1.2.0 (2003/04/07) ソースコード中の固定?を?定義ファイルを使用するように変更する? 142 /** Forward時?転送?ペ?ジ名をセ?ョンに登録するとき?キー {@value} */ 143 public static final String FORWARD_PAGE_KEY = "h_fpg" ; 144 145 // 3.1.2.0 (2003/04/07) ソースコード中の固定?を?定義ファイルを使用するように変更する? 146 /** Forward時?転送?ペ?ジ名をセ?ョンに登録するとき?キー {@value} */ 147 public static final String REVIEW_PAGE_KEY = "h_rpg" ; 148 149 // 3.1.8.0 (2003/05/16) BACK_GAMENID のキャ?ュ方法を??常のリクエスト情報と?して、管?る? 150 /** BACK_GAMENID??をセ?ョンに登録するとき?キー {@value} */ 151 public static final String BACK_GAMENID_KEY = "h_bgid" ; 152 153 // 4.0.1.0 (2007/12/17) BACK_ADDRESS のキャ?ュ方法を??常のリクエスト情報と?して、管?る? 154 /** BACK_GAMENID??をセ?ョンに登録するとき?キー {@value} */ 155 public static final String BACK_ADDRESS_KEY = "h_bgadrs" ; 156 157 // 3.7.0.3 (2005/03/01) 戻るリンクで戻る行番号を指定します?(BACK_GAMENIDとセ?) 158 /** BACK_ROW??をセ?ョンに登録するとき?キー {@value} */ 159 public static final String BACK_ROW_KEY = "h_brow" ; 160 161 // 3.1.9.0 (2003/05/16) ShellTag で、Shell オブジェクトをキープする為のキーを作?? 162 /** Shell オブジェクトをセ?ョンに登録するとき?キー {@value} */ 163 public static final String SHELL_KEEP_KEY = "h_shKeepKey" ; 164 165 // 3.5.0.0 (2003/09/17) ユーザー変更時?、旧ユーザーIDのをキープする為のキーを作?? 166 /** oldUserId ??をセ?ョンに登録するとき?キー {@value} */ 167 public static final String OLD_USERID_KEY = "h_oldID" ; 168 169 // 3.5.4.7 (2004/02/06) DBTableModelのソート時のカラ?の受け渡しキー? 170 /** sortColumns ??をリクエスト情報より取得するとき?キー {@value} */ 171 public static final String SORT_COLUMNS = "h_sortClmns" ; 172 173 // 3.5.4.7 (2004/02/06) DBTableModelのソート時のソート方向?受け渡しキー? 174 /** sortAscending をリクエスト情報より取得するとき?キー {@value} */ 175 public static final String SORT_ASCENDING = "h_sortAsc" ; 176 177 // 3.5.5.0 (2004/03/12) キー?行番号の連結文字?(例:__)を設定します? 178 /** カラ?D(連結文字?)行番号の連結文字?を定義 {@value} */ 179 public static final String JOINT_STRING = "__" ; 180 181 // 3.5.5.3 (2004/04/09) synchronized 用のロ?オブジェクトを作?します? 182 private static final Object lock = new Object(); 183 184 // 3.5.5.5 (2004/04/23) DBTableModel の整合?パラメータ?hidden で出力します? 185 /** DBTableModel の整合?パラメータをリクエスト情報より取得するとき?キー {@value} */ 186 public static final String CONSISTENCY_KEY = "h_consisKey" ; 187 188 // 3.5.5.5 (2004/04/23) 転送不要パラメータの先?に付けるキーワードです? 189 /** SubmitTag で出力されるボタンパラメータは、次ペ?ジへ転送しません?{@value} */ 190 public static final String NO_XFER_KEY = "hX_" ; 191 192 // 3.8.0.0 (2005/06/07) 同??ョンでのマルチ起動対策用キーワードです? 193 /** 同??ョンでのマルチ起動された場合に、前に開かれた画面からのアクセスを禁止します? */ 194 public static final String MULTI_SESSION_CHECK = "MSC" ; 195 196 /** 3.8.9.1 (2005/07/29) JFreeChart オブジェクト?キャ?ュ {@value} */ 197 public static final String JF_CHART_CACHE_KEY = "h_chartKey" ; 198 199 // 3.8.0.8 (2005/10/03) GET時?URL に使用可能な?数制? 200 /** URL に使用可能な?数は? 2,083 ?? 201 * http://support.microsoft.com/default.aspx?scid=kb;ja;208427 202 */ 203 public static final int MAX_GET_LENGTH = 2083 ; 204 205 /** 4.0.0 (2005/01/31) GUIのロールを区?、区??? {@value} */ 206 public static final char GUI_DELIMITER = '|' ; 207 208 /** 4.0.0 (2005/01/31) ローカルリソースのオブジェクト保存時のキー {@value} */ 209 public static final String LOCAL_RES_KEY = "h_lclRes" ; 210 211 /** 4.0.0 (2005/02/28) Tomcat起動時エラーが発生した?合?エラーキー {@value} */ 212 public static final String LOCAL_CONTX_ERR_KEY = "h_lclConErr" ; 213 214 /** 4.0.0 (2005/08/31) グループメニューのキャ?ュキー {@value} */ 215 public static final String GUI_GR_MENU_CACHE_KEY = "h_grpCache" ; 216 217 /** 4.0.0 (2005/09/30) 個人別お気に入りメニューの GE16 登録キーワー?{@value} */ 218 public static final String GUI_FAV_MENU_KEY = "GUI_FAV_MENU_KEY" ; 219 220 /** 4.0.0 (2005/06/04) DBTableWriter の columns 属?のセ?ョン登録キーワー?{@value} */ 221 public static final String TBL_WRITER_CLMS = "TBL_WRITER_CLMS" ; 222 223 /** 4.1.2.1 (2008/03/13) must 属?をrequest変数にセ?する場合? キー {@value} */ 224 public static final String MUST_KEY = "h_must_" ; 225 226 /** 4.3.0.0 (2008/07/04) ?に Queryを実行した情報の保存時のキー {@value} */ 227 public static final String DB_LAST_SQL_KEY = "h_lastSql" ; 228 229 /** 4.3.3.0 (2008/10/01) ペ?ジ?画面遷移なしモードを?しようする場合?キー {@value} */ 230 public static final String NO_TRANSITION_MODE_KEY = "h_noTrnsKey" ; 231 232 /** 4.3.6.0 (2009/04/01) イベントカラ?利用したかど?のチェ?キー {@value} */ 233 public static final String USE_EVENT_COLUMN_KEY = "h_eventColumn" ; 234 235 /** 5.1.7.0 (2010/06/01) イベントカラ?ラ??するspanタグのクラス {@value} */ 236 public static final String EVENT_COLUMN_CLASS = "h_evElm"; 237 238 /** 5.1.7.0 (2010/06/01) イベントカラ?ラ??するspanタグで、子カラ??書き込み可/不可を設定する属??{@value} */ 239 public static final String EVENT_COLUMN_WRITABLE = "h_evWrtbl"; 240 241 /** 5.1.7.0 (2010/06/01) イベントカラ?ラ??するspanタグで、子カラ??IDを設定する属??{@value} */ 242 public static final String EVENT_COLUMN_ID = "h_evCid"; 243 244 /** 5.1.7.0 (2010/06/01) イベントカラ?ラ??するspanタグで、子カラ??初期値を設定する属??{@value} */ 245 public static final String EVENT_COLUMN_INITVAL = "h_evVal"; 246 247 /** 4.3.7.0 (2009/06/01) linkタグのurlCheckキーを?力する際のパラメーターキー {@value} */ 248 public static final String URL_CHECK_KEY = "h_urlCheck" ; 249 250 /** 4.3.7.5 (2009/07/08) ペ?ジ?ajaxSubmitを利用する場合?キー {@value} */ 251 public static final String USE_AJAX_SUBMIT_KEY = "h_ajaxSubmit" ; 252 253 /** 5.1.6.0 (2010/05/01) Viewでソート済みかど?を判定する際のキー {@value} */ 254 public static final String VIEW_SORT_KEY = "h_viewSrt"; 255 256 /** 5.1.9.0 (2010/08/01) トランザクションを実現する際?キー {@value} */ 257 public static final String TRANSACTION_KEY = "h_tran"; 258 259 /** 5.2.2.0 (2010/11/01) URLの引数部をハ?ュする際?リクエストキー {@value} */ 260 public static final String URL_HASH_REQ_KEY = "h_r"; 261 262 /** 5.3.2.0 (2011/02/01) リクエストパラメーターのキー?を保存する際のキー {@value} */ 263 public static final String PARAM_NAMES_KEY = "h_prmNms"; 264 265 /** 5.3.6.0 (2011/06/01) クエリを呼び出し時のフォーカスを制御するためのキー {@value} */ 266 public static final String QUERY_FOCUS_KEY = "h_qryFcs"; 267 268 // 5.5.9.1 (2012/12/07) セ?ョン作?時に、セ?ョンIDを保存しておく、規定?キー 269 public static final String SESSION_KEY = "h_session_key"; 270 271 /** 272 * 帳票エンコー?ング {@value} 273 * 設定されて???合?、UTF-8 に設定されます? 274 */ 275 public static final String REPORT_ENCODE = "UTF-8" ; 276 277 /** 実行して?サーバ?の名称 */ 278 public static final String HOST_NAME ; 279 /** 実行して?サーバ?のIPアドレス */ 280 public static final String HOST_ADRS ; 281 282 static { 283 String dmnHost ; 284 String dnmAdrs ; 285 try { 286 InetAddress address = InetAddress.getLocalHost(); 287 dmnHost = address.getHostName() ; 288 dnmAdrs = address.getHostAddress() ; 289 } 290 catch( UnknownHostException ex ) { 291 dmnHost = "Unknown"; 292 dnmAdrs = "Unknown"; 293 } 294 HOST_NAME = dmnHost; 295 HOST_ADRS = dnmAdrs; 296 } 297 298 /** 299 * ?ォルトコンストラクターをprivateにして? 300 * オブジェクト?生?をさせな??する? 301 * 302 */ 303 private HybsSystem() {} 304 305 /** 306 * ?シス?リソースマップオブジェクトを設定します? 307 * 308 * @og.rev 3.5.3.1 (2003/10/31) 新規作? 309 * @og.rev 4.0.0.0 (2005/01/31) Ver4 のシス?パラメータ??の取得??追?ます? 310 * @og.rev 4.3.1.0 (2008/09/03) SERVER_NAME,SERVER_URL,CONTEXT_URLをキャ?ュから復? 311 * 312 * @param param シス?リソースマッ? 313 */ 314 public static void setInitialData( final Map<String,String> param ) { 315 synchronized( lock ) { 316 sysParam = param; 317 realPath = param.get( "REAL_PATH" ); // 4.0.0 (2005/01/31) 318 // 4.3.1.0 (2008/09/03) SERVER_NAME,SERVER_URL,CONTEXT_URLをキャ?ュから復? 319 if( paramSetFlag ) { 320 sysParam.putAll( reqCache ); 321 } 322 } 323 324 System.out.println( " [" + sysParam.get( "CONTEXT_NAME" ) + "] のシス?パラメータが?[" + sysParam.size() + "] 件設定されました? ); 325 } 326 327 /** 328 * シス?パラメータ??を取得します? 329 * Ver3 では、?ロパティーファイルでリソースを提供して?為? 330 * 立ち上げタイミングとの関係で始めて使用する場合に??タを取得します? 331 * 332 * @og.rev 4.0.0.0 (2005/01/31) 新規作? 333 * 334 * @param key シス?パラメータのキー 335 * 336 * @return シス?パラメータ の値 337 */ 338 private static String getParam( final String key ) { 339 synchronized( lock ) { 340 return sysParam.get( key ); 341 } 342 } 343 344 /** 345 * シス?パラメータの追?報セ?が終?て?かど?を取得します? 346 * 設定??行うかど?の判定に使用します? 347 * 348 * @og.rev 4.0.0.0 (2005/11/30) 新規作? 349 * 350 * @return true:設定完?/ false:未完?設定可能) 351 * @see #setRequestParam( String,String,int,String ) 352 */ 353 public static boolean isParamSet() { 354 return paramSetFlag; 355 } 356 357 /** 358 * シス?パラメータ??を追?定します? 359 * これは、SERVER_NAME、SERVER_URL、CONTEXT_URL などのリクエストオブジェクトか? 360 * しか取得できな??有情報を?登録する場合に使用します? 361 * これら?値は、taglib/JspInitTag タグでセ?されます? 362 * セ?する前に、isParamSet() で設定済みかど?判断してください? 363 * こ?メソ?は、isParamSet() の値に関係なく?セ?します? 364 * 365 * @og.rev 4.0.0.0 (2005/01/31) 新規作? 366 * @og.rev 4.3.1.0 (2008/09/03) SERVER_NAME,SERVER_URL,CONTEXT_URLのキャ?ュ処?? 367 * 368 * @param serverName サーバ?? 369 * @param scheme スキー? 370 * @param port ポ?ト番号 371 * @param path コン?ストパス 372 * @see #isParamSet() 373 */ 374 public static void setRequestParam( final String serverName,final String scheme, 375 final int port,final String path ) { 376 synchronized( lock ) { 377 sysParam.put( "SERVER_NAME",serverName ); 378 379 String portStr = ( port == 80 ) ? "" : ":" + port ; 380 String serverURL = scheme + "://" + serverName + portStr ; 381 sysParam.put( "SERVER_URL",serverURL + "/" ); 382 383 String contextURL = serverURL + path + "/" ; 384 sysParam.put( "CONTEXT_URL",contextURL ); 385 // 4.3.1.0 (2008/09/03) SERVER_NAME,SERVER_URL,CONTEXT_URLをキャ?ュして置? 386 reqCache.put( "SERVER_NAME",serverName ); 387 reqCache.put( "SERVER_URL",serverURL + "/" ); 388 reqCache.put( "CONTEXT_URL",contextURL ); 389 paramSetFlag = true; 390 } 391 } 392 393 /** 394 * 現在日付?時刻を所得します? 395 * 出力フォーマット?、シス?パラメータ の SYS_TIME の 396 * 設定を適用します?( "yyyy/MM/dd HH:mm:ss" ) 397 * 398 * @og.rev 4.0.0.0 (2005/01/31) getSystemResource() ?sysParam に変更 399 * 400 * @return 現在日付?時刻 ( ?2001/04/17 15:48:22 ) 401 */ 402 public static String getDate() { 403 return getDate( getParam( "SYS_TIME" ) ); 404 } 405 406 /** 407 * ?時刻をデフォルト?フォーマットで、所得します? 408 * フォーマット??方法?、java.text.SimpleDateFormat の?方法と同?す? 409 * 出力フォーマット?、シス?パラメータ の SYS_TIME の 410 * 設定を適用します?( "yyyy/MM/dd HH:mm:ss" ) 411 * 412 * @og.rev 4.0.0.0 (2005/01/31) getSystemResource() ?sysParam に変更 413 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正します? 414 * 415 * @param time ??カレントタイ? 416 * 417 * @return 現在日付?時刻( ?2001/04/17 15:48:22 ) 418 */ 419 public static String getDate( final long time ) { 420 String form = getParam( "SYS_TIME" ); 421 return HybsDateUtil.getDate( time , form ); 422 // DateFormat formatter = new SimpleDateFormat( form,Locale.JAPAN ); 423 // return formatter.format(new Date( time )); 424 } 425 426 /** 427 * 現在日付?時刻をフォーマットを?して、所得します? 428 * フォーマット??方法?、java.text.SimpleDateFormat の?方法と同?す? 429 * 430 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正します? 431 * ※ こ?メソ?を?して、直接 HybsDateUtil を使ってもよ?、とりあえず残しておきます? 432 * 433 * @param form フォー?字? ( ?"yyyy/MM/dd HH:mm:ss.SSS" ) 434 * 435 * @return 現在日付?時刻 436 */ 437 public static String getDate( final String form ) { 438 return HybsDateUtil.getDate( form ); 439 // DateFormat formatter = new SimpleDateFormat( form,Locale.JAPAN ); 440 // return formatter.format(new Date()); 441 } 442 443 /** 444 * ?時刻をデフォルト?フォーマットで、所得します? 445 * フォーマット??方法?、java.text.SimpleDateFormat の?方法と同?す? 446 * 出力フォーマット?、シス?パラメータ の SYS_TIME の 447 * 設定を適用します?( "yyyy/MM/dd HH:mm:ss" ) 448 * 449 * @og.rev 4.0.0.0 (2005/01/31) 新規追? 450 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正します? 451 * ※ こ?メソ?を?して、直接 HybsDateUtil を使ってもよ?、とりあえず残しておきます? 452 * 453 * @param time ??カレントタイ? 454 * @param form フォー?字? ( ?"yyyy/MM/dd HH:mm:ss.SSS" ) 455 * 456 * @return 現在日付?時刻( ?2001/04/17 15:48:22 ) 457 */ 458 public static String getDate( final long time,final String form ) { 459 return HybsDateUtil.getDate( time,form ); 460 // DateFormat formatter = new SimpleDateFormat( form,Locale.JAPAN ); 461 // return formatter.format(new Date( time )); 462 } 463 464 /** 465 * 現在の月に、指定?月数を?ラスした日付文字?を返します? 466 * 日付文字?のフォーマット??yyyyMM" です? 467 * ?する月数にマイナスを指定すると、減算できます? 468 * 469 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil.getMonthPlus( plus ) に移動?現時点で利用して???で削除します? 470 * 471 * @param plus プラスする月数 472 * 473 * @return ??月数を?ラスした日付文字?(YYYYMM) 474 */ 475 // public static String getYMDate( final int plus ) { 476 // Calendar rightNow = Calendar.getInstance(); 477 // rightNow.set( Calendar.DATE, 1 ); // 当月の 1 日に設? 478 // rightNow.add( Calendar.MONTH , plus ); 479 480 // DateFormat formatter = new SimpleDateFormat( "yyyyMM",Locale.JAPAN ); 481 // return formatter.format( rightNow.getTime() ); 482 // } 483 484 /** 485 * シス?設定ファイルの??タを所得します? 486 * キーが存在しな??合?、null を返します? 487 * キーがnullの場合?、HybsSystemException をスローします? 488 * 489 * @og.rev 3.5.5.0 (2004/03/12) {@SYS.XXXX} で使用できる変数を増やします? 490 * @og.rev 3.5.5.3 (2004/04/09) {@SYS.XXXX} に、DATE と?キーを追?ます? 491 * @og.rev 4.0.0.0 (2005/01/31) getSystemResource() ?sysParam に変更 492 * 493 * @param key シス?設?キー 494 * 495 * @return シス?設定? 496 * @throws HybsSystemException キー?null の場合? 497 */ 498 public static String sys( final String key ) throws HybsSystemException { 499 if( key == null ) { 500 String errMsg = "キー?null です?"; 501 throw new HybsSystemException( errMsg ); // 3.5.5.4 (2004/04/15) 引数の並び?更 502 } 503 504 if( "DATE".equals( key ) ) { return getDate() ; } // 3.5.5.3 (2004/04/09) 505 506 String rtn = getParam( key ); 507 if( rtn == null && ! key.startsWith( "h_" ) ) { 508 String errMsg = CR + "シス?リソースキーが存在しません。key = " + key; 509 LogWriter.log( errMsg ); 510 } 511 return rtn; 512 } 513 514 /** 515 * シス?設定ファイルから、?の??タを所得します? 516 * キー?"ABC" とすれば、それで始まるデータ( ABCD, ABC_01 など) 517 * を?列で取得できます? 518 * リターン配?は、ソートされて?す? 519 * 520 * @og.rev 4.0.0.0 (2005/01/31) getSystemResource() ?sysParam に変更 521 * 522 * @param key シス?設?キー(の先?の部?字?) 523 * 524 * @return シス?設定??HybsEntry 525 */ 526 public static HybsEntry[] sysEntry( final String key ) { 527 528 List<HybsEntry> vals = new ArrayList<HybsEntry>(); 529 530 synchronized( lock ) { 531 Iterator<String> keyIte = sysParam.keySet().iterator(); // 4.3.3.6 (2008/11/15) Generics警告対? 532 while( keyIte.hasNext() ) { 533 String tempKey = keyIte.next(); // 4.3.3.6 (2008/11/15) Generics警告対? 534 if( tempKey != null && tempKey.startsWith( key ) ) { 535 HybsEntry entry = new HybsEntry( tempKey,sysParam.get( tempKey ) ); 536 vals.add( entry ); 537 } 538 } 539 } 540 HybsEntry[] entrys = vals.toArray( new HybsEntry[vals.size()] ) ; 541 Arrays.sort( entrys ); 542 543 return entrys; 544 } 545 546 /** 547 * シス?設定ファイルの??タを所得します? 548 * 特別に,int 型に??タを変換して,渡します? 549 * 変換できな??合?,NumberFormatException がスローされます? 550 * 551 * @og.rev 3.5.3.1 (2003/10/31) エラー時に、判るよ?メ?ージを?します? 552 * @og.rev 4.0.0.0 (2005/01/31) getSystemResource() ?sysParam に変更 553 * 554 * @param key シス?設?キー 555 * 556 * @return シス?設定? 557 */ 558 public static int sysInt( final String key ) { 559 if( key == null ) { 560 String errMsg = "キー?null です?"; 561 throw new HybsSystemException( errMsg ); // 3.5.5.4 (2004/04/15) 引数の並び?更 562 } 563 564 String tmp = getParam( key ); 565 int rtn ; 566 try { 567 rtn = Integer.parseInt( tmp ); 568 } 569 catch( NumberFormatException ex2 ) { 570 String errMsg = "シス?リソース の値が数字ではありません? + CR 571 + " Resource key=[" + key + "] val=[" + tmp + "]" ; 572 throw new HybsSystemException( errMsg,ex2 ); // 3.5.5.4 (2004/04/15) 引数の並び?更 573 } 574 575 return rtn; 576 } 577 578 /** 579 * シス?設定ファイルの??タを所得します? 580 * 特別に,boolean 型に??タを変換して,渡します? 581 * 変換できな??合?,NumberFormatException がスローされます? 582 * 583 * @og.rev 3.5.6.0 (2004/06/18) Booleanのコンストラクタの代わりに、Boolean.valueOf(...) を使用します? 584 * 585 * @param key シス?設?キー 586 * 587 * @return シス?設定? 588 */ 589 public static boolean sysBool( final String key ) { 590 return Boolean.valueOf( HybsSystem.sys( key ) ).booleanValue(); 591 } 592 593 /** 594 * シス?依存?URL??から?実際の?レクトリ名を?します? 595 * UNIX と Windows ?URL パス名から判断して、実ディレクトリを返します? 596 * ?方法???常の fileURL 属?と同様に、?頭が?'/' (UNIX) また??文字目が? 597 * ":" (Windows)の場合?、指定?URLそ?ままの?レクトリに、そ?な??合?? 598 * シス?パラメータ の FILE_URL 属?で??フォル??下に、作?されます? 599 * 相対パス、また?、URL の場合???に / を?れな?ください。UNIX の 600 * 絶対パスと判断されます? 601 * また?絶対パスの?には? を?れておいてください? 602 * 603 * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソ?の利用 604 * 605 * @param url URL?? 606 * 607 * @return ?レクトリ?? 608 */ 609 public static String url2dir( final String url ) { 610 return StringUtil.urlAppend( realPath,url ).replace( '/',FS ); 611 } 612 613 /** 614 * シス?リソース??を取得します? 615 * 形式?、キー([0])、?([1])の?次??列です? 616 * キーでソートされて?す? 617 * 618 * @og.rev 3.5.3.1 (2003/10/31) 新規追? 619 * @og.rev 4.0.0.0 (2005/01/31) getSystemResource() ?sysParam に変更 620 * 621 * @return シス?リソース??:キー([0])、?([1])の?次??? 622 */ 623 public static String[][] getSystemResourceData() { 624 String[][] rtn ; 625 626 synchronized( lock ) { 627 Set<Map.Entry<String,String>> entrSet = sysParam.entrySet(); 628 int size = entrSet.size(); 629 rtn = new String[2][size]; 630 631 Iterator<Map.Entry<String,String>> entrIte = entrSet.iterator(); 632 for( int i=0; i<size; i++ ) { 633 Map.Entry<String,String> entry = entrIte.next(); 634 rtn[0][i] = entry.getKey(); 635 rtn[1][i] = entry.getValue(); 636 } 637 } 638 return rtn ; 639 } 640 641 /** 642 * シス?のコン?スト名を取得します? 643 * コン?スト名は、Tomcat の servr.xml で?する仮想フォル?です? 644 * 645 * @og.rev 3.5.4.3 (2004/01/05) 新規追? 646 * 647 * @return コン?スト名(仮想フォル?) 648 */ 649 public static String getContextName() { 650 return sys( "CONTEXT_NAME" ); // 4.0.0 (2005/01/31) 651 } 652 653 /** 654 * ??引数の日付け??(YYYYMMDDHHMMSS)より、カレン?ブジェクトを作?します? 655 * 引数は、YYYYMMDD の?文字か、YYYYMMDDHHMMSS の?4文字?どちらかです? 656 * 657 * @og.rev 3.5.4.8 (2004/02/23) 新規作? 658 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正します? 659 * 660 * @param value 日付け??(YYYYMMDD また? YYYYMMDDHHMMSS) 661 * 662 * @return カレン?ブジェク? 663 */ 664 public static Calendar getCalendar( final String value ) { 665 return HybsDateUtil.getCalendar( value ); 666 667 // if ( value == null || ( value.length() != 8 && value.length() != 14 ) ) { 668 // String errMsg = "引数は、YYYYMMDD また? YYYYMMDDHHMMSS 形式?日付け??のみです?" 669 // + " value=[" + value + "]" ; 670 // throw new HybsSystemException( errMsg ); 671 // } 672 // 673 // Calendar cal = Calendar.getInstance(); 674 // cal.clear(); 675 // 676 // int hour=0,minute=0,second=0; 677 // 678 // int year = Integer.parseInt( value.substring( 0,4 ) ); 679 // int month = Integer.parseInt( value.substring( 4,6 ) ) - 1; 680 // int date = Integer.parseInt( value.substring( 6,8 ) ); 681 // 682 // if( value.length() == 14 ) { 683 // hour = Integer.parseInt( value.substring( 8,10 ) ); 684 // minute = Integer.parseInt( value.substring( 10,12 ) ); 685 // second = Integer.parseInt( value.substring( 12,14 ) ); 686 // } 687 // 688 // cal.set( year,month,date,hour,minute,second ); 689 // 690 // return cal; 691 } 692 693 /** 694 * ??引数の日付け??(YYYYMMDD)より、差??日付を計算して返します? 695 * 引数は、YYYYMMDD と 差??日数? 696 * 697 * @og.rev 4.1.1.0 (2008/01/30) 新規作? 698 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正します? 699 * 700 * @param baseDate 日付け??(YYYYMMDD) 701 * @param diff 差??日数(過去の日付[+]、?の日付?[-]) 702 * 703 * @return 結果の日?YYYYMMDD) 704 */ 705 public static String getDate( final String baseDate,final int diff ) { 706 return HybsDateUtil.getDatePlus( baseDate,diff ); 707 708 // if ( baseDate == null || ( baseDate.length() != 8 ) ) { 709 // String errMsg = "引数 baseDate は、YYYYMMDD 形式?日付け??のみです?" 710 // + " baseDate=[" + baseDate + "]" ; 711 // throw new HybsSystemException( errMsg ); 712 // } 713 // 714 // Calendar cal = getCalendar( baseDate ); 715 // cal.add( Calendar.DATE,diff ); 716 // String rtn = null; 717 // 718 // int calYear = cal.get( Calendar.YEAR ); 719 // int calMonth = cal.get( Calendar.MONTH ) + 1; 720 // int calDay = cal.get( Calendar.DATE ); 721 // rtn = String.valueOf( calYear ); 722 // if( calMonth < 10 ) { 723 // // rtn = rtn + "0" + String.valueOf( calMonth ); 724 // rtn = rtn + "0" + calMonth; 725 // } 726 // else { 727 // // rtn = rtn + String.valueOf( calMonth ); 728 // rtn = rtn + calMonth; 729 // } 730 // if( calDay < 10 ) { 731 // // rtn = rtn + "0" + String.valueOf( calDay ); 732 // rtn = rtn + "0" + calDay; 733 // } 734 // else { 735 // // rtn = rtn + String.valueOf( calDay ); 736 // rtn = rtn + calDay; 737 // } 738 // return rtn; 739 } 740 741 /** 742 * ?されたクラスロー?使って、識別id に応じ?オブジェクトを作?します? 743 * 作?するには、デフォルトコンストラクターが?です? 744 * initialize パラメータは true 相?それまでに初期化されて???合だけ?期化)です? 745 * 746 * @param cls 作?するクラスのフルネ?? 747 * 748 * @return オブジェク? 749 * @throws RuntimeException 何らか?エラーが発生した?? 750 */ 751 public static Object newInstance( final String cls ) { 752 try { 753 return Class.forName( cls ).newInstance(); 754 } 755 catch( ClassNotFoundException ex1 ) { 756 String errMsg = "クラスが見つかりません。class=[" + cls + "]" + CR 757 + ex1.getMessage() ; 758 throw new RuntimeException( errMsg,ex1 ); 759 } 760 catch( LinkageError ex2 ) { 761 String errMsg = "リンケージが失敗しました。class=[" + cls + "]" + CR 762 + ex2.getMessage(); 763 throw new RuntimeException( errMsg,ex2 ); 764 } 765 catch( InstantiationException ex3 ) { 766 String errMsg = "インスタンスの生?が失敗しました。class=[" + cls + "]" + CR 767 + ex3.getMessage() ; 768 throw new RuntimeException( errMsg,ex3 ); 769 } 770 catch( IllegalAccessException ex4 ) { 771 String errMsg = "クラスまた?初期化子にアクセスできません。class=[" + cls + "]" + CR 772 + ex4.getMessage(); 773 throw new RuntimeException( errMsg,ex4 ); 774 } 775 catch( RuntimeException ex5 ) { // 3.6.0.0 (2004/09/17) 776 String errMsg = "予期せぬエラー class=[" + cls + "]" + CR 777 + ex5.getMessage() ; 778 throw new RuntimeException( errMsg,ex5 ); 779 } 780 } 781 }