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.resource; 017 018 import java.util.Arrays; 019 import java.util.Collections; 020 import java.util.HashMap; 021 import java.util.HashSet; 022 import java.util.LinkedHashMap; 023 import java.util.Map; 024 import java.util.Set; 025 026 import org.opengion.fukurou.util.ErrMsg; 027 import org.opengion.fukurou.util.StringUtil; 028 import org.opengion.hayabusa.common.HybsSystem; 029 import org.opengion.hayabusa.db.DBColumn; 030 import org.opengion.hayabusa.db.DBColumnConfig; 031 032 /** 033 * java.util.ResourceBundle クラスをè¤?•°ç®¡ç?™ã‚‹ãƒªã‚½ãƒ¼ã‚¹ã‚¯ãƒ©ã‚¹ã§ã™ã? 034 * 035 * ResourceManager ã¯ã€? 036 * LabelResource.properties ラベルリソース(ãƒ??ブル定義ã‚?‚«ãƒ©ãƒ?ãªã©ã®ç”»é¢ã«è¡¨ç¤ºã™ã‚‹ãƒªã‚½ãƒ¼ã‚¹) 037 * CodeResource.properties コードリソース(é¸æŠžãƒ‡ãƒ¼ã‚¿ãªã©ãƒ—ルãƒ?‚¦ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§é¸æŠžã™ã‚‹ãƒªã‚½ãƒ¼ã‚¹) 038 * MessageResource.properties メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹(エラーコードやメãƒ?‚»ãƒ¼ã‚¸ãªã©ã‚’表示ã™ã‚‹ãƒªã‚½ãƒ¼ã‚¹) 039 * 040 * ã®?“ã¤ã®ãƒ—ãƒãƒ‘ティーファイルをå?éƒ¨ã«æŒã£ã¦ãŠã‚Š,ãれãžã‚Œã®ãƒ¡ã‚½ãƒ?ƒ‰ã«ã‚ˆã‚Š?? 041 * リソースã®è¿”ã™å€¤ã‚’決ã‚ã¦ã?¾ã™ã? 042 * 043 * ResourceManagerã¯,å˜ç‹¬ã§ã‚‚生æˆã§ãã¾ã™ãŒ?Œå„ユーザー毎ã«ä½œæ?ã™ã‚‹ã‚ˆã‚Šã‚? 044 * ResourceFactory#newInstance( lang )メソãƒ?ƒ‰ã‚ˆã‚Šç”Ÿæ?ã—ãŸæ–¹ã?プã?リングã•れるã?ã§ 045 * 効çŽ?š„ã§ã™ã? 046 * 047 * リソース作æ?æ™‚ã«æŒ?®šã™ã‚‹ãƒã‚±ãƒ¼ãƒ«ã¯,ISO è¨?ªžã‚³ãƒ¼ãƒ?ISO-639 ã§å®šç¾©ã•れã‚?2 æ¡ã?å°æ–‡å? 048 * <a href ="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt"> 049 * http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</a>を使用ã—ã¦ä¸‹ã•ã?? 050 * ãŸã ã—,å?部çš?« Locale を構築ã—ã¦ã?¾ã™ãŒ,ãã?æ£ã—ã•ã¯,ãƒã‚§ãƒ?‚¯ã•れã¦ã?¾ã›ã‚“ã®ã§, 051 * æŒ?®šã™ã‚‹ãƒã‚±ãƒ¼ãƒ«ã«å¿œã˜ã?properties ファイルを用æ„ã—ã¦ãŠã„ã¦ä¸‹ã•ã?? 052 * 053 * 日本語ã?å ´åˆã?, è¨?ªžã‚³ãƒ¼ãƒ‰ã? "jp" ãªã®ã§?? 054 * LabelResource_jp.properties ラベルリソース(日本èª? 055 * CodeResource_jp.properties コードリソース(日本èª? 056 * MessageResource_jp.properties メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹(日本èª? 057 * 058 * を用æ„ã—ã¦ä¸‹ã•ã?? 059 * 060 * CodeResource ã«ã¤ã?¦ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ãƒ•ァイルã‹ã‚‰ CodeSelectionオブジェクトを 061 * 作æ?ã—ã¦åˆ©ç”¨ã—ã¾ã™ã?ã“ã?ã€CodeSelectionオブジェクトã?作æ?方法ã¨ã—ã¦ã€? 062 * ?“é?りè?ãˆã‚‰ã‚Œã¾ã™ã? 063 * ?‘ã¤ç›®ã¯ã€æ¯Žå›ž è¦æ±‚ãŒç™ºç”Ÿã™ã‚‹æ¯Žã« CodeSelection を作æ?ã—ã?プã?ルã—ã¦ã?ã¾ã™ã?ã“ã†ã™ã‚‹ã“ã¨ã§ã€? 064 * åˆã‚ã¦ä½¿ç”¨ã•れãŸã¨ãã ã‘オブジェクト化ã•れã¾ã™ã?ã§ã€ãƒ¡ãƒ¢ãƒªã®ç¯?´?Œå¯èƒ½ã§ã™ã?ãŸã ã—ã? 065 * プã?ルã«ãƒ’ットã—ãªã‹ã£ãŸå?åˆã?ã€ã‚„ã¯ã‚Šãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰æ¤œç´¢ã—ã¾ã™ã?ã§ã€å?ã€?ƒ’ãƒ?ƒˆã—ãªã? 066 * ã‚ーã«å¯¾ã—ã¦ã¯ã€æ¯Žå›žãƒªã‚½ãƒ¼ã‚¹ã‚’検索ã™ã‚‹ãŸã‚ã€?žåйçŽ?§ã™ã? 067 * ?’ã¤ã‚ã?ã€å?ã€?ƒ’ãƒ?ƒˆã—ãªã?‚ーã«å¯¾ã—ã¦ã€NullCodeSelectionオブジェクトを登録ã—ã¦ãŠãã“ã¨ã§ã€? 068 * プã?ルã«ãŸã‚込んã§è¡Œãã¨è¨?†æ–¹æ³•ã§ã™ã?ã“ã?å ´åˆã?ã€ã‚·ãƒ³ã‚°ãƒ«ãƒˆã?ンã«ã—ã¦ãƒ¡ãƒ¢ãƒªã‚’ç¯?´?—ã¾ã™ãŒã€? 069 * ãれã§ã‚‚ã?ール自体ã?容é‡ã?ã€ç¢ºä¿ã—ã¦ãŠãå¿?¦ãŒã‚りã¾ã™ã? 070 * ?“ã¤ã‚ã?ã€ã“ã® ResourceManager ãŒã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•れるã¨ãã«ã€ã™ã¹ã¦ã® CodeSelectionオブジェクトを 071 * ã‚らã‹ã˜ã‚?プã?ルã—ã¦ãŠã方法ã§ã™ã?使ã‚ãªã?CodeSelection もインスタンス化ã™ã‚‹å¤‰ã‚りã«ã€? 072 * ã‚ャãƒ?‚·ãƒ¥ã«ãƒ’ットã—ãªã??åˆã?ã€å³ CodeSelection ãŒå˜åœ¨ã—ãªã?¨åˆ¤æ–ã§ãã‚‹ãŸã‚ã€? 073 * ã‚‚ã£ã¨ã‚‚パフォーマンスãŒé«˜ããªã‚Šã¾ã™ã? 074 * 本 ResourceManager ã®å®Ÿè£??ã€?¼“ã¤ã‚ã?ã€ã‚らã‹ã˜ã‚ã€ã™ã¹ã¦ã‚’ã‚ャãƒ?‚·ãƒ¥ã—ã¦ãŠã方法を 075 * 採用ã—ã¦ã?¾ã™ã? 076 * 077 * @og.group リソース管ç? 078 * 079 * @version 4.0 080 * @author Kazuhiko Hasegawa 081 * @since JDK5.0, 082 */ 083 public final class ResourceManager { 084 // 4.0.0 (2005/01/31) オラクルã¨Windowsã¨ã®é–“ã? "??ã®æ–?—化ã‘対ç? 085 // private static final boolean USE_CHAR_TRANS = HybsSystem.sysBool( "USE_UTF8_CHARACTER_TRANSLATION" ) ; // 4.0.0 (2005/01/31) 086 087 private final ColumnDataLoader columnLoader ; 088 private final CodeDataLoader codeLoader; 089 private final LabelDataLoader labelLoader; 090 // private final MessageDataLoader messageLoader; 4.0.0.0(2007/10/17) 091 private final GUIDataLoader guiLoader; 092 093 private final Map<String,DBColumn> columnPool = Collections.synchronizedMap( new HashMap<String,DBColumn>( HybsSystem.BUFFER_LARGE ) ); 094 // private final String systemId ; 095 private final String lang ; 096 097 // 5.4.3.4 (2012/01/12) ラベルã®ã‚ャãƒ?‚·ãƒ¥(ã‚ャãƒ?‚·ãƒ¥ãƒ©ãƒ™ãƒ«) 098 // private final Map<String,LabelData> labelPool = Collections.synchronizedMap( new HashMap<String,LabelData>( HybsSystem.BUFFER_LARGE ) ); 099 // private final Map<String,String> labelPool = Collections.synchronizedMap( new HashMap<String,String>( HybsSystem.BUFFER_LARGE ) ); 100 101 /** 102 * コンストラクター 103 * シスãƒ?ƒ ?©?¤ã¨è¨?ªžã‚³ãƒ¼ãƒ‰ã‚’æŒ?®šã—ã¦,生æ?ã—ã¾ã™ã? 104 * 105 * @param systemId シスãƒ?ƒ ?©?¤ 106 * @param lg è¨?ªžã‚³ãƒ¼ãƒ? 107 * @param initLoad リソースãƒ??ã‚¿ã®å…ˆèªã¿å¯å¦(true:å…ˆèªã¿ã™ã‚‹) 108 */ 109 // public ResourceManager( final String sysId,final String lg,final boolean initLoad ) { 110 public ResourceManager( final String systemId,final String lg,final boolean initLoad ) { 111 // this.systemId = sysId; 112 this.lang = lg; 113 114 columnLoader = new ColumnDataLoader( systemId,initLoad ); 115 labelLoader = new LabelDataLoader( systemId,lang,initLoad ); 116 // codeLoader = new CodeDataLoader( systemId,lang,initLoad ); 117 codeLoader = new CodeDataLoader( systemId,initLoad,labelLoader ); // 4.0.0.0(2007/10/17) 118 // messageLoader = new MessageDataLoader( systemId,lang,initLoad ); 4.0.0.0(2007/10/17) 119 guiLoader = new GUIDataLoader( systemId ); 120 } 121 122 /** 123 * è¨å®šã•れã¦ã?‚‹è¨?ªžã‚’è¿”ã—ã¾ã™ã? 124 * 125 * @return è¨?ª? 126 */ 127 public String getLang() { 128 return lang; 129 } 130 131 /** 132 * DBColumn オブジェクトをå–å¾—ã—ã¾ã™ã? 133 * 作æ?ã—ãŸDBColumnオブジェクトã??Œå?部ã«ãƒ—ã?ルã—ã¦ãŠã?ŒåŒã˜ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆè¦æ±‚㌠134 * ã‚ã£ãŸã¨ãã??Œã?ールã®ã‚ªãƒ–ジェクトを利用ã—ã¦,DBColumnã‚’è¿”ã—ã¾ã™ã? 135 * 136 * @og.rev 3.4.0.0 (2003/09/01) ラベルカラãƒ??コードカラãƒ??表示パラメータã€ç·¨é›?ƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã€æ–‡å—パラメータã®è¿½åŠ?? 137 * @og.rev 3.5.6.4 (2004/07/16) 追åŠ?ƒ‘ラメータå–ã‚Šè¾¼ã¿æ™‚ã«ã€?_" ã¯ã€null 扱ã?¨ã™ã‚‹ã€? 138 * @og.rev 3.6.0.7 (2004/11/06) DBColumn ã® official属æ?追åŠ? 139 * 140 * @param key カラãƒ?D 141 * 142 * @return DBColumnオブジェクãƒ? 143 */ 144 public DBColumn getDBColumn( final String key ) { 145 DBColumn clm = columnPool.get( key ); 146 if( clm == null ) { 147 ColumnData clmDt = columnLoader.getColumnData( key ); 148 if( clmDt != null ) { 149 String label_clm = clmDt.getLabelColumn(); 150 String code_clm = clmDt.getCodeColumn(); 151 152 clm = new DBColumn( 153 lang, 154 clmDt, 155 labelLoader.getLabelData( label_clm ), 156 codeLoader.getCodeData( code_clm ) ); 157 158 columnPool.put( key,clm ); 159 } 160 } 161 return clm; 162 } 163 164 /** 165 * DBColumn オブジェクトを作æ?ã—ã¾ã™ã? 166 * å†?ƒ¨ã«ãƒ—ã?ルã«å˜åœ¨ã™ã‚Œã°ãれをã?ãªã‘ã‚Œã°æ–°è¦ã«ä½œæ?ã—ã¾ã™ã? 167 * ãれã§ã‚‚å˜åœ¨ã—ãªã??åˆã?ã€DBColumnConfig よりã€ãƒ©ãƒ™ãƒ«ã¨è¨?ªžã‚’æŒ?®šã—㦠168 * æ–°è¦ã«ä½œæ?ã—ã¾ã™ã? 169 * 170 * @param key カラãƒ?D 171 * 172 * @return DBColumnオブジェクãƒ? 173 * @see #getDBColumn( String ) 174 */ 175 public DBColumn makeDBColumn( final String key ) { 176 DBColumn dbColumn = getDBColumn( key ); 177 if( dbColumn == null ) { 178 DBColumnConfig config = new DBColumnConfig( key ); 179 config.setLabelData( getLabelData( key ) ); 180 config.setLang( getLang() ); 181 dbColumn = new DBColumn( config ); 182 } 183 return dbColumn; 184 } 185 186 /** 187 * DBColumn オブジェクトをプã?ルã«ç™»éŒ²ã—ã¾ã™ã? 188 * DBColumn ã‚’å‹•çš?«ä½œæ?ã™ã‚‹æ©Ÿè?ã§ã€ä½œæ?ã—ãŸã‚«ãƒ©ãƒ?‚ªãƒ–ジェクトを 189 * プã?ルã«ç™»éŒ²ã™ã‚‹ã“ã¨ã§ã€??常ã®ãƒªã‚½ãƒ¼ã‚¹ã¨åŒã˜ã‚ˆã†ã«åˆ©ç”¨ã§ãるよã†ã« 190 * ã—ã¾ã™ã? 191 * 192 * @og.rev 5.4.2.2 (2011/12/14) æ–°è¦è¿½åŠ? 193 * 194 * @param key カラãƒ?D 195 * @param dbColumn DBColumnオブジェクãƒ? 196 */ 197 public void setDBColumn( final String key , final DBColumn dbColumn ) { 198 if( key != null && key.length() > 0 && dbColumn != null ) { 199 columnPool.put( key,dbColumn ); 200 } 201 } 202 203 /** 204 * ラベルを独自ã®ãƒ—ã?ル(ã‚ャãƒ?‚·ãƒ¥ãƒ©ãƒ™ãƒ«)ã«ç™»éŒ²ã—ã¾ã™ã? 205 * å–り出ã™ã¨ãã?ã€?getLabel( String , boolean ) メソãƒ?ƒ‰ã® 206 * 第?’引数ã«ã€true ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 207 * 208 * @og.rev 5.4.3.4 (2012/01/12) æ–°è¦è¿½åŠ? 209 * 210 * @param key カラãƒ?D 211 * @param labelData LabelDataオブジェクãƒ? 212 * @see #getLabel( String , boolean ) 213 */ 214 //// public void setLabelData( final String key , final LabelData labelData ) { 215 // public void setLabel( final String key , final String label ) { 216 // if( key != null && !key.isEmpty() && label != null && !label.isEmpty() ) { 217 // labelPool.put( key,label ); 218 // } 219 // } 220 221 /** 222 * ラベルリソースã‹ã‚‰,ラベルを返ã—ã¾ã™ã? 223 * 引数ã®è¨?ªžã‚³ãƒ¼ãƒ‰ã«å¿œã˜ãŸãƒªã‚½ãƒ¼ã‚¹ãŒç™»éŒ²ã•れã¦ã?ªã??åˆã?, 224 * 引数ã®ãƒ©ãƒ™ãƒ«ã‚ーãã?ã¾ã¾è¿”ã—ã¾ã™ã? 225 * 独自プã?ル(ã‚ャãƒ?‚·ãƒ¥ãƒ©ãƒ™ãƒ«)ã‹ã‚‰å–り出ã™ã¨ãã?ã€useLocalPoolã‚? 226 * true ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 227 * ãªãŠã?独自プã?ルã¯ã€ãれã?ã¿ã§ã¯ãªãã?ãã“ã«ãªã‘れã°é€šå¸¸ã® 228 * ラベルリソースを検索ã«è¡Œãã¾ã™ã? 229 * 230 * @og.rev 5.4.3.4 (2012/01/12) æ–°è¦è¿½åŠ? 231 * 232 * @param key ラベルã‚ー 233 * @param useLocalPool true:ã‚ャãƒ?‚·ãƒ¥ãƒ©ãƒ™ãƒ«ã‹ã‚‰ 234 * 235 * @return リソースã«å¿œã˜ãŸãƒ©ãƒ™ãƒ«æ–?—å?(ç„¡ã‘れ㰠ラベルã‚ー) 236 * @see #setLabel( String , String ) 237 */ 238 // public String getLabel( final String key, final boolean useLocalPool ) { 239 // // useLocalPool == true ã®å ´åˆã?ã€ãƒ©ãƒ™ãƒ«ã‚ャãƒ?‚·ãƒ¥ã‚’検索ã—ã¾ã™ã? 240 // // ãã“ã«å˜åœ¨ã—ãªã??åˆã?ã¾ãŸã?ã€useLocalPool == false ã®å ´åˆã?ã€??常ã®ãƒ©ãƒ™ãƒ«ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰å€¤ã‚’è¿”ã—ã¾ã™ã? 241 // if( useLocalPool ) { 242 // String label = labelPool.get( key ); 243 // if( label != null ) { return label; } 244 // } 245 // 246 // return getLabel( key ); 247 // } 248 249 /** 250 * ラベルリソースã‹ã‚‰,ラベルを返ã—ã¾ã™ã? 251 * 引数ã®è¨?ªžã‚³ãƒ¼ãƒ‰ã«å¿œã˜ãŸãƒªã‚½ãƒ¼ã‚¹ãŒç™»éŒ²ã•れã¦ã?ªã??åˆã?, 252 * 引数ã®ãƒ©ãƒ™ãƒ«ã‚ーãã?ã¾ã¾è¿”ã—ã¾ã™ã? 253 * 254 * @og.rev 4.0.0.0 (2005/01/31) オラクルã¨Windowsã¨ã®é–“ã? "??ã®æ–?—化ã‘対ç–䏿¢ 255 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹ã¨ã®çµ±åˆåŒ– 256 * 257 * @param key ラベルã‚ー 258 * 259 * @return リソースã«å¿œã˜ãŸãƒ©ãƒ™ãƒ«æ–?—å?(ç„¡ã‘れ㰠ラベルã‚ー) 260 */ 261 public String getLabel( final String key ) { 262 LabelData lblData = labelLoader.getLabelData( key ); 263 if( lblData != null ) { 264 String rtn = lblData.getLabel(); 265 if( rtn != null ) { 266 return rtn; 267 } 268 } 269 270 // ãªã‘れ㰠key を返㙠271 return key; 272 } 273 274 /** 275 * メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰,ã‚ãƒ¼ã§æŒ?®šã•れãŸãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã«, 276 * å¼•æ•°ã§æŒ?®šã•れãŸå¤‰æ•°å€¤ã‚’ã‚»ãƒ?ƒˆã—ãŸãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã? 277 * 278 * ã“ã?メãƒ?‚»ãƒ¼ã‚¸ã¯,リソースã§é¸ã°ã‚ŒãŸãƒã‚±ãƒ¼ãƒ«æ¯Žã?メãƒ?‚»ãƒ¼ã‚¸ã«?? 279 * MessageFormat#format ã§ãƒ•ォーマットã™ã‚‹äº‹ã«ã‚ˆã‚Š,作æ?ã•れã¾ã™ã? 280 * メãƒ?‚»ãƒ¼ã‚¸ãŒãƒªã‚½ãƒ¼ã‚¹ã«å˜åœ¨ã—ãªã??åˆã?,ã‚ーを返ã—ã¾ã™ã? 281 * 282 * @og.rev 4.0.0.0 (2005/01/31) オラクルã¨Windowsã¨ã®é–“ã? "??ã®æ–?—化ã‘対ç? 283 * @og.rev 4.0.0.0 (2007/10/17) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹çµ±åˆã«ä¼´ã?ƒ©ãƒ™ãƒ«ãƒãƒ¼ãƒ??を使用ã™ã‚‹ 284 * @og.rev 4.0.0.0 (2007/10/18) å称変更 getMessage â‡?getLabel 285 * @og.rev 5.1.1.0 (2009/12/01) #xxxxã®å¤‰æ›ã§ã€ã‚«ãƒ©ãƒ?ãŒè¤?•°æŒ?®šã•れã¦ã?‚‹å ´åˆã?対å¿? 286 * 287 * @param key ã‚ー 288 * @param args メãƒ?‚»ãƒ¼ã‚¸ã®å¼•æ•° 289 * 290 * @return メãƒ?‚»ãƒ¼ã‚¸(ç„¡ã‘れ㰠ã‚ー) 291 */ 292 public String getLabel( final String key,final String[] args ) { 293 // MessageData msgDt = messageLoader.getMessageData( key ); 294 295 final String msglbl ; 296 297 if( args == null ) { 298 msglbl = getLabel( key ); 299 } 300 else { 301 LabelData msgDt = labelLoader.getLabelData( key ); 302 303 // int size = ( args == null ) ? 0 : args.length ; 304 int size = args.length; 305 String[] msgArgs = new String[size]; 306 for( int i=0; i<size; i++ ) { 307 String arg = args[i] ; 308 if( arg != null && arg.startsWith( "#" ) ) { 309 if( arg.indexOf( ',' ) < 0 ) { 310 msgArgs[i] = getLabel( arg.substring( 1 ) ); 311 } 312 // 5.1.1.0 (2009/12/01) #CLM,LANG,KBSAKU ç‰é?ç›®åãŒè¤?•°æŒ?®šã§ãるよã†ã«ã™ã‚‹ 313 else { 314 String[] argArr = StringUtil.csv2Array( arg.substring( 1 ) ); 315 StringBuilder argBuf = new StringBuilder(); 316 for( int j=0; j<argArr.length; j++ ) { 317 if( j > 0 ) { 318 argBuf.append( ',' ); 319 } 320 argBuf.append( getLabel( argArr[j]) ); 321 } 322 msgArgs[i] = getLabel( argBuf.toString() ); 323 } 324 } 325 else { 326 msgArgs[i] = arg ; 327 } 328 } 329 330 msglbl = msgDt.getMessage( msgArgs ); 331 } 332 333 return msglbl; 334 } 335 336 /** 337 * メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰,ErrMsgã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã§æŒ?®šã•れãŸãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã? 338 * 339 * ã“ã?エラーメãƒ?‚»ãƒ¼ã‚¸ã¯,リソースã§é¸ã°ã‚ŒãŸãƒã‚±ãƒ¼ãƒ«æ¯Žã?メãƒ?‚»ãƒ¼ã‚¸ã«?? 340 * MessageFormat#format ã§ãƒ•ォーマットã™ã‚‹äº‹ã«ã‚ˆã‚Š,作æ?ã•れã¾ã™ã? 341 * エラーメãƒ?‚»ãƒ¼ã‚¸ãŒãƒªã‚½ãƒ¼ã‚¹ã«å˜åœ¨ã—ãªã??åˆã?,エラーコードを返ã—ã¾ã™ã? 342 * 343 * @og.rev 4.0.0.0 (2004/12/31) æ–°è¦è¿½åŠ? 344 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹ã¨ã®çµ±åˆåŒ– 345 * 346 * @param errMsg ErrMsgオブジェクãƒ? 347 * 348 * @return エラーメãƒ?‚»ãƒ¼ã‚¸(ç„¡ã‘れ㰠ErrMsgオブジェクトã? toString() ) 349 */ 350 public String getLabel( final ErrMsg errMsg ) { 351 String key = errMsg.getId(); 352 String[] args = errMsg.getArgs(); 353 354 return getLabel( key,args ); 355 } 356 357 /** 358 * ラベルリソースã‹ã‚‰,ラベル(çŸ)ã‚’è¿”ã—ã¾ã™ã? 359 * 引数ã®è¨?ªžã‚³ãƒ¼ãƒ‰ã«å¿œã˜ãŸãƒªã‚½ãƒ¼ã‚¹ãŒç™»éŒ²ã•れã¦ã?ªã??åˆã?, 360 * 引数ã®ãƒ©ãƒ™ãƒ«ã‚ーãã?ã¾ã¾è¿”ã—ã¾ã™ã? 361 * 362 * @og.rev 4.3.3.0 (2008/10/01) æ–°è¦ä½œæ? 363 * 364 * @param key ラベルã‚ー 365 * 366 * @return リソースã«å¿œã˜ãŸãƒ©ãƒ™ãƒ«æ–?—å?(ç„¡ã‘れ㰠ラベルã‚ー) 367 */ 368 public String getShortLabel( final String key ) { 369 LabelData lblData = labelLoader.getLabelData( key ); 370 if( lblData != null ) { 371 String rtn = lblData.getShortLabel(); 372 if( rtn != null ) { 373 return rtn; 374 } 375 } 376 377 // ãªã‘れ㰠key を返㙠378 return key; 379 } 380 381 /** 382 * ラベルリソースã‹ã‚‰,概è¦èª¬æ˜Žã‚’è¿”ã—ã¾ã™ã? 383 * ã‚ーã®ãƒ??ã‚¿ãŒå˜åœ¨ã—ãªã??åˆã?nullã‚’è¿”ã—ã¾ã™ã? 384 * 385 * @og.rev 4.3.4.5 (2009/01/08) æ–°è¦ä½œæ? 386 * 387 * @param key ラベルã‚ー 388 * 389 * @return リソースã«å¿œã˜ãŸæ¦‚è¦èª¬æ˜?ç„¡ã‘れ㰠null) 390 */ 391 public String getDescription( final String key ) { 392 LabelData lblData = labelLoader.getLabelData( key ); 393 if( lblData != null ) { 394 String rtn = lblData.getDescription(); 395 if( rtn != null ) { 396 return rtn; 397 } 398 } 399 // ã‚ーãŒå˜åœ¨ã—ãªã‘れã°nullã§è¿”ã™ 400 return null; 401 } 402 403 /** 404 * ラベルリソースã‹ã‚‰,概è¦èª¬æ˜Žã‚’è¿”ã—ã¾ã™ã? 405 * {0},{1}...ã®ç½®æ›ãˆã‚’行ã„ã¾ã™ã? 406 * ã‚ーã®ãƒ??ã‚¿ãŒå˜åœ¨ã—ãªã??åˆã?nullã‚’è¿”ã—ã¾ã™ã? 407 * 408 * @og.rev 4.3.7.6 (2009/07/15) æ–°è¦ä½œæ? 409 * 410 * @param key ラベルã‚ー 411 * @param args パラメータ 412 * 413 * @return リソースã«å¿œã˜ãŸæ¦‚è¦èª¬æ˜?ç„¡ã‘れ㰠null) 414 */ 415 public String getDescription( final String key, final String[] args ) { 416 String rtn = null; 417 if( args == null ){ 418 rtn = getDescription( key ); 419 } 420 else{ 421 LabelData lblData = labelLoader.getLabelData( key ); 422 if( lblData != null ) { 423 int size = args.length; 424 String[] msgArgs = new String[size]; 425 for( int i=0; i<size; i++ ) { 426 String arg = args[i] ; 427 if( arg != null && arg.startsWith( "#" ) ) { 428 msgArgs[i] = getLabel( arg.substring( 1 ) ); 429 } 430 else { 431 msgArgs[i] = arg ; 432 } 433 } 434 rtn = lblData.getDescription( msgArgs ); 435 } 436 } 437 // ã‚ーãŒå˜åœ¨ã—ãªã‘れã°nullã§è¿”ã‚‹ 438 return rtn; 439 } 440 441 /** 442 * ラベルリソースã‹ã‚‰,概è¦èª¬æ˜Žã‚’è¿”ã—ã¾ã™ã? 443 * ã‚ーã®ãƒ??ã‚¿ãŒå˜åœ¨ã—ãªã??åˆã?nullã‚’è¿”ã—ã¾ã™ã? 444 * 445 * @og.rev 4.3.7.6 (2009/07/15) æ–°è¦ä½œæ? 446 * 447 * @param errMsg ErrMsgオブジェクãƒ? 448 * 449 * @return エラーメãƒ?‚»ãƒ¼ã‚¸(ã‚ーãŒç„¡ã‘れã°null) 450 */ 451 public String getDescription( final ErrMsg errMsg ) { 452 String key = errMsg.getId(); 453 String[] args = errMsg.getArgs(); 454 455 return getDescription( key,args ); 456 } 457 458 /** 459 * ラベルリソースã‹ã‚‰,ラベルを返ã—ã¾ã™ã? 460 * 引数ã®è¨?ªžã‚³ãƒ¼ãƒ‰ã«å¿œã˜ãŸãƒªã‚½ãƒ¼ã‚¹ãŒç™»éŒ²ã•れã¦ã?ªã??åˆã?, 461 * 引数ã®ãƒ©ãƒ™ãƒ«ã‚ーãã?ã¾ã¾è¿”ã—ã¾ã™ã? 462 * 463 * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦ä½œæ? 464 * 465 * @param key ラベルã‚ー 466 * 467 * @return リソースã«å¿œã˜ãŸãƒ©ãƒ™ãƒ«æ–?—å?(ç„¡ã‘れ㰠ラベルã‚ー) 468 */ 469 public LabelData getLabelData( final String key ) { 470 return labelLoader.getLabelData( key ); 471 } 472 473 /** 474 * コードリソースã‹ã‚‰,コード文å—å?ã‚’è¿”ã—ã¾ã™ã? 475 * 476 * @param key コードã‚ー 477 * 478 * @return コードデータオブジェクãƒ?ç„¡ã‘れ㰠null) 479 */ 480 public CodeData getCodeData( final String key ) { 481 return codeLoader.getCodeData( key ); 482 } 483 484 /** 485 * コードリソースã‹ã‚‰,コード文å—å?ã‚’è¿”ã—ã¾ã™ã? 486 * 引数ã«QUERYを渡ã™ã“ã¨ã§ã€DBã‹ã‚‰ã€å‹•çš?«ã‚³ãƒ¼ãƒ‰ãƒªã‚½ãƒ¼ã‚¹ã‚’作æ?ã§ãã¾ã™ã? 487 * 488 * @og.rev 5.4.2.2 (2011/12/14) æ–°è¦è¿½åŠ?? 489 * 490 * @param key コードã‚ー 491 * @param query 検索SQL(引数ã«ã€? ã‚’ä¸?¤æŒã¤) 492 * 493 * @return コードデータオブジェクãƒ?ç„¡ã‘れ㰠null) 494 */ 495 public CodeData getCodeData( final String key,final String query ) { 496 return codeLoader.getCodeData( key,query ); 497 } 498 499 /** 500 * メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰,ã‚ãƒ¼ã§æŒ?®šã•れãŸãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã? 501 * 502 * ã“ã?メãƒ?‚»ãƒ¼ã‚¸ã¯,リソースã§é¸ã°ã‚ŒãŸãƒã‚±ãƒ¼ãƒ«æ¯Žã?メãƒ?‚»ãƒ¼ã‚¸ã«?? 503 * MessageFormat#format ã§ãƒ•ォーマットã™ã‚‹äº‹ã«ã‚ˆã‚Š,作æ?ã•れã¾ã™ã? 504 * メãƒ?‚»ãƒ¼ã‚¸ãŒãƒªã‚½ãƒ¼ã‚¹ã«å˜åœ¨ã—ãªã??åˆã?,ã‚ーを返ã—ã¾ã™ã? 505 * 506 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹ã¨ã®çµ±åˆåŒ–ã«ã‚ˆã‚Šå»?¢ 507 * 508 * @param key ã‚ー 509 * 510 * @return メãƒ?‚»ãƒ¼ã‚¸(ç„¡ã‘れ㰠ã‚ー) 511 */ 512 // public String getMessage( final String key ) { 513 // return getMessage( key,null ); 514 // } 515 516 /** 517 * æŒ?®šã?ã‚ーã®ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒ??タオブジェクトを返ã—ã¾ã™ã? 518 * 519 * ã“ã?メãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクトã?,メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹ã‚ˆã‚Šä½œæ?ã•れã? 520 * オリジナルã®ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒ??タオブジェクãƒ? 521 * メãƒ?‚»ãƒ¼ã‚¸ãƒ??タオブジェクトãŒå˜åœ¨ã—ãªã??åˆã?,nullã‚’è¿”ã—ã¾ã™ã? 522 * 523 * @og.rev 4.0.0.0 (2007/10/17) DBColumn ã® official属æ?追åŠ? 524 * @og.rev 4.0.0.0 (2007/10/17) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹çµ±åˆã«ä¼´ã?»?¢ 525 * 526 * @param key ã‚ー 527 * 528 * @return メãƒ?‚»ãƒ¼ã‚¸ãƒ??ã‚¿(ç„¡ã‘れ㰠null) 529 */ 530 // public MessageData getMessageData( final String key ) { 531 // return messageLoader.getMessageData( key ); 532 // } 533 534 /** 535 * ãƒã‚°ã‚¤ãƒ³ãƒ¦ãƒ¼ã‚¶ãƒ¼ã§ä½¿ç”¨ã™ã‚‹ç”»é¢ã‚ªãƒ–ジェクトをã€UserInfoã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 536 * å??UserInfo ã¯ã€è?åˆ??身ãŒä½¿ç”¨ã™ã‚‹ ç”»é¢ã‚ªãƒ–ジェクトã?ã¿ã‚’管ç?™ã‚‹ã“ã¨ã§ã€? 537 * ç”»é¢ã‚¢ã‚¯ã‚»ã‚¹æœ‰ç„¡ã‚’ã?ã™ã?ã‚?検索ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã? 538 * 539 * @og.rev 3.1.0.1 (2003/03/26) GUIInfo ã®ã‚ーé ?‚µãƒã?トã?為ã«ã€å¼•数追åŠ?? 540 * @og.rev 4.0.0.0 (2005/01/31) 使用画é¢ã®Map ã‚?UserInfo ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 541 * @og.rev 4.3.0.0 (2008/07/04) ãƒãƒ¼ãƒ«ãƒ¢ãƒ¼ãƒ‰ã?ルãƒå¯¾å¿? 542 * @og.rev 5.2.0.0 (2010/09/01) ã‚¢ã‚¯ã‚»ã‚¹ç¦æ¢ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã‚ˆã‚‹ä¸æ£ã‚¢ã‚¯ã‚»ã‚¹é˜²æ¢æ©Ÿè?追åŠ? 543 * 544 * @param user æŒ?®šã?ユーザーãƒãƒ¼ãƒ«ã«å¯¾å¿œã™ã‚‹ç”»é¢ã?‘ã‚’Mapã«ã‚»ãƒ?ƒˆã™ã‚‹ã€? 545 */ 546 public void makeGUIInfos( final UserInfo user ) { 547 GUIData[] guiDatas = guiLoader.getAllData(); 548 // String[] userRoles = StringUtil.csv2Array( user.getRoles(),HybsSystem.GUI_DELIMITER ); 549 550 // guikey ã«å¯¾ã—ã¦ãƒ¦ãƒ‹ã?クã«ãªã‚‹ã‚ˆã?« Map ã«è¿½åŠ?—ã¾ã™ã?後登録ãŒå„ªå…ˆã•れã¾ã™ã? 551 Map<String,GUIInfo> guiMap = new HashMap<String,GUIInfo>(); 552 Set<String> forbidAddrSet = new HashSet<String>(); 553 int size = guiDatas.length; 554 for( int i=0; i<size; i++ ) { 555 GUIData gui = guiDatas[i]; 556 // if( user.isRoot() || gui.isAccess( userRoles ) ) { 557 byte bitMode = user.getAccessBitMode( gui.getRoleMode() ); 558 if( bitMode > 0 ) { 559 String guikey = gui.getGuiKey(); 560 LabelData labelData = getLabelData( gui.getLabelClm() ); 561 // byte bitMode = gui.getAccessBitMode( userRoles,user.isRoot() ); 562 guiMap.put( guikey,new GUIInfo( gui,labelData,bitMode ) ); 563 } 564 // 5.2.0.0 (2010/09/01) ã‚¢ã‚¯ã‚»ã‚¹ç¦æ¢ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã‚ˆã‚‹ä¸æ£ã‚¢ã‚¯ã‚»ã‚¹é˜²æ¢æ©Ÿè?追åŠ? 565 else { 566 String addr = gui.getAddress(); 567 if( addr.indexOf( '/' ) < 0 ) { 568 forbidAddrSet.add( addr ); 569 } 570 } 571 } 572 573 // ã‚‚ã—ã€ç¦æ¢ãƒªã‚¹ãƒˆã?ä¸ã«ç”»é¢IDé•ã„ã§è¨±å¯ãƒªã‚¹ãƒˆã¨åŒã˜ã‚¢ãƒ‰ãƒ¬ã‚¹ã? 574 // å«ã¾ã‚Œã¦ã?‚‹å ´åˆã?ã€ç¦æ¢ãƒªã‚¹ãƒˆä¸ã‹ã‚‰è©²å½“ã?アドレスを削除ã™ã‚‹ã€? 575 for( GUIInfo gui : guiMap.values() ) { 576 String addr = gui.getAddress(); 577 if( forbidAddrSet.contains( gui.getAddress() ) ) { 578 forbidAddrSet.remove( addr ); 579 } 580 } 581 582 // GUIInfo ã‚’ãã®é ?•ª(SEQNOé ?ã§ã‚½ãƒ¼ãƒˆã—ç›´ã—ã¾ã™ã? 583 GUIInfo[] guiInfos = guiMap.values().toArray( new GUIInfo[ guiMap.size() ] ) ; 584 Arrays.sort( guiInfos ); 585 Map<String,GUIInfo> sortMap = new LinkedHashMap<String,GUIInfo>(); 586 size = guiInfos.length; 587 for( int i=0; i<size; i++ ) { 588 GUIInfo guiInfo = guiInfos[i]; 589 String guikey = guiInfo.getKey(); 590 sortMap.put( guikey,guiInfo ); 591 } 592 593 user.setGUIMap( sortMap, forbidAddrSet ); 594 } 595 596 /** 597 * æŒ?®šã•れãŸã‚¯ã‚¨ãƒªã‚’発行ã—ã€ãƒ©ãƒ™ãƒ«ãƒžãƒƒãƒ—を作æ?ã—ã¾ã™ã? 598 * 599 * @og.rev 4.3.4.0 (2008/12/01) æ–°è¦ä½œæ? 600 * 601 * @param query ラベルマップを作æ?ã™ã‚‹ã‚¯ã‚¨ãƒª 602 * 603 * @return ラベルマッãƒ? 604 * @see org.opengion.hayabusa.resource.LabelDataLoader#getLabelMap( String ) 605 */ 606 public Map<String, LabelData> getLabelMap( final String query ) { 607 return labelLoader.getLabelMap( query ); 608 } 609 610 /** 611 * リソースマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’ã‚ーã«åŸºã¥ã?¦éƒ¨åˆ?‚¯ãƒªã‚¢ã—ã¾ã™ã? 612 * ã“ã“ã§ã¯ã€?ƒ¨åˆ?‚¯ãƒªã‚¢ãªãŸã‚ã€GUIData ã«é–¢ã—ã¦ã¯ã€å?ç?•れã¾ã›ã‚“ã€? 613 * ã¾ãŸã?å˜åœ¨ã—ãªã?‚ーを指定ã•れãŸãƒªã‚½ãƒ¼ã‚¹ã¯ã€ä½•も処ç?•れã¾ã›ã‚“ã€? 614 * 615 * @og.rev 5.4.3.4 (2012/01/12) labelPool ã®å‰Šé™¤è¿½åŠ? 616 * 617 * @param key カラãƒ??ã‚ー 618 */ 619 public void clear( final String key ) { 620 System.out.println( "Key=[" + key + "] ã®éƒ¨åˆ?ƒªã‚½ãƒ¼ã‚¹ã‚¯ãƒªã‚¢ã‚’実施ã—ã¾ã—ãŸã€? ); 621 columnLoader.clear( key ); 622 codeLoader.clear( key ); 623 labelLoader.clear( key ); 624 // messageLoader.clear( key ); 4.0.0.0(2007/10/17) 625 columnPool.remove( key ); 626 // labelPool.remove( key ); // 5.4.3.4 (2012/01/12) 627 } 628 629 /** 630 * GUIæƒ??をクリアã—ã¾ã™ã? 631 * ã“ã“ã§ã¯ã€?–¢é€£ã™ã‚‹ãƒ©ãƒ™ãƒ«ã€ã‚³ãƒ¼ãƒ‰ãƒªã‚½ãƒ¼ã‚¹ã®éƒ¨åˆ?‚¯ãƒªã‚¢ã‚‚行ã„ã¾ã™ã? 632 * GUIæƒ??ã¯ã€ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã«ç®¡ç?—ã¦ã?‚‹ãŸã‚ã€ã“ã®å‡¦ç?¼‘回ã”ã¨ã«ã€? 633 * GUIData ã‚’å?ä»¶å†èªã¿è¾¼ã¿ã‚’行ã„ã¾ã™ã?ã§ã€ã”注æ„ãã?•ã?? 634 * 635 */ 636 public void guiClear() { 637 GUIData[] gui = guiLoader.getAllData(); 638 639 for( int i=0; i<gui.length; i++ ) { 640 String key = gui[i].getGuiKey(); 641 labelLoader.clear( key ); 642 } 643 codeLoader.clear( "CLASSIFY" ); 644 guiLoader.clear(); 645 } 646 647 /** 648 * リソースマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’クリア(åˆæœŸåŒ?ã—ã¾ã™ã? 649 * 650 * @og.rev 5.4.3.4 (2012/01/12) labelPool ã®å‰Šé™¤è¿½åŠ? 651 * 652 */ 653 public void clear() { 654 columnLoader.clear(); 655 codeLoader.clear(); 656 labelLoader.clear(); 657 // messageLoader.clear(); 4.0.0.0(2007/10/17) 658 guiLoader.clear(); 659 columnPool.clear(); 660 // labelPool.clear();; // 5.4.3.4 (2012/01/12) 661 } 662 }