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