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 }