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 java.io.File; // 5.7.3.2 (2014/02/28) Tomcat8 対å¿? 019 import java.io.PrintWriter; 020 import java.io.IOException; 021 import java.io.UnsupportedEncodingException; 022 import java.lang.reflect.Field; 023 import java.lang.reflect.Modifier; 024 import java.net.MalformedURLException; 025 import java.net.URL; 026 import java.sql.Connection; 027 import java.sql.PreparedStatement; 028 import java.sql.ResultSet; 029 import java.sql.SQLException; 030 import java.util.ArrayList; 031 import java.util.Date; 032 import java.util.Enumeration; 033 import java.util.HashMap; 034 import java.util.LinkedHashMap; 035 import java.util.TreeMap; 036 import java.util.List; 037 import java.util.Locale; 038 import java.util.Map; 039 import java.util.Set; 040 041 import javax.servlet.ServletContext; 042 043 import org.opengion.fukurou.db.ConnectionFactory; 044 import org.opengion.fukurou.util.Closer; 045 import org.opengion.fukurou.util.FindClassFiles; 046 import org.opengion.fukurou.util.LogWriter; 047 import org.opengion.fukurou.util.StringUtil; 048 049 /** 050 * ãƒã‚°ã‚¤ãƒ³ã—ãŸã‚µãƒ¼ãƒ–レãƒ?ƒˆã‚³ãƒ³ãƒ?‚ストã«å¯¾å¿œã—ãŸã‚·ã‚¹ãƒ?ƒ パラメータãƒ??ã‚¿ã‚’å–å¾—ã™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã™ã? 051 * 052 * シスãƒ?ƒ パラメータãƒ??ã‚¿(GE12)ã¯ã€ãƒ‘ラメータ(PARAM_ID)ã«å¯¾ã—ã¦ã€å„種è¨å®šå?(PARAM)ã‚? 053 * æŒã£ã¦ã?¾ã™ã? 054 * 従æ¥ã¯ã€resource.シスãƒ?ƒ パラメータ ã®ä¸?ˆ¬è¨å®šç”¨ã® シスãƒ?ƒ パラメータ ファイル㨠055 * エンジンå†?ƒ¨ã§æŒã£ã¦ã?‚‹ org/hsgw/hayabusa/resource/properties ã® 056 * シスãƒ?ƒ パラメータ ファイルã«ã‚ˆã‚Šç¶æŒã•れã¦ã?¾ã—ãŸãŒã?シスãƒ?ƒ パラメータ 057 * 定義ãƒ??ブル(GE12)ã¨ã€commom/SystemData.java クラスã«ã‚ˆã‚‹ç®¡ç?«å¤‰æ›´ã•れã¾ã—ãŸã€? 058 * 059 * シスãƒ?ƒ パラメータã¯ã€?¼¤?¢ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’決定ã™ã‚‹ãŸã‚ã?åˆæœŸè¨å®šå?を定義ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã? 060 * ã“れã¯ã€ã?アプリケーション・ãƒ?‚£ã‚¹ã‚¯ãƒªãƒ—ã‚¿(WEB-INF/web.xml)ã«ã€context-param ã¨ã—ã¦ã€? 061 * ã‚ーã¨å€¤ã®ã‚»ãƒ?ƒˆã§ã€å?æœŸã‚¢ã‚¯ã‚»ã‚¹ç”¨ã®æƒ??を渡ã—ã¾ã™ã? 062 * シスãƒ?ƒ パラメータ定義ãƒ??ブル(GE12)ã«ã¯ã€SYSTEM_IDã¨ã—ã¦ã€??常ã®ã‚·ã‚¹ãƒ?ƒ IDã¨ã€? 063 * エンジンパラメータãŒã‚りã¾ã™ã?エンジンパラメータã¯ã€SYSTEM_ID='**'ã¨ã—ã¦ã€ç™»éŒ² 064 * ã•れã¦ã?¾ã™ã? 065 * 066 * <table border="1" frame="box" rules="all" > 067 * <caption>シスãƒ?ƒ パラメータã®èª¬æ˜?/caption> 068 * <tr><th>種é¡? </th><th>SYSTEM_ID</th><th>作æ?区åˆ?/th><th>説æ˜?/th></tr> 069 * <tr><td>エンジン共é€?/td><td>** </td><td>0:?´?ï½¼?žï¾?/td><td>エンジン共通ã§å®šç¾©ã—ã¦ã?‚‹ãƒ‘ラメータ </td></tr> 070 * <tr><td>エンジン個別</td><td>個別 </td><td>0:?´?ï½¼?žï¾?/td><td>シスãƒ?ƒ 毎ã«ã‚¨ãƒ³ã‚¸ãƒ³ãŒç™»éŒ²ã—ã¦ã?‚‹ãƒ‘ラメータ </td></tr> 071 * <tr><td>シスãƒ?ƒ å…±é€?/td><td>** </td><td>1:?¼?½??¾?</td><td>シスãƒ?ƒ 毎ã«ã‚¨ãƒ³ã‚¸ãƒ³ãŒç™»éŒ²ã—ã¦ã?‚‹ãƒ‘ラメータ </td></tr> 072 * <tr><td>シスãƒ?ƒ 個別</td><td>個別 </td><td>1:?¼?½??¾?</td><td>シスãƒ?ƒ 毎ã«å??ãŒç‹¬è‡ªã«ç™»éŒ²ã—ã¦ã?‚‹ãƒ‘ラメータ </td></tr> 073 * </table> 074 * 075 * <table border="1" frame="box" rules="all" > 076 * <caption>?±?Œï¾Ÿï¾˜ï½¹?°?¼?®?ï½¥??¾žï½¨?½?¸?˜ï¾Œï¾Ÿï¾?WEB-INF/web.xml)è¨å®šæƒ…å ±</caption> 077 * <tr><th>パラメータ </th><th>è¨å®šå?ä¾? </th><th>解説 </th></tr> 078 * <tr><td>SYSTEM_ID </td><td>GE </td><td>ã“ã??±?Œï¾Ÿï¾˜ï½¹?°?¼?®?ã??¼?½??¾‘ID </td></tr> 079 * <tr><td>TOMCAT_PORT</td><td>8823 </td><td>Tomcat起動時?Žï¾Ÿï½°??•ªå· </td></tr> 080 * <tr><td>LOG_FILE </td><td>log/log_$(yyyyMMdd).txt</td><td>JSP?±?¸?¾?½?›ï½¸?žå?力å? </td></tr> 081 * </table> 082 * 083 * ※ 5.6.7.0 (2013/07/27) 084 * InitFileLoader ã«ã‚ˆã‚Šã€ç‰¹å®šã?クラスパスå†?? æ‹¡å¼µXDK å½¢å¼ã? xml ファイル ã‚’å?ç?—ã¾ã™ã? 085 * クラスパスãŒã?"/resource" 以下ã?ã™ã¹ã¦ã® xml ファイルã¯ã€DBIDã?RESOURCE ã®æŽ¥ç¶šå?ã«å¯¾ã—ã¦å‡¦ç?•れã¾ã™ã? 086 * クラスパスãŒã?"/xml" 以下ã?ã™ã¹ã¦ã® xml ファイルã¯ã€DBIDã?DEFAULT ã®æŽ¥ç¶šå?ã«å¯¾ã—ã¦å‡¦ç?•れã¾ã™ã? 087 * å?‚¯ãƒ©ã‚¹ãƒ‘ス以下ã?ファイルã¯ã€å®Ÿãƒ•ォルãƒ?§ã‚‚ã?jarå½¢å¼ã«åœ§ç¸®ã•れãŸå½¢å¼ã§ã‚‚å?ç?•れã¾ã™ã? 088 * 089 * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦ä½œæ? 090 * @og.rev 4.0.0.0 (2007/10/26) loadDBResourceã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’Factoryã‹ã‚‰å–るよã†ã«å¤‰æ›´ 091 * @og.group åˆæœŸåŒ? 092 * 093 * @version 4.0 094 * @author Kazuhiko Hasegawa 095 * @since JDK5.0, 096 */ 097 public final class SystemParameter { 098 099 /** 100 * ãƒ?ƒ•ォルトコンストラクターをprivateã«ã—ã¦ã€? 101 * オブジェクトã?生æ?ã‚’ã•ã›ãªã?‚ˆã?«ã™ã‚‹ã€? 102 * 103 */ 104 private SystemParameter() {} 105 106 /** plugin クラスã®å–得用クラスパスæŒ?®?{@value} */ 107 public static final String PLUGIN = "org/opengion/plugin"; 108 109 /** シスãƒ?ƒ å…±é€?個別パラメータ(SYSTEM_ID in ('**',?) KBSAKU != '0')ã®ä¸?‹¬èªè¾¼ã®ã‚¯ã‚¨ãƒªãƒ¼ {@value} */ 110 // public static final String QUERY = "SELECT PARAM_ID,PARAM,FGCRYPT" 111 // + " FROM GE12 WHERE SYSTEM_ID IN (?,'**')" 112 // + " AND ( CONTXT_PATH IS NULL OR CONTXT_PATH = ?)" 113 // + " AND FGJ='1' AND KBSAKU != '0'" 114 // + " ORDER BY SYSTEM_ID,CONTXT_PATH DESC,KBSAKU,SEQNO" ; 115 // 4.0.0.0 (2007/10/05) CONTXT_PATH ã«ã€DEFAULT '**' NOT NULL 制ç´?‚’付ã‘ã‚‹ã? 116 /** シスãƒ?ƒ å…±é€?個別パラメータ(SYSTEM_ID in ('**',?) and KBSAKU > '0')ã®ä¸?‹¬èªè¾¼ã®ã‚¯ã‚¨ãƒªãƒ¼ {@value} */ 117 public static final String QUERY = "SELECT PARAM_ID,PARAM,FGCRYPT" 118 + " FROM GE12 WHERE SYSTEM_ID IN (?,'**')" 119 + " AND CONTXT_PATH IN (?,'**')" 120 + " AND FGJ='1' AND KBSAKU > '0'" 121 + " ORDER BY SYSTEM_ID,CONTXT_PATH,FGJ,KBSAKU,SEQNO" ; 122 123 /** シスãƒ?ƒ å…±é€?個別パラメータ(SYSTEM_ID in ('**',?) and KBSAKU > '0')ã®ä¸?‹¬ç™»éŒ²ã®ã‚¯ã‚¨ãƒªãƒ¼ {@value} */ 124 public static final String INS_SYS = "INSERT INTO GE12" 125 + " ( SYSTEM_ID,CONTXT_PATH,PARAM_ID,SEQNO,PARAM,TITLE,CONTENTS,PARAM_LVL,FGJ,KBSAKU )" 126 + " SELECT" 127 + " ?,?,?,?,?,TITLE,CONTENTS,PARAM_LVL,'1','0'" 128 + " FROM GE12 WHERE SYSTEM_ID='**' AND FGJ='1' AND KBSAKU='0' AND PARAM_ID=?" ; 129 130 /** エンジン個別(SYSTEM_ID='個別' KBSAKU='0' CONTXT_PATH='自身')パラメータã®ä¸?‹¬å‰Šé™¤ã®ã‚¯ã‚¨ãƒªãƒ¼ {@value} */ 131 public static final String DEL_SYS = "DELETE FROM GE12 WHERE SYSTEM_ID=? AND KBSAKU='0' AND CONTXT_PATH=?"; 132 133 /** シスãƒ?ƒ パラメータ構築ä¸ã®ã‚¨ãƒ©ãƒ¼ã‚’ã‚»ãƒ?ƒˆã—ã¦ã?ã¾ã™ã? */ 134 private static final List<String> errMsgList = new ArrayList<String>(); 135 136 /** 137 * コンãƒ?‚スト毎㫠シスãƒ?ƒ パラメータオブジェクトを作æ?ã—ã¾ã™ã? 138 * ã“ã?クラスã®ã‚¹ã‚¿ãƒ¼ãƒˆã?イントメソãƒ?ƒ‰ã«ãªã‚Šã¾ã™ã? 139 * 140 * @og.rev 4.1.0.1 (2008/01/23) ãƒã‚°å‡ºåŠ›å?ã®å¤‰æ›´(å…¨ã¦LogWriter経由ã§å‡ºåŠ? 141 * @og.rev 5.5.4.4 (2012/07/20) LogWriter.log 追åŠ? 142 * @og.rev 5.5.4.4 (2012/07/20) SQLException ã¯ã€catch ã—ã¦ã?‚‹ã®ã§ã€loadDBResource ã‹ã‚‰ã¯ã€throws ã•れãªã?? 143 * @og.rev 5.7.2.0 (2014/01/10) Throwable ã®æƒ??ã‚’ã‚‚ã?°‘ã—詳細ã«å‡ºã—ã¾ã™ã? 144 * 145 * @param context Servletコンãƒ?‚スãƒ? 146 * 147 * @return シスãƒ?ƒ パラメータã®ãƒžãƒƒãƒ? 148 */ 149 public static Map<String,String> makeSystemParameter( final ServletContext context ) { 150 // 4.1.0.1 (2008/01/23) ãƒã‚°å‡ºåŠ›ã?å…¨ã¦LogWriterã§è¡Œã†ãŸã‚ã€å»?¢ 151 // try { 152 // String file = context.getInitParameter( "LOG_FILE" ); 153 // if( file != null ) { 154 // // 日付フォーãƒ??ファイルåを変æ›ã—ã¾ã™ã? 155 // DateSet dateSet = new DateSet(); 156 // file = dateSet.changeString( file ); 157 // // 4.1.0.0 (2008/01/12) 絶対パスã§ãªã??åˆã?連çµ? 158 // if( ! new File( file ).isAbsolute() ) { 159 // String path = context.getRealPath( "/" ); 160 // file = path + file; 161 // } 162 // 163 // // append モードã§è‡ªå‹•フラãƒ?‚·ãƒ¥ON 164 // System.setErr( new PrintStream( new FileOutputStream( file,true ),true ) ); 165 // } 166 // } 167 // catch( FileNotFoundException ex ) { 168 // LogWriter.log( "web.xml InitParameter \"LOG_FILE\" is abusion." ); 169 // LogWriter.log( ex.getMessage() ); 170 // } 171 172 errMsgList.clear() ; // 呼ã³å‡ºã—é?度ã€ã‚¨ãƒ©ãƒ¼ãƒªã‚¹ãƒˆã‚’クリアã—ã¾ã™ã? 173 174 Map<String,String> engParam = null; 175 Map<String,String> sysParam = null; 176 try { 177 String contextName = getContextName( context ); 178 179 System.out.println( "Context Initialized [" + contextName + "] " + new Date() ); 180 System.out.print( " Version [" + BuildNumber.VERSION_NO + " " ); 181 System.out.print( BuildNumber.BUILD_TYPE ); 182 System.out.println( "]" ); 183 184 // シスãƒ?ƒ ãƒ??タクラスよりã€ã‚¨ãƒ³ã‚¸ãƒ³ãƒ‘ラメータæƒ??ã‚’å?期è¨å®šã—ã¾ã™ã? 185 // エンジンパラメータã¯ã€SystemData クラス㮠public static メンãƒã?ã§ã™ã? 186 engParam = loadParameter( SystemData.class ); 187 188 // コンãƒ?‚ストよりå–å¾—ã§ãるシスãƒ?ƒ パラメータæƒ??ã‚’å–å¾—ã—ã¾ã™ã? 189 // web.xml ã§è¨å®šã—ãŸãƒ‘ラメータをå–å¾—ã—ã¾ã™ã? 190 // SYSTEM_ID,DB_DRIVER,DB_URL ãªã©ã¯ã€loadDBResource ã§ä½¿ç”¨ã—ã¾ã™ã? 191 sysParam = loadInitialParameter( context,contextName ); 192 193 // シスãƒ?ƒ 個別ã«è¨å®šã•れるã€ã‚¨ãƒ³ã‚¸ãƒ³èµ·å‹•時æƒ??ã‚’å?期è¨å®šã—ã¾ã™ã? 194 // エンジン起動時æƒ??ã¯ã€BuildNumber クラス㮠public static メンãƒã?ã§ã™ã? 195 sysParam.putAll( loadParameter( BuildNumber.class ) ); 196 sysParam.putAll( loadParameter( PLUGIN ) ); 197 198 // GE12 ãƒ??タベã?スよりèªã¿å–りã¾ã™ã? 199 // 引数ã®Mapã«èªã¿è¾¼ã‚“ã 値を追åŠ?—ã?Map ã‚’è¿”ã—ã¾ã™ã? 200 // ã¤ã¾ã‚Šã?シスãƒ?ƒ パラメータæƒ??ã®ä¸Šæ›¸ãを行ã„ã¾ã™ã? 201 // 5.5.4.4 (2012/07/20) SQLException ã¯ã€catch ã—ã¦ã?‚‹ã®ã§ã€loadDBResource ã‹ã‚‰ã¯ã€throws ã•れãªã?? 202 // try { 203 sysParam = loadDBResource( sysParam ); 204 // } 205 // catch( SQLException ex ) { 206 // String errMsg = "DB終äº?close)処ç?‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€? + HybsSystem.CR 207 // + ex.getMessage() + ":" + ex.getSQLState() ; 208 // LogWriter.log( ex ); // 5.5.4.4 (2012/07/20) LogWriter.log 追åŠ? 209 // errMsgList.add( errMsg ); 210 // } 211 } 212 catch( Throwable th ) { // 3.6.1.0 (2005/01/05) 213 LogWriter.log( th ); // 5.5.4.4 (2012/07/20) LogWriter.log 追åŠ? 214 // 5.7.2.0 (2014/01/10) Throwable ã®æƒ??ã‚’ã‚‚ã?°‘ã—詳細ã«å‡ºã—ã¾ã™ã? 215 // errMsgList.add( th.getMessage() ); 216 String errMsg = "処ç?‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€? + HybsSystem.CR 217 + th.getMessage() + HybsSystem.CR 218 + StringUtil.ogStackTrace( th ) ; 219 errMsgList.add( errMsg ); 220 } 221 finally { 222 // åˆæœŸå€¤ã®ã‚¨ãƒ³ã‚¸ãƒ³ãƒ‘ラメータã«å€‹åˆ¥ã®ã‚·ã‚¹ãƒ?ƒ パラメータを追åŠ?¨å®šã—ã¾ã™ã? 223 // ã¤ã¾ã‚Šã?エンジンパラメータæƒ??ã«ä¸Šæ›¸ãを行ã„ã¾ã™ã? 224 if( engParam != null ) { 225 engParam.putAll( sysParam ); 226 } 227 else { 228 engParam = new HashMap<String,String>(); 229 } 230 231 int errCnt = errMsgList.size(); 232 if( errCnt > 0 ) { 233 StringBuilder buf = new StringBuilder(); 234 buf.append( "ã€ã‚·ã‚¹ãƒ?ƒ パラメータã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã?" ); 235 buf.append( HybsSystem.CR ); 236 buf.append( "Tomcat ã®è¨å®šçжæ³ã‚’ã”確èªãã?•ã??" ); 237 buf.append( HybsSystem.CR ); 238 buf.append( "========================================" ); 239 buf.append( HybsSystem.CR ); 240 241 for( int i=0; i<errCnt; i++ ) { 242 buf.append( errMsgList.get(i) ); 243 buf.append( HybsSystem.CR ); 244 buf.append( "----------------------------------------" ); 245 buf.append( HybsSystem.CR ); 246 } 247 System.out.println( buf ); 248 engParam.put( HybsSystem.LOCAL_CONTX_ERR_KEY,buf.toString() ); 249 } 250 } 251 return engParam ; 252 } 253 254 /** 255 * コンãƒ?‚ストよりã?アプリケーションè¨å®šæƒ…å ±ã‚’å–å¾—ã—ã¾ã™ã? 256 * åˆæœŸå€¤ã¯ã€ã‚¢ãƒ—リケーション・ãƒ?‚£ã‚¹ã‚¯ãƒªãƒ—ã‚¿(WEB-INF/web.xml)ã« 257 * context-param ã¨ã—ã¦ã€ã‚ーã¨å€¤ã®ã‚»ãƒ?ƒˆã§ã€å?æœŸã‚¢ã‚¯ã‚»ã‚¹ç”¨ã®æƒ??を渡ã—ã¾ã™ã? 258 * ãƒ??タベã?スã¸ã®æŽ¥ç¶šã?ã€WEB-INF ã® DBConfig.xml ã§è¨å®šã•ã‚ŒãŸæƒ??を使用ã—ã¾ã™ã? 259 * 260 * ã“ã“ã§ã¯ã€å„コンãƒ?‚スト毎ã?å†?ƒ¨æƒ??ã‚’å–å¾—ã—ã¾ã™ã?ãã?ä¸ã«ã¯ã€? 261 * BuildNumber クラスã§å®šç¾©ã•れã¦ã?‚‹å?¨®ãƒ•ィールド属æ?ã‚‚å«ã¾ã‚Œã¾ã™ã? 262 * 263 * REAL_PATH : アドレス(/)ã«å¯¾ã™ã‚‹ã€å®Ÿãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ‘ス 264 * CONTEXT_NAME : アクセス先ã?仮想フォルãƒ?(URLã®ã‚³ãƒ³ãƒ?‚ストå) 265 * JSP : アクセス先ã?JSPフォルãƒ?(/URLã®ã‚³ãƒ³ãƒ?‚ストå/jsp) 266 * SYSTEM_ID : web.xml ã§æŒ?®šã™ã‚‹ã?SYSTEM_ID ã®è¨å®šå? 267 * TOMCAT_PORT : web.xml ã§æŒ?®šã™ã‚‹ã?Tomcat起動時ãƒã?ト番å·(8823) 268 * LOG_FILE : web.xml ã§æŒ?®šã™ã‚‹ã?JSPアクセスãƒã‚°å‡ºåŠ›å?(log/log_$(yyyyMMdd).txt) 269 * SERVER_INFO : サーãƒã?æƒ?? [例ï¼?HN50G5 ( 200.1.50.165 ) ] 270 * SERVLET_INFO : サーブレãƒ?ƒˆæƒ?? [例ï¼?Apache Tomcat/5.5.9 ] 271 * TOMCAT_WORK : Tomcatワークã®ä½ç½® [例ï¼?H:\java\tomcat5.5.17\work\Catalina\localhost\ver4 ] 272 * TOMCAT_HOME : Tomcatç’°å¢??ä½ç½® [例ï¼?H:\java\tomcat5.5.17 ] 273 * JAVA_HOME : Java実行環å¢??ä½ç½® [例ï¼?H:\java\jdk150\jre ] 274 * ENGINE_INFO : ãƒã?ã‚¸ãƒ§ãƒ³ç•ªå· [例ï¼?4.3.6.6 ] 275 * 276 * RESOURCE_DBID : "RESOURCE" 固定å?ã‚’è¨å®šã?WEB-INF/web.xml ã§æŒ?®šã—ã¦ã‚‚無効ã§ã™ã? 277 * 278 * @og.rev 4.1.0.0 (2007/12/27) web.xmlã‹ã‚‰TOMCAT_PORTã‚’èªã‚??ç?‚’追åŠ? 279 * @og.rev 4.2.0.0 (2008/02/18) TOMCAT_PORTã‚’ç’°å¢?¤‰æ•°ã‹ã‚‰å–å¾—ã™ã‚‹ã‚ˆã?¤‰æ›´ 280 * @og.rev 4.2.0.0 (2008/02/20) web.xmlã§SYSTEM_IDãŒç©ºç™½ã®å ´åˆã«å¤§æ–?—コンãƒ?‚ストåãŒè¨å®šã•れるよã†å¤‰æ›´ 281 * @og.rev 4.3.6.6 (2009/05/15) コンãƒ?‚ストå˜ä½ã«ã‚¨ãƒ³ã‚¸ãƒ³ãƒã?ジョンæƒ??ã‚’æŒã¤(ãƒã?ジョンアãƒ??判定用) 282 * @og.rev 5.6.7.1 (2013/08/09) RESOURCE_DBID ã®å€¤ã«ã€?RESOURCE" ã‚’è¨å®šã—ã¦ãŠãã¾ã™ã? 283 * @og.rev 5.6.7.3 (2013/08/23) TOMCAT_HOME を追åŠ? 284 * @og.rev 5.7.3.2 (2014/02/28) Tomcat8 対応ã?getRealPath( "/" ) ã®äº’æ›æ€§ã®ãŸã‚ã®ä¿®æ£ã€? 285 * 286 * @param context Servletコンãƒ?‚スãƒ? 287 * @param contextName コンãƒ?‚ストå 288 * 289 * @return シスãƒ?ƒ パラメータã®ãƒžãƒƒãƒ? 290 */ 291 private static Map<String,String> loadInitialParameter( final ServletContext context,final String contextName ) { 292 Map<String,String> map = new LinkedHashMap<String,String>(); 293 294 // コンãƒ?‚ストã?åˆæœŸåŒ–パラメータ他ã?æƒ??を登録ã—ã¦ãŠãã¾ã™ã? 295 Enumeration<?> enume = context.getInitParameterNames() ; // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿? 296 while( enume.hasMoreElements() ) { 297 String key = (String)enume.nextElement(); 298 String val = context.getInitParameter( key ); 299 if( val != null && val.length() == 0 ) { val = null; } 300 map.put( key,val ); 301 } 302 303 // SYSTEM_IDãŒnullã®å ´åˆã?大æ–?—ã?コンãƒ?‚ストåã‚’è¨å®? 304 if( map.get( "SYSTEM_ID" ) == null ){ // 4.2.0.0 (2008/02/20) 305 map.put( "SYSTEM_ID", contextName.toUpperCase( Locale.JAPAN ) ); 306 } 307 308 // å?¨®ã‚·ã‚¹ãƒ?ƒ æƒ??を登録ã—ã¦ãŠãã¾ã™ã? 309 // map.put( "REAL_PATH" ,context.getRealPath( "/" ) ); 310 map.put( "REAL_PATH" ,context.getRealPath( "" ) + File.separator ); // 5.7.3.2 (2014/02/28) Tomcat8 対å¿? 311 map.put( "CONTEXT_NAME" ,contextName ); 312 map.put( "JSP" ,"/" + contextName + "/jsp" ); 313 map.put( "SERVLET_INFO" ,context.getServerInfo() ); 314 map.put( "TOMCAT_WORK" ,String.valueOf( context.getAttribute( "javax.servlet.context.tempdir" ) ) ); 315 map.put( "TOMCAT_HOME" ,System.getProperty( "catalina.home" ) ); // 5.6.7.3 (2013/08/23) 316 map.put( "JAVA_HOME" ,System.getProperty( "java.home" ) ); 317 318 map.put( "HOST_NAME" ,HybsSystem.HOST_NAME ); 319 map.put( "HOST_ADRS" ,HybsSystem.HOST_ADRS ); 320 map.put( "SERVER_INFO" ,HybsSystem.HOST_NAME + " ( " + HybsSystem.HOST_ADRS + " )" ); 321 map.put( "ENGINE_INFO" ,BuildNumber.ENGINE_INFO ); 322 String TOMCAT_PORT = System.getenv( "CONNECTOR_PORT" ); // 4.2.0.0 (2008/02/18) ãƒã?ト番å·ã‚’ç’°å¢?¤‰æ•°ã‹ã‚‰å–å¾—ã«å¤‰æ›´ 323 if( TOMCAT_PORT == null || TOMCAT_PORT.length() == 0 ) { // äº’æ›æ€§ã®ãŸã‚web.xmlã‹ã‚‰ã®å–得を残㙠324 TOMCAT_PORT = map.get( "TOMCAT_PORT" ); // 4.1.0.0 (2007/12/27) 325 } 326 327 String HOST_URL; 328 if( TOMCAT_PORT == null || TOMCAT_PORT.length() == 0 ) { // 両è€?¨ã‚‚å?ãŒå–å¾—ã§ããªã??åˆã?** 329 HOST_URL = "**"; 330 } 331 else { 332 HOST_URL = HybsSystem.HOST_NAME + ":" + TOMCAT_PORT + "/" + contextName + "/"; 333 } 334 map.put( "HOST_URL", HOST_URL ); 335 336 // 5.6.7.1 (2013/08/09) RESOURCE_DBID ã®å€¤ã«ã€?RESOURCE" ã‚’è¨å®šã—ã¦ãŠãã¾ã™ã? 337 map.put( "RESOURCE_DBID", "RESOURCE" ); 338 339 System.out.println( " Load Initial Parameter [" + map.size() + "] finished." ); 340 return map ; 341 } 342 343 /** 344 * アプリケーション個別ã«è¨å®šã—ã¦ã?‚‹ãƒªã‚½ãƒ¼ã‚¹?¤?¢(GE12)ã‚’å–å¾—ã—ã¾ã™ã? 345 * 346 * ãƒ??タベã?スã¸ã®æŽ¥ç¶šã?ã€WEB-INF ã® DBConfig.xml ã§è¨å®šã•ã‚ŒãŸæƒ??ã‚’å?ã«ã€? 347 * org.opengion.fukurou.db.ConnectionFactory ã§æŽ¥ç¶šå?ã‚’å–å¾—ã—ã¾ã™ã? 348 * ã“ã“ã§ã¯ã€web.xml ã§å®šç¾©ã•れãŸå„アプリケーション個別ã®ãƒ‘ラメ―タをå–å¾—ã—ã¾ã™ã? 349 * SYSTEM_ID(å¿??) ã§ã™ã? 350 * 351 * @og.rev 4.0.0.0 (2007/10/10) 接続å?æƒ??ã®ç®¡ç?¦‹ç›´ã?コンãƒ?‚ストå?期è¨å®? 352 * @og.rev 4.0.0.0 (2007/10/26) コãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ファクトリーã‹ã‚‰å–ã£ã¦ãるよã†ã«å¤‰æ›´ 353 * @og.rev 4.3.6.5 (2009/05/08) dataパスå†??XMLファイルもèªã¿å–るよã†ã«ã™ã‚‹ 354 * @og.rev 4.3.6.6 (2009/05/15) ↑をå»?¢ã€‚è?動インストã?ル対応ã? 355 * @og.rev 5.1.2.0 (2010/01/01) connection.setAutoCommit ã¯ã€ConnectionFactory ã§è¨å®šæ¸ˆã¿ãªã®ã§ã€ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒ? 356 * @og.rev 5.1.9.0 (2010/08/01) 自動インストã?ルã®è¨å®šè¦‹ç›´ã?ç”»é¢ã‹ã‚‰ã®ã‚¤ãƒ³ã‚¹ãƒˆã?ル対å¿? 357 * @og.rev 5.5.4.4 (2012/07/20) SQLException ã¯ã€catch ã—ã¦ã?‚‹ã®ã§ã€ã“ã®ãƒ¡ã‚½ãƒ?ƒ‰ã‹ã‚‰ã¯ã€throws ã•れãªã?? 358 * @og.rev 5.5.4.5 (2012/07/27) åˆæœŸèµ·å‹•時ã®DB接続å?ã¯ã€RESOURCE_DBID ã¨ã™ã‚‹ã€? 359 * @og.rev 5.6.6.1 (2013/07/12) xml パスå†??XMLファイルãŒã‚れã?ã€DB登録ã—ã¾ã™ã? 360 * @og.rev 5.6.7.0 (2013/07/27) InitFileLoader ã§ã€resource以下ã?ã€DBID=RESOURCE xml以下ã?ã€DBID=DEFAULT ã«ç™»éŒ²ã—ã¾ã™ã? 361 * @og.rev 5.6.7.3 (2013/08/23) DBID=RESOURCE æ¼ã‚Œ 362 * @og.rev 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã?‚ˆã?«ã—ã¾ã™ã? 363 * 364 * @param sysParam 入力シスãƒ?ƒ パラメータマッãƒ? 365 * 366 * @return シスãƒ?ƒ パラメータã®ãƒžãƒƒãƒ? 367 */ 368 // private static Map<String,String> loadDBResource( final Map<String,String> sysParam ) throws SQLException { 369 private static Map<String,String> loadDBResource( final Map<String,String> sysParam ) { 370 String SYSTEM_ID = sysParam.get( "SYSTEM_ID" ); 371 String CONTEXT_NAME = sysParam.get( "CONTEXT_NAME" ); // コンãƒ?‚スト別シスãƒ?ƒ リソース 372 String HOST_URL = sysParam.get( "HOST_URL" ); // 4.1.0.0 (2007/12/21) TOMCATã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ç”¨ 373 String RESOURCE_DBID = sysParam.get( "RESOURCE_DBID" ); // 5.5.4.5 (2012/07/27) åˆæœŸèµ·å‹•時ã®DB接続å? 374 375 // å¿??é ?›®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?SYSTEM_IDã¯å¿??ã§ã™ã? 376 // ã“れã¯ã€web.xml ã§å®šç¾©ãŒå¿?¦ã§ã™ã? 377 // 4.0.0.0 (2007/10/23)æŽ¥ç¶šæƒ…å ±XML化ã«ã¤ãDB_URLãƒã‚§ãƒ?‚¯ã‚’削除 378 if( ( SYSTEM_ID == null || SYSTEM_ID.length() == 0 ) ) { 379 String errMsg = "シスãƒ?ƒ パラメータã®å¿??é ?›®(SYSTEM_ID,DB_URL)ã?null ã§ã™ã?" + HybsSystem.CR 380 + "SYSTEM_ID=[" + SYSTEM_ID + "] " + HybsSystem.CR 381 + "Versino=[" + BuildNumber.VERSION_NO + "] " + HybsSystem.CR ; 382 errMsgList.add( errMsg ); 383 return sysParam ; 384 } 385 386 // Connection connection = null; 387 Connection defConn = null; // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 388 Connection rscConn = null; // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 389 PreparedStatement pstmt = null; 390 ResultSet resultSet = null; 391 boolean errFlag = true; 392 try { 393 // 4.0.0.0(2007/10/25)Connectionã‚’ConnectionFactory経由ã§å–å¾—ã™ã‚‹ã‚ˆã?«å¤‰æ›´ã™ã‚‹ã€? 394 // コンãƒ?‚ストåã§æŽ¥ç¶šã—ã«ã?ã€?pplicationInfoã¯ä½¿ã‚ãªã??ã§null 395 ConnectionFactory.init( CONTEXT_NAME, null ); // ConnectionFactoryã®åˆæœŸåŒ? 396 // connection = ConnectionFactory.connection( null, null ); 397 // connection = ConnectionFactory.connection( RESOURCE_DBID, null ); // 5.5.4.5 (2012/07/27) åˆæœŸèµ·å‹•時ã®DB接続å?ã¯ã€RESOURCE_DBID ã¨ã™ã‚‹ã€? 398 // connection.setAutoCommit( false ); // 5.1.2.0 (2010/01/01) 399 400 defConn = ConnectionFactory.connection( null, null ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 401 rscConn = ConnectionFactory.connection( RESOURCE_DBID, null ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 402 403 // 4.3.6.6 (2009/05/15) 404 // 5.1.9.0 (2010/08/01) 自動インストã?ルã®è¨å®šè¦‹ç›´ã?ç”»é¢ã‹ã‚‰ã®ã‚¤ãƒ³ã‚¹ãƒˆã?ル対å¿? 405 // SystemInstaller installer = new SystemInstaller( connection, new PrintWriter( System.out, true ) ); 406 SystemInstaller installer = new SystemInstaller( defConn , rscConn , new PrintWriter( System.out, true ) ); 407 installer.autoInsUpd( SYSTEM_ID, CONTEXT_NAME, HOST_URL ); 408 409 // resource パスå†??XMLファイルãŒã‚れã?ã€å?ã«DB登録ã—ã¾ã™ã?(DBID=RESOURCE) 410 // InitFileLoader loader = new InitFileLoader( connection ); 411 InitFileLoader loader = new InitFileLoader( rscConn ); // ã“ã?コンストラクタã¯/resource フォルãƒ?‚’検索ã—ã¾ã™ã? 412 loader.loadInitFiles( true ) ; 413 414 // 5.6.6.1 (2013/07/12) xml パスå†??XMLファイルãŒã‚れã?ã€DB登録ã—ã¾ã™ã? 415 // loader = new InitFileLoader( connection, "xml" ); 416 loader = new InitFileLoader( defConn, "xml" ); 417 loader.loadInitFiles( true ) ; 418 419 // コンãƒ?‚ストå˜ä½ã?シスãƒ?ƒ パラメータã‚?GE12 ã«è¨å®šã—ã¾ã™ã? 420 // dbXMLResourceInsert ã®å¾Œã«ç™»éŒ²ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã? 421 // dbResourceUpdate( connection,sysParam ); 422 // connection.commit(); 423 dbResourceUpdate( rscConn,sysParam ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 424 rscConn.commit(); 425 426 // DBを検索ã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼è¨å®šãƒªã‚½ãƒ¼ã‚¹æƒ??ã‚’å–å¾—ã—ã¾ã™ã? 427 // pstmt = connection.prepareStatement( QUERY ); 428 pstmt = rscConn.prepareStatement( QUERY ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 429 pstmt.setString( 1,SYSTEM_ID ); 430 pstmt.setString( 2,HOST_URL ); // 4.1.0.0 (2007/12/21) 431 Map<String,String> userMap = new HashMap<String,String>(100); 432 resultSet = pstmt.executeQuery(); 433 434 while( resultSet.next() ) { 435 String key = resultSet.getString(1); 436 String val = resultSet.getString(2); 437 if( val != null && val.length() == 0 ) { val = null; } 438 userMap.put( key,val ); 439 } 440 441 System.out.println( " Load DB Resource [" + userMap.size() + "] finished." ); 442 // リソースをã?ージã—ã¾ã™ã? 443 sysParam.putAll( userMap ); 444 errFlag = false; // エラーã§ãªã? 445 } 446 catch (SQLException ex) { 447 // Closer.rollback( connection ); 448 Closer.rollback( defConn ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 449 Closer.rollback( rscConn ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 450 LogWriter.log( ex ); 451 String errMsg = ex.getMessage() + ":" + ex.getSQLState() ; 452 errMsgList.add( errMsg ); 453 } 454 catch (UnsupportedEncodingException ex) { 455 // Closer.rollback( connection ); 456 Closer.rollback( defConn ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 457 Closer.rollback( rscConn ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 458 LogWriter.log( ex ); 459 String errMsg = "UTF-8 ãŒã‚µãƒã?トã•れã¦ã?ªã?Java VM ã¯ã€æ£è¦VMã§ã¯ã‚りã¾ã›ã‚“ã€? 460 + ex.getMessage(); 461 errMsgList.add( errMsg ); 462 } 463 catch (RuntimeException ex) { 464 // Closer.rollback( connection ); 465 Closer.rollback( defConn ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 466 Closer.rollback( rscConn ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 467 // 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã?‚ˆã?«ã—ã¾ã™ã? 468 // LogWriter.log( ex ); 469 // String errMsg = "処ç?‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€? + HybsSystem.CR 470 // + " SYSTEM_ID = [" + SYSTEM_ID + "]" + HybsSystem.CR 471 // + ex.getMessage() ; 472 // errMsgList.add( errMsg ); 473 throw ex ; 474 } 475 finally { 476 Closer.resultClose( resultSet ); 477 Closer.stmtClose( pstmt ); 478 if( errFlag ) { 479 // ConnectionFactory.remove( connection, null ); 480 ConnectionFactory.remove( defConn, null ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 481 // ConnectionFactory.remove( rscConn, null ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 482 ConnectionFactory.remove( rscConn, RESOURCE_DBID ); // 5.6.7.3 (2013/08/23) DBID=RESOURCE æ¼ã‚Œ 483 } 484 else { 485 // ConnectionFactory.close( connection, null ); 486 ConnectionFactory.close( defConn, null ); // 5.6.7.0 (2013/07/27) DBID=DEFAULT ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 487 // ConnectionFactory.close( rscConn, null ); // 5.6.7.0 (2013/07/27) DBID=RESOURCE ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ 488 ConnectionFactory.close( rscConn, RESOURCE_DBID ); // 5.6.7.3 (2013/08/23) DBID=RESOURCE æ¼ã‚Œ 489 } 490 } 491 492 return sysParam ; 493 } 494 495 /** 496 * エンジンå†?ƒ¨å®šç¾©ã®åˆæœŸãƒªã‚½ãƒ¼ã‚¹æƒ??ã‚’DB(GE12)ã«ç™»éŒ²ã—ã¾ã™ã? 497 * 498 * åˆæœŸãƒªã‚½ãƒ¼ã‚¹æƒ??ã¯ã€KBSAKU='0' ã§ç™»éŒ²ã•れã¦ã?‚‹æƒ??ã§ã€ä¸?—¦ã™ã¹ã¦å‰Šé™¤ 499 * ã—ã¦ã‹ã‚‰ã€å?ã¦ã®ãƒªã‚½ãƒ¼ã‚¹æƒ??を追åŠ?™ã‚‹ã¨ã?†å½¢ã‚’ã¨ã‚Šã¾ã™ã? 500 * ãŸã ã—ã?属æ?æƒ??(åç§°ã‚?¦‚è¦ãªã©)を別途登録ã™ã‚‹å ´åˆã?ã€å?ã¦ã‚? 501 * 削除ã›ãšã«ã€UPDATE ã™ã‚‹æ–¹å‘ã§æ¤œè¨Žã—ãŸã„ã¨æ€ã„ã¾ã™ã? 502 * ãªãŠã?ã“ã?æƒ??ã‚’DB登録ã™ã‚‹ç?”±ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ã®è¨å®šå?を変ãˆãŸã„å ´åˆã«ã€? 503 * ã‚ーãŒåˆ¤ã‚‰ãªã?JavaDOCã‹ã‚‰ã—ã‹èªã¿å–れãªã?ã®ã§ã¯ä¸ä¾¿ãªç‚ºã« 504 * 用æ„ã—ã¦ãŠãã?‘ã§ã€å?部ã§ã¯ SystemData オブジェクトã¨ã—ã¦å®šç¾© 505 * ã•れã¦ã?‚‹å€¤ã‚’使用ã™ã‚‹ãŸã‚ã€ã“ã®ãƒ??タベã?ス値ã¯ã€ä½¿ç”¨ã—ã¦ã?¾ã›ã‚“ã€? 506 * 507 * @param conn 登録用コãƒã‚¯ã‚·ãƒ§ãƒ³(リソース用) 508 * @param map 入力シスãƒ?ƒ パラメータマッãƒ? 509 * @throws SQLException ãƒ??タベã?スアクセスエラー 510 */ 511 private static void dbResourceUpdate( final Connection conn,final Map<String,String> map ) 512 throws SQLException { 513 514 String systemId = map.get( "SYSTEM_ID" ); 515 String HOST_URL = map.get( "HOST_URL" ); // 4.1.0.0 (2007/12/21) 516 517 // æ—¢å˜ã?è¨å®šå?ã‚’å?ä»¶DELETEã—ã¾ã™ã? 518 int delCnt; 519 PreparedStatement pstmt = null; 520 try { 521 pstmt = conn.prepareStatement( DEL_SYS ); 522 pstmt.setString( 1, systemId ); 523 pstmt.setString( 2, HOST_URL ); // 4.1.0.0 (2007/12/21) 524 delCnt = pstmt.executeUpdate(); 525 } 526 finally { 527 Closer.stmtClose( pstmt ); 528 } 529 530 // æ–°è¨å®šå?ã‚’å?ä»¶INSERTã—ã¾ã™ã? 531 Set<String> keyset = map.keySet(); 532 String[] keys = keyset.toArray( new String[keyset.size()] ); 533 534 int insCnt = 0; 535 try { 536 pstmt = conn.prepareStatement( INS_SYS ); 537 for( int i=0; i<keys.length; i++ ) { 538 pstmt.setString( 1,systemId ); 539 pstmt.setString( 2,HOST_URL); 540 pstmt.setString( 3,keys[i] ); 541 pstmt.setInt( 4,( i + 1 ) * 10 ); 542 pstmt.setString( 5,map.get( keys[i] ) ); 543 pstmt.setString( 6,keys[i] ); 544 insCnt += pstmt.executeUpdate(); 545 } 546 } 547 finally { 548 Closer.stmtClose( pstmt ); 549 } 550 551 System.out.print( " DB Context Resource Reconfiguration " ); 552 System.out.println( "DELETE=[" + delCnt + "],INSERT=[" + insCnt + "] finished." ); 553 } 554 555 /** 556 * ServletContext ã®åç§°ã‚’å–å¾—ã—ã¾ã™ã? 557 * 558 * コンãƒ?‚ストã?アクセスã•れãŸãƒ‘ス( /training ãªã© )ã®åç§°ã‚’ã? 559 * å–å¾—ã—ã¾ã™ã?(アクセス先ã?仮想フォルãƒ?) 560 * 以å‰ã?ã€??備記述å?WEB-INF/web.xml)ã® display-name è¦ç´?‚’見ã¦ã€? 561 * ç„¡ã‘れã°ã€å®Ÿãƒ•ォルãƒ?ã‚’è¿”ã—ã¦ã?¾ã—ãŸã€? 562 * 563 * @param context Servletコンãƒ?‚スãƒ? 564 * 565 * @return コンãƒ?‚ストã?コンãƒ?‚ストå 566 */ 567 private static String getContextName( final ServletContext context ) { 568 String name = null; 569 try { 570 String path = context.getResource( "/" ).getFile(); 571 int idx = path.lastIndexOf( '/',path.length()-2 ); 572 name = path.substring( idx+1,path.length()-1 ); 573 } 574 catch( MalformedURLException ex ) { 575 LogWriter.log( ex ); 576 String errMsg = "ã“ã?パスåã?ã€æ£ã—ã„フォーãƒ?§ã¯ã‚りã¾ã›ã‚“ã€?" 577 + ex.getMessage(); 578 errMsgList.add( errMsg ); 579 } 580 return name ; 581 } 582 583 /** 584 * æŒ?®šã?クラス㮠public static ãªãƒ•ィールドã‚ーã¨å€¤ã®ãƒžãƒƒãƒ—を作æ?ã—ã¾ã™ã? 585 * 主ã«ã€ã‚¨ãƒ³ã‚¸ãƒ³é–¢é€£ã®ã‚¯ãƒ©ã‚¹ã«ãƒ‘ラメータファイルをクラスã¨ã—ã¦å®šç¾©ã—ã? 586 * エンジンã¨ã¨ã‚‚ã«é…å¸?—ã¾ã™ã?é…å¸?•れãŸã‚¯ãƒ©ã‚¹ã‚’å?ã«ã€ãƒ‘ラメータã‚? 587 * èªã¿å–りã¾ã™ã? 588 * ã“ã?処ç?? リフレクションを使用ã—ã¦ã‚¯ãƒ©ã‚¹ã® public static フィールドを 589 * å–å¾—ã—ã€LinkedHashMap ã«ã‚ˆã‚Šã€å–å¾—é?ã‚’ã‚ープã—ãŸã¾ã¾ã€Mapã‚’è¿”ã—ã¾ã™ã? 590 * 591 * @og.rev 5.7.2.0 (2014/01/10) errMsgList ã¯ã€ä¸?—¦æ–?—å?ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ?—ã¾ã™ã? 592 * 593 * @param cls クラスオブジェクãƒ? 594 * 595 * @return シスãƒ?ƒ パラメータã®ãƒžãƒƒãƒ? 596 */ 597 private static Map<String,String> loadParameter( final Class<?> cls ) { // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿? 598 Field[] field = cls.getFields(); // public フィールドã?ã¿ 599 Map<String,String> map = new LinkedHashMap<String,String>( (int)(field.length * 1.5) ); // è²?·ä¿‚数より大ãã„ç›®ã«å–ã‚‹ã€? 600 601 try { 602 for( int i=0; i<field.length; i++ ) { 603 if( Modifier.isStatic( field[i].getModifiers() ) ) { 604 map.put( field[i].getName() , (String)field[i].get( null ) ); 605 } 606 } 607 } 608 catch( IllegalAccessException ex ) { 609 LogWriter.log( ex ); 610 // 5.7.2.0 (2014/01/10) errMsgList ã¯ã€ä¸?—¦æ–?—å?ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ?—ã¾ã™ã? 611 // errMsgList.add( ex.getMessage() ); 612 String errMsg = "クラスã‹ã‚‰ã€ãƒ‘ラメータをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€? + HybsSystem.CR 613 + " クラスå?[" + cls.getName() + "]" + HybsSystem.CR 614 + ex.getMessage(); 615 errMsgList.add( errMsg ); 616 } 617 618 System.out.println( " ClassLoad " + cls.getName() + " Parameter [" + map.size() + "] finished." ); 619 return map; 620 } 621 622 /** 623 * æŒ?®šã?ã‚ーワードã?ファイルをクラスパスよりå–å¾—ã—ã€ã‚ーã¨å€¤ã®ãƒžãƒƒãƒ—を作æ?ã—ã¾ã™ã? 624 * 主ã«ã€ã‚¨ãƒ³ã‚¸ãƒ³é–¢é€£ã®ã‚¯ãƒ©ã‚¹ã«ãƒ‘ラメータファイルをPlugInクラスã¨ã—ã¦å®šç¾©ã—ã?é…å¸?—ã¾ã™ã? 625 * ã“ã?処ç??å–å¾—ã«ã€ã‚¯ãƒ©ã‚¹ãƒ‘スã®é ?ºãŒé–¢ä¿‚ã—ã¾ã™ã?æœ??ã«å–å¾—ã•れãŸã‚ーã¯ã€ã‚ã¨ã‹ã‚‰ 626 * èªã¿å–られãŸã‚¯ãƒ©ã‚¹ãƒ‘スã¯ã€å?ã‚»ãƒ?ƒˆã—ã¾ã›ã‚“ã€? 627 * 628 * @og.rev 5.3.6.0 (2011/06/01) 並ã³é ?‚’ã€ã‚ーã®åç§°é ?¨ã™ã‚‹ã€? 629 * @og.rev 5.7.2.0 (2014/01/10) errMsgList ã¯ã€ä¸?—¦æ–?—å?ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ?—ã¾ã™ã? 630 * @og.rev 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã?‚ˆã?«ã—ã¾ã™ã? 631 * 632 * @param keyword クラスオブジェクトを検索ã™ã‚‹å…? 633 * 634 * @return ã‚ーã¨å€¤ã®ãƒžãƒƒãƒ? 635 */ 636 private static Map<String,String> loadParameter( final String keyword ) { 637 // Map<String,String> map = new HashMap<String,String>(); 638 Map<String,String> map = new TreeMap<String,String>(); // 5.3.6.0 (2011/06/01) 並ã³é ?‚’ã€ã‚ーã®åç§°é ?¨ã™ã‚‹ã€? 639 try { 640 ClassLoader loader = Thread.currentThread().getContextClassLoader(); 641 Enumeration<URL> enume = loader.getResources( keyword ); // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿? 642 while( enume != null && enume.hasMoreElements() ) { 643 URL url = enume.nextElement(); // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿? 644 // jar:file:/実ディレクトリ ã¾ãŸã?ã€file:/実ディレクトリ 645 String dir = url.getFile(); 646 // System.out.println( dir ); 647 648 FindClassFiles filenames = new FindClassFiles( dir,keyword ); 649 String[] names = filenames.getFilenames(); 650 for( int i=0; i<names.length; i++ ) { 651 String val = names[i]; 652 String key = val.substring( val.lastIndexOf( '.' )+1 ); 653 if( key.indexOf( '_' ) >= 0 && !map.containsKey( key ) && key.indexOf( '$' ) < 0 ) { 654 map.put( key , val ); 655 } 656 } 657 System.out.println( " FileCheck " + dir + " [" + names.length + "] find." ); 658 } 659 } 660 catch( IOException ex ) { 661 LogWriter.log( ex ); 662 // 5.7.2.0 (2014/01/10) errMsgList ã¯ã€ä¸?—¦æ–?—å?ã«å¤‰æ›ã—ã¦ã‹ã‚‰è¿½åŠ?—ã¾ã™ã? 663 // errMsgList.add( ex.getMessage() ); 664 String errMsg = "ã‚ーワードã‹ã‚‰ã?パラメータをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€? + HybsSystem.CR 665 + " ã‚ーワードå=[" + keyword + "]" + HybsSystem.CR 666 + ex.getMessage(); 667 errMsgList.add( errMsg ); 668 } 669 // 5.7.2.0 (2014/01/10) RuntimeException ã¯ã€catch ã—ãªã?‚ˆã?«ã—ã¾ã™ã? 670 // catch( RuntimeException ex ) { 671 // LogWriter.log( ex ); 672 // errMsgList.add( ex.getMessage() ); 673 // } 674 System.out.println( " FileLoad " + keyword + " Parameter [" + map.size() + "] finished." ); 675 return map; 676 } 677 }