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